让路由器识别自己的 IP 似乎更智能,但我想也许始终遵循相同的协议会更干净/更稳定。
我刚刚有个想法,我可以用普通邮件来测试一下。写一封信给我自己,贴上邮票,然后把它放在我的邮箱里……哈哈。
那么是否有人确切知道,如果在我的网络中,我有两台计算机,并且我的路由器配置为将端口 80 上的入站请求转发到其中一台(我的 Web 服务器),而我尝试从另一台计算机(客户端)访问我的外部 IP,路由器是否会识别出它即将向自己发送请求并保留该请求,将其直接发送到我网络上的服务器,还是该请求会发送到我的 ISP,然后 ISP 将其发回?
答案1
当您向 IP 地址发出网络请求时,您的计算机通常会广播一个ARP
请求以询问'Who has this IP address?'
。然后网络上的客户端检查其地址,然后具有该 IP 地址的主机会回复请求主机'Oh! That's me!!'
。然后可以将请求路由到适当的主机。
由于路由器的“外部”接口已分配其公共 IP 地址,因此当询问网络时'Who has this IP?'
,路由器会查看其地址并进行答复'Oh! That's me!!'
并从您的主机接收请求,并且根据请求的端口,使用其逻辑将请求转发到适当的服务器。
如果网络上没有人拥有该地址,会发生什么情况?好吧,这就是设置gateway
的目的!当主机看到该地址位于不同的网络上时,它会将请求发送到列为的主机,gateway
并说'Dunno where this goes, figure it out.'
这会从路由器继续到路由器,直到请求中的或time to live (TTL)
用完hop count
,此时请求将作为失败被发回。
这一切都自然发生后 DNS
解析...只要域名解析到正确的地址。但那是另一个答案。
答案2
追踪路由。
如果您使用的是 Windows,请打开命令提示符。输入“tracert”和您的外部 IP。您将看到它进行一次跳跃。应该是 1ms 跳跃。因此,它不会发送到您的 ISP(1 次跳跃)然后再返回到您(2 次跳跃)。
如果您使用网络上的某台计算机的名称进行 tracert,也会发生同样的事情。