数据包在不同网段上的传输流程
来源:互联网 发布:淘宝店铺怎么用花呗 编辑:程序博客网 时间: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水平有限,大家如果有疑问或者觉得哪里表述有误,希望一定提出,大家一起讨论。
- 数据包在不同网段上的传输流程
- ARP协议,同一网段,不同网段的详细通信流程
- 在同一网段和不同网段通信的区别
- 如何在同一Wifi网段上传输文件
- 如何在同一Wifi网段上传输文件
- 在不同版本eclipse的workspace之间传输项目(上)
- 不同网段的互连
- Internet上不同网段间的通信问题解析
- 在同一网段&不同网段下的Ping(史上最详细)
- 数据包传输的全过程
- 数据包传输的全过程
- 数据包的传输过程
- 数据包传输的全过程
- 数据包是如何在网络中传输的
- 不同网段ssh scp远程传输文件方法
- 数据在同网段和跨网段通信流程
- 网络数据包在不同网络环境下的丢失表现
- 数据包的转发流程
- C语言中signed与unsigned的转换
- 下拉列表 select-option ; select-optgroup-option
- 【产品经理】产品经理使用Axure工具经验谈
- 在用友 做二次开发 对技术有提升吗?
- Arduino IDE in Ubuntu 12.04
- 数据包在不同网段上的传输流程
- text-decoration <del> <s> 实现横线从文字中间穿过的CSS效果属性和html标签
- JDK安装与环境变量配置
- 文件的基本概念
- CentOS7的新特性介绍
- weblogic.jar与js.jar冲突问题的解决
- HDU 1978 (Not !) DP
- Java并发编程中CountDownLatch和CyclicBarrier的使用
- coredump 分析(汇总)