PC机与交换机通信的原理描述

版权声明:本文为博主原创文章,欢迎转载,但请标出本文的出处,谢谢!欢迎访问本人的github主页【https://github.com/abodu/omb】 https://blog.csdn.net/liudglink/article/details/83146487

描述两台PC主机(PC1,PC2)通过一台交换机(SW)进行通讯的过程

首要说明与注意点:

  1. 这一过程涉及PC主机的ARP表(记为 ARP_TBL) 和 交换机MAC地址表(记为MAC_TBL) 的形成过程。
  2. 报文帧格式

    | DA | SA | TYPE | .... |

  3. 交换机 学习 SA地址,向转发 DA地址

具体过程描述

一、 PC1在自己的ARP表(ARP_TBL_PC1)中查找是否存在PC2的记录MAC地址的记录:

  • 若存在, 则将PC2的MAC地址直接填入到报文帧的DA字段,并对PC2的单播进行数据传送
  • 若不存在,则将FFFFFF填入报文帧的DA字段,对整个广播域里的其他PC主机进行广播传送

二、交换机(SW)收到PC1发出的报文帧,需要进行两个动作 : 学习(SA)(向DA)转发

  • 学习:在MAC地址表(MAC_TBL)中查看是否存在PC1的MAC地址的记录

    若是不存在,则MAC_TBL新增一条包含有PC1的MAC地址PC1连接到交换机的端口Port1记录

  • 转发:在(MAC_TBL)中查看DA字段记录的值对应的记录是否存在
    • 若是此报文帧是单播帧(DA的值不是0xFFFFFF):
      • 如果记录存在,则交换机向指定的端口(PC2的连接到交换机上的端口)转发报文帧的内容
      • 若是记录不存在, 交换机可以直接丢弃此报文帧,也可以直接以广播帧的方式来进行处理
    • 若是此报文帧是广播帧(DA的值是0xFFFFFF): 则拷贝报文内容并向其他(交换机)端口逐一转发。

三、PC2的动作 此报文帧的目的IP地址是主机PC2的,所以只有主机PC2才会处理此次ARP请求,并做出ARP响应。

  • PC2在自己的ARP表(ARP_TBL_PC2)中查找是否存在PC1的记录MAC地址的记录:

    若不存在,则取出PC1的MAC地址(报文帧SA字段的值)与IP地址,并记录到ARP_TBL_PC2中

  • 组装ARP响应报文帧并传给交换机进行转发

    此时报文帧的DA字段的值是PC1的MAC地址,SA字段的值是PC2的MAC地址

四、交换机(SW)收到PC2发出的响应报文帧,跟接收到PC1的请求报文帧类似,也会执行学习与转发两个动作

  • 学习:在MAC地址表(MAC_TBL)中查看是否存在PC2的MAC地址的记录

    若是不存在,则MAC_TBL新增一条包含有PC2的MAC地址PC2连接到交换机的端口Port2记录

  • 转发:在(MAC_TBL)中查看DA字段记录的值对应的记录是否存在

    因为是DA字段记录的是PC1的MAC地址,并且它已经存在于MAC_TBL中,所以SW会直接查明要向Port1转发此报文帧(而不需要判断是否进行广播)。

五、PC1接收到经由SW转发的ARP响应报文,并对其内容进行解析

  • 取出PC2的MAC地址(报文帧SA字段的值)与IP地址,并记录到ARP_TBL_PC1

经由整个 PC1请求PC2响应 的过程,最终得到如下结果

  • PC1 与 PC2 各自的 ARP表里面都新增了一条对方的 IP+MAC地址的记录
  • SW 里面新增了 PC1_MAC + Port1PC2_MAC + Port2 的两条记录

猜你喜欢

转载自blog.csdn.net/liudglink/article/details/83146487