假设我有两台连接到同一调制解调器的计算机A和B,或者他们从同一个ISP上网。当我搜索谷歌"我的IP地址是什么?"它在计算机A和B 14.141.56.230上显示相同的IP地址。我想知道,如果假设发送者想要将数据发送到计算机A那么调制解调器或路由器将如何识别该数据包属于计算机A而不是计算机B,因为他们两者都具有相同的IP地址,根据谷歌。
答案 0 :(得分:0)
这是NAT的角色。外部服务器无法直接联系A或B:A或B必须先联系服务器,以便NAT知道如何处理外部服务器收到的数据包。
特别是,this应该很有趣:
当私有(内部)网络上的计算机向外部网络发送IPv4数据包时,NAT设备会使用NAT的外部IP地址替换数据包标头(发送方地址)的源字段中的内部IP地址设备。然后,PAT可以从可用端口池中为连接分配端口号,在源端口字段中插入此端口号(非常类似于邮局盒号),并将数据包转发到外部网络。然后,NAT设备在包含内部IP地址,原始源端口和转换后的源端口的转换表中创建条目。来自同一连接的后续数据包将转换为相同的端口号。
所以我的想法是A正在尝试外部服务器E.当来自A的消息到达A的路由器R时,则R改变数据包的源IP,为其分配端口P,并将此请求发送给E R记得已将此端口P分配给A.当E在端口P上回答R时,路由器将其转换回来并将数据包转发给A.
这也意味着E不能直接联系A. A必须启动连接。现在考虑A和E都在NAT后面的情况;他们都需要启动连接,这是不可能直接的。要找到解决方案,您需要查看TCP hole punching。