数据包在不同网段上的传输流程

来源:互联网 发布:淘宝店铺怎么用花呗 编辑:程序博客网 时间:2024/06/04 23:22

对于数据包在不同网段上传输这一问题,LZ参考一些资料,觉得用数据包源目标地址状态的变化能更直观的表示这一流程的进行,以下LZ用一个例子描述这一过程。



PC1、R1、R2、WebServer

PC1 为网络A中的一台主机,WebServer为网络B中的Web服务器,路由器R1、R2分别为网络A、B的网关,且路由器R1、R2的WAN口相连。

 

PC1 ---> WebServer的数据包传输流程如下:

1)PC1创建数据包,欲发送到不同网络中的WebServer,由于无法取得WebServer的MAC地址,于是使用ARP协议通过主机PC1所设置的网关(即R1的局域网IP)来获得R1的LAN接口的MAC地址,并将数据包目标MAC地址设为R1的LAN接口的MAC地址,此时数据包状态如下:

源IP

源MAC

目标IP

目标MAC

PC1

PC1

WebServer

R1(LAN)

 

2)R1接受到数据包,将源IP地址通过NAT转换成R1的公网IP,并将源MAC地址转换成R1的WAN接口MAC地址,然后,查找路由表,发现需要经过R2才能到达WebServer(目标IP),于是将目标MAC地址转换成R2的WAN接口MAC地址,此时数据包状态如下:

源IP

源MAC

目标IP

目标MAC

R1(WAN)

R1(WAN)

WebServer

R2(WAN)

 

3)R2接受到数据包,发现WebServer(目标IP)就在本网络(B网络)中,于是将源MAC地址改为R2的LAN接口地址,再使用ARP协议通过数据包中的目标IP地址获得WebServer的MAC地址,此时数据包状态如下:

源IP

源MAC

目标IP

目标MAC

R1(WAN)

R2(LAN)

WebServer

WebServer

 

经过以上三步,完成PC1到WebServer的通信。

 

问题:WebServer回传数据的时候,只知道R1的公网IP,即只能发送到R1上,却不知道PC1的子网IP,如何能够到达PC1上?

答:通过路由器的端口映射功能。在流程2)中,R1将源IP地址转换成R1的公网IP时,R1会分配一个未记录的端口号,同时,R1会把PC1的IP和当前数据包的发送端口号(就该例子来说是80端口)与R1公网IP和刚才分配的未记录的端口号之间的映射关系记录下来。比如,PC1的IP为192.168.1.12,通过80端口发出数据包,R1的公网IP为201.12.12.12,分配的端口号为12,那么该映射关系为  :

子网(PC1)

公网(R1)

192.168.1.12:80

201.12.12.12:12

 

当WebServer回传数据到达R1上,就会通过该映射,将数据包传给子网里的PC1。


LZ水平有限,大家如果有疑问或者觉得哪里表述有误,希望一定提出,大家一起讨论。

0 0
原创粉丝点击