HCIA笔记-数据转发过程

数据封装及转发过程

  封装过程

    应用程序产生的数据,需要经过逐层封装,最后才可以通过物理线路发送出去。我们按照TCP/IP参考模型举例。

    应用程序产生的数据,就是应用层的数据,我们也称为PDU(Protocol data unit,协议数据单元)往下就到了传输层,需要封装传输层的报头,报头中的源端口和目的端口,用来区分不同的应用程序。

    再往下就是网络层。传输层的PDU到了网络层,在我们IP网络中,会封装IP报头。IP报头中的源IP和目的IP,用来进行网络层的寻址,这个地址是逻辑地址,可以修改,并且不同网段中的IP地址不一样。

    继续往下,就是数据链路层。当网络层的PDU到达数据链路层时,会继续封装二层的帧头,常用的时Ethernet_II类型的帧头。帧头中的源MAC地址,目的MAC地址,是二层网络的寻址依据。

    最后,数据来到了物理层,数据被转换称0和1的bit流,在物理介质中进行传输。

    以上是发送方发送数据时的过程,在接收方,经过的流程就是一个反向的操作,一层一层的剥掉封装的报头,最后将数据交给对应的应用程序去处理。

  转发过程

    我们按照下面的拓扑分析:

    HCIA笔记-数据转发过程

 

 

 

 

    PC1在192.168.1.0网段,PC2在192.168.2.0网段。我们假定PC1上的某一个应用程序要和PC2上的应用程序通信,PC1上的应用程序端口号为1111,PC2上应用程序端口号为2222,IP地址、MAC地址如拓扑图上所示:

    PC1完成数据封装:

      由于PC1和PC2不在同一网段,因此PC1需要先发给网关,即R1的G0/0/0口。为了让路由器R1能够接收并处理这个数据包,因此目的MAC地址需要设置为R1的G0/0/0口的MAC地址(路由器收到目的MAC地址不是自己的数据包之后会直接丢弃不处理)。

      若PC1查看自己的arp表,发现并没有网关的MAC地址时,会先发送ARP广播进行查询,PC1和网关交互过ARP之后,PC1就知道了网关的MAC地址,于是就可以完成想要发送的数据的封装。

应用层数据
传输层

 

源端口:1111 目的端口:2222
网络层 源IP:192.168.1.1 目的IP:192.168.2.1
数据链路层 源MAC:54-89-98-F7-7F-EA 目的MAC:00-E0-FC-6E-28-67

    主机将封装好的数据,转换成bit流发送出去之后,交换机SW1将会首先收到这股bit流,然后组合成数据帧。交换机查看二层的帧头,确认这个数据帧的来源是谁,以及确认这份数据帧要发往哪个目的地。

    交换机收到这份数据帧,查看二层帧头,查看目的MAC地址为00-E0-FC-6E-28-67,然后查找自己本地的MAC地址缓存表,确认目的MAC00-E0-FC-6E-28-67和本地G0/0/1口关联,因此从G0/0/1口转发这份数据帧。

      交换机若收到未知单播帧时(目的MAC地址在自己的MAC地址缓存表中找不到),会进行泛洪处理。

    交换机转发数据帧,之后路由器AR1收到了这份数据,首先查看目的MAC地址,是否是自己接收接口的MAC地址,比对之后发现是自己接口的MAC地址,然后拆掉二层封装,进而处理三层报头信息。查看目的IP地址和子网掩码,将目的IP地址192.168.2.1和子网掩码255.255.255.0进行与运算,得到目的网络号192.168.2.0/24,然后查找自己的路由表。AR1的G0/0/1口配置了192.168.2.1/24的地址,本地路由表会自动生成一个192.168.2.0/24的直连路由。查找路由表之后发现可以找到对应的路由条目,因此将数据包重新封装并转发。在重新封装时,目的MAC地址就要写成PC2的MAC地址,因此路由器也会查看自己的ARP表,查看是否有PC2的ARP表项。若有就可以直接封装;若没有,则也需要发送ARP广播,请求PC2的MAC地址。在AR1知道PC2的MAC地址之后,完成数据包的重新封装。新的数据包将会变成这样:

应用层数据    
传输层 源端口:1111 目的端口:2222
网络层 源IP:192.168.1.1 目的IP:192.168.2.1
数据连路层 源MAC:00-E0-FC-6E-28-68 目的MAC:54-89-98-22-75-DD

    路由器完成封装之后,由路由出接口,也就是G0/0/1口将数据转发出去。交换机SW2收到这份数据,查看二层帧头,确认目的MAC地址为54-89-98-22-75-DD,然后查看自己本地的MAC地址表,发现是和E0/0/1接口关联的,因此从E0/0/1口将数据转发出去。

    交换机SW2转发出去数据,PC2将收到这份数据。查看二层帧头,确认MAC地址是否是自己网卡的MAC地址。查看之后,发现目的MAC地址是自己网卡的MAC地址,就会接收这份数据,拆掉二层封装,交由网络层模块继续处理(若目的MAC地址不是自己,则会丢弃这份数据)。PC2查看三层报头,确认目的IP是自己的IP地址,之后会拆掉三层封装继续处理(若目的IP地址不是自己,也会丢弃这份数据)。传输层继续处理数据,查看源端口和目的端口,确认目的端口为2222,拆掉四层封装,将内部数据交由端口号2222对应的应用程序。

 

上一篇:HCIA复习总结


下一篇:HCIA笔记-----第四天(路由器的配置)