IP报文在设备间传递的封装过程

IP报文在网络设备间的传递过程主要涉及到4个概念:源IP目的IP源MAC目的MAC

1、PC1访问PC2报文传递过程

1.1、PC1准备数据请求报文封装

由PC1向PC2发送数据报,可知此时的PC1已知以下参数:

数据请求报文 源IP:192.168.1.1        目的IP:192.168.1.2
源MAC:0A:D0:CB:22:02:01 目的MAC:UNKOWN       
PC1此时需要得到一个目的MAC地址,才可以组装出到PC2的报文。

1.2、PC1准备ARP请求报文

报文的传递可分为二层传输和三层传输,PC1通过分析自己的CIDR,得出PC2与自己存在同一网段下,而同一网段可以直接通过二层传输,即目的MAC地址直接指向PC2。
为了获取PC2的MAC地址,PC1组装ARP请求报文发起ARP广播

ARP请求报文 发送者IP:192.168.1.1        目标IP:192.168.1.2         
发送者MAC:0A:D0:CB:22:02:01 目标MAC:FF:FF:FF:FF:FF:FF
PC1的ARP广播包通过通过交换机LSW1时,交换机会向所有UP状态的端口泛洪,PC2会收到这个广播包。

1.3、PC2准备ARP响应报文

PC2通过判断ARP广播包的目标IP地址是自己的IP地址,会通过单播的形式返回ARP响应包给PC1:

ARP响应报文 发送者IP:192.168.1.2 目标IP:192.168.1.1
发送者MAC:0A:D0:CB:22:02:02 目标MAC:0A:D0:CB:22:02:01

PC2的ARP响应包经过交换机LSW1时,LSW1通过MAC地址表将此响应包发送给PC1,PC1此时得知PC2的MAC地址是54-89-98-A3-13-98。

1.4、PC1完成数据请求报文封装

此时PC1就可以组装并发送报文

数据请求报文 源IP:192.168.1.1 目的IP:192.168.1.2
源MAC:0A:D0:CB:22:02:01 目的MAC:0A:D0:CB:22:02:02

报文经过LSW1时,LSW1通过MAC地址表,将报文转发至PC2,PC1向PC2的一次单向通信结束。

2、PC1访问PC3报文传递过程

2.1、PC1准备数据请求报文封装

由PC1发起到PC3的连接,可以判断,此时的PC1已知以下参数:

数据请求报文 源IP:192.168.1.1 目的IP:10.15.10.3
源MAC:0A:D0:CB:22:02:01 目的MAC:UNKOWN
PC1此时需要得到一个目的MAC地址,满足四元组,才可以组装出报文。

报文的传递可分为二层传输和三层传输,PC1通过分析自己的CIDR,得出PC3与自己不在同一网段下,而不同网段需要通过三层网关传输。

PC1已知网关IP地址为192.168.1.254,PC1与网关之间是通过二层通信即MAC地址通信,因此PC1需要得知网关的MAC地址,才可以将报文顺利发送给网关。

2.2、PC1准备获取网关MAC地址的ARP请求报文

为了获取网关的MAC地址,PC1需要发起ARP广播:

ARP请求报文 发送者IP:192.168.1.1 目标IP:192.168.1.254
发送者MAC:0A:D0:CB:22:02:01 目标MAC:FF:FF:FF:FF:FF:FF

2.3、网关准备ARP响应报文

同样网关收到PC1的ARP广播后,会单播回复ARP响应包给PC1:

ARP回复报文 发送者IP:192.168.1.254 目标IP:192.168.1.1
发送者MAC:0A:D0:CB:22:02:54 目标MAC:0A:D0:CB:22:02:01

2.4、PC1组装并发送到网关下一跳的报文

此时PC1就可以组装并发送数据报文:

数据请求报文 源IP:192.168.1.1 目的IP:10.15.10.3
源MAC:0A:D0:CB:22:02:01 目的MAC:0A:D0:CB:22:02:54
注意:此时报文的目的MAC地址指向的是网关的MAC地址。

报文经过LSW1时,LSW1通过MAC地址表,将报文转发至网关,网关此时会关注报文中的目的IP这个参数。

2.5、网关组装发送到目标IP的报文

网关通过分析自己的CIDR,得出PC3与自己在同一个网段,即直连路由,可以通过二层直接转发至PC3。
此时网关需要将PC1的报文中源MAC地址及目的MAC地址修改,即:

数据请求报文 源IP:192.168.1.1 目的IP:10.15.10.3
源MAC:0A:D0:CB:11:02:54 目的MAC:UNKOWN

2.6、网关准备获取PC3的MAC地址的ARP请求报文

源MAC 0A:D0:CB:11:02:54,为网关直连PC3接口的MAC地址,报文通过这个接口发出。由于PC3的MAC地址未知,网关会通过ARP广播查找PC3的MAC地址:

ARP请求报文 发送者IP:10.15.10.254 目标IP:10.15.10.3
发送者MAC:0A:D0:CB:11:02:54 目标MAC:FF:FF:FF:FF:FF:FF

同样PC3单播回复ARP响应给网关:

ARP响应报文 发送者IP:10.15.10.3 目标IP:10.15.10.254
发送者MAC:0A:D0:CB:11:02:03 目标MAC:0A:D0:CB:11:02:54

2.7、网关组装到PC3的数据请求报文

此时网关就可以组装并发送报文:

数据请求报文 源IP:192.168.1.1 目的IP:10.15.10.3
源MAC:0A:D0:CB:11:02:54 目的MAC:0A:D0:CB:11:02:03

报文经过交换机LSW2,LSW2根据MAC地址表,将报文转发给PC3,PC1向PC3的一次单向通信结束。

3、小小小结语

数据报文在三层传输过程中,报文的MAC地址是不断变化的,报文的IP地址通常不变(除非经过NAT)。

4、报文的解封装简述

相关推荐

  1. 进程传递 SQL 方法

    2024-05-10 16:58:12       56 阅读
  2. IP与TCP固定头部中字段

    2024-05-10 16:58:12       38 阅读
  3. Linux双网口(内网+外网)IP转发

    2024-05-10 16:58:12       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-10 16:58:12       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-10 16:58:12       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-10 16:58:12       87 阅读
  4. Python语言-面向对象

    2024-05-10 16:58:12       96 阅读

热门阅读

  1. UDP广播

    UDP广播

    2024-05-10 16:58:12      39 阅读
  2. 力扣 673. 最长递增子序列的个数 python AC

    2024-05-10 16:58:12       34 阅读
  3. 深入理解Spring中的@Autowired注解

    2024-05-10 16:58:12       26 阅读
  4. Android Blueprint简介

    2024-05-10 16:58:12       34 阅读
  5. Nanopc T4 使用OpenCV

    2024-05-10 16:58:12       38 阅读
  6. RabbitMQ

    RabbitMQ

    2024-05-10 16:58:12      32 阅读
  7. OceanBase 中的ROWID与Oracle的差异与如何迁移

    2024-05-10 16:58:12       41 阅读
  8. 面试前的刷题,要有充分的准备

    2024-05-10 16:58:12       26 阅读