HCIA笔记-数据转发过程
Posted 丨Kang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HCIA笔记-数据转发过程相关的知识,希望对你有一定的参考价值。
数据封装及转发过程
封装过程
应用程序产生的数据,需要经过逐层封装,最后才可以通过物理线路发送出去。我们按照TCP/IP参考模型举例。
应用程序产生的数据,就是应用层的数据,我们也称为PDU(Protocol data unit,协议数据单元)往下就到了传输层,需要封装传输层的报头,报头中的源端口和目的端口,用来区分不同的应用程序。
再往下就是网络层。传输层的PDU到了网络层,在我们IP网络中,会封装IP报头。IP报头中的源IP和目的IP,用来进行网络层的寻址,这个地址是逻辑地址,可以修改,并且不同网段中的IP地址不一样。
继续往下,就是数据链路层。当网络层的PDU到达数据链路层时,会继续封装二层的帧头,常用的时Ethernet_II类型的帧头。帧头中的源MAC地址,目的MAC地址,是二层网络的寻址依据。
最后,数据来到了物理层,数据被转换称0和1的bit流,在物理介质中进行传输。
以上是发送方发送数据时的过程,在接收方,经过的流程就是一个反向的操作,一层一层的剥掉封装的报头,最后将数据交给对应的应用程序去处理。
转发过程
我们按照下面的拓扑分析:
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笔记-数据转发过程的主要内容,如果未能解决你的问题,请参考以下文章
计算机网络湖科大微课堂笔记 p47-49 IPv4地址的应用规划IP数据报的发送和转发过程静态路由配置及其可能产生的路由环路问题