Wireshark:需要帮助了解NAT行为

家庭networking中的电脑在运行NAT路由器后面。 我想在PC上build立一个FTP服务器,所以我转发了所有需要的端口等,现在它正在工作。 然后,我出于好奇,运行Wireshark来查看哪些数据包在那里运行。 我使用路由器WAN IP连接到自己,这就是我所看到的:

这就是我所看到的

这里的192.168.1.3是我的PC IP,95.105.xx是我的路由器的WAN IP,而192.168.1.1是路由器的LAN IP。

我明白为什么有两个请求和答复的副本 – 我在同一台机器上同时运行客户端和服务器。 这里我不明白为什么第二个和第三个数据包包含路由器LAN IP。

当一个人连接到我的服务器,我看到这个:

这个

正如你所看到的,数据包只包含我的PC局域网IP和个人的IP。 同样的事情是当我连接到其他服务器。

那么为什么路由器回复它的LAN IP,以防连接到我自己?

路由器不能保留源IP地址,因为这会导致返回的stream量直接通过LAN传递,而不经过NAT。 而将NAT仅应用于一个stream量方向而不是另一个方向将会破坏通信。

源IP需要以返回stream量被发送到路由器的方式来select。 这意味着它可以使用局域网之外的任何IP地址,并且连接可以工作。

NAT的一种方法是使用出接口的IP地址作为源IP。 在至less一个实现中,这被称为伪装。 这将解释你所看到的。 从您的LAN到外部世界的连接被伪装成路由器的WAN IP。 从您的LAN通过您的端口转发连接到您的LAN的连接被伪装成您的路由器的LAN IP。

这种方法的另外一个好处是在路由器的WAN IP改变的情况下连接不会中断。