数据传输的完整过程(狗看了都会系列)

前言:

        在学习的过程中,很难搜到有关于ARP请求是怎么请求的,数据是怎么转发的、数据转发的路上是先查什么表再查什么表等相关的一些文章,这让我在学习的过程中倍感艰辛。

拓扑:

首先需要知道的是,以太网成包的先决条件是什么:

1、需要事先知道源IP地址

2、需要事先知道源Mac地址

3、需要事先知道目的IP地址

4、需要事先知道目的Mac地址。

PC1(192.168.1.1)要访问PC2(192.168.2.1)的时候发现跨网段了,那么PC1会先在本地的ARP缓存中,查找是否存在对应的ARP表项。

        1、如果存在对应的ARP表项,就会根据这个ARP表项的目的IP和目的MAC进行转发。

        2、如果不存在对应的ARP表项,就会发送一个ARP请求报文。

PC1查表发现,本地并不存在对应的表项,于是会发送一个ARP请求报文,这个ARP请求报文的内容为源IP为192.168.1.1,源Mac为54-89-98-30-6A-14,目的IP为192.168.1.254(网关的),目的Mac为全0的未知Mac。

这里的ARP请求报文为什么是网关的IP呢?

        因为PC1本地的ARP缓存中并没有网关的Mac地址,这个时候需要通过ARP请求来获取到网关的Mac。

获取到网关的Mac地址之后,就会生成ARP表项(目的IP和目的Mac的映射关系),因为请求的是网关的Mac,所以会生成网关的IP地址和Mac地址的映射关系。

之后会通过目的IP为PC2的192.168.2.1,而目的Mac却是网关的Mac。如图:

这样,之后的数据就会通过网关设备来进行转发。

PC1将数据发出后,数据包经过交换机,交换机会先将源Mac和接收到该报文的接口学习到本地的Mac地址表中

之后会根据这个数据包的目的Mac来查看本地的Mac地址表。

        1、如果本地的Mac地址表中存在对应的目的Mac地址,就会直接根据该目的Mac进行转发。

        2、如果本地的Mac地址表中不存在对应的目的Mac地址,这个时候就会向除了接收到该数据帧以外的所有接口进行广播发送(同一广播域)。

这个时候,因为SW1上并不存在对应的目的Mac,就会将这个报文进行泛洪。

        注意:我这里因为拓扑的原因,所以只会发送给路由器。但是如果存在多条链路,那么会将这个数据包泛洪到相同广播域(同一VLAN)的链路中。

数据包到达路由器后,路由器也会先将这个数据包的源Mac和接收到该数据包的接口学习到本地的Mac地址表中(按照理论来说, 是这样的,但是做实验发现,经过的流量并没有加入到Mac地址表中,问过大佬,大佬说是因为交换机是靠硬件转发,而路由器是靠CPU)。

之后路由器查看数据包的目的Mac,发现这个目的Mac是自己的Mac地址,于是会查看目的IP,来判断是否这个报文是发给自己的。

但是发现目的IP并不是本地的接口IP地址,于是就会查看路由表。

通过查看路由表发现,存在一条跟目的IP同网段的直连路由。

这个时候,并不会直接根据这个IP路由发送数据包,因为并不知道对方的目的Mac。

所以会查看本地的ARP缓存,检查是否存在对应的ARP表项,过程和处理方式都跟开头PC1的ARP请求过程一样,这里就不在赘述。(自己尝试去想一下具体过程是怎么样的,将知识融会贯通。)

PC2收到路由器发来的数据包之后,通过查看目的IP发现这个数据包是发给自己的,然后就会进行回复,又因为之前已经学习好MAC地址和ARP表项,所以PC2发送的时候存在到达PC1的路径,就不需要再执行ARP请求,而是直接完成数据的通信。

由于笔者能力有限,时间仓促,难免错漏,欢迎读者批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值