路由器寻路过程----“以太网帧格式”和“ARP数据报格式”

上篇文章讲了数据报的封装,那么封装好的数据包怎么在网络中传输呢?今天继续补充我的网络基础笔记。

本篇文章通过讲述“以太网帧格式”和“ARP数据报格式”来讲路由器寻路

假设我们现在要从主机A给主机B发消息,途中我们要经过许多的路由器,所以我们有很多的路径可以选择;你实际上选择了哪些路由器来传输数据,这些路由器就称为路由节点,而在每一个路由节点中都有一个路由表(你可以看做是通讯录),里面记录了一些信息,这些信息是说我这个路由器可连接哪些个路由器。

路由器参照路由表来寻找下一个节点的过程称之为寻路,及寻找下一个路由节点。对于TCP协议来说,它的寻路一般只有一次,就是第一次发送数据的时候,一旦路建立好了,这条路就通了,后续所有数据包发送都是在这条路上;UDP就不一样了,因为内部没有建立连接的机制,所以每个数据包的经由路径都有可能不一样,但是也能到,即UDP传输数据每次都要寻路。
在这里插入图片描述

再来说回数据报的封装,数据报的封装中存有源IP和目的IP地址,这也是路由器寻路的依照之一,为了更好的理解寻路,再来说说以太网帧格式。

我们知道数据在网络中传输的时候,是需要封装,如下图;而以太网帧的部分就是下图中标红的部分。
在这里插入图片描述
具体以太网帧的格式如下图:图中第一行的格式是通用格式;在以太网帧的格式中,除了6字节的目的地址和6字节的源地址,还有一个2字节的类型和4字节的校验。当类型等于0800,意味着传输的是普通的以太网数据包;当类型等于0806,意味着传输的是ARP请求包+PAD,而不是数据。

在以太网帧的格式中,6字节的目的地址和6字节的源地址存的并不是IP地址,而是MAC地址,这点要记住,而关于IP地址,MAC地址的区别,可以看看我这个文章

在这里插入图片描述
太网帧目的地址具体要保存的应该是下一个传输节点的MAC地址,而我们只知道最终目的地址的IP地址,那怎么知道下一个节点的MAC地址呢?利用ARP协议。

当以太网帧的类型等于0806的时候,此时传输的将是ARP请求包,而ARP请求包的目的就是请求下一个要经过的路由器的MAC地址。具体怎么传输,还要接着看ARP协议格式。

ARP协议格式如下所示,其中前面6字节的以太网目的地址和6字节的以太网源地址,以及2字节的帧类型对应的就是以太网帧中的前面部分,其中帧类型为0806。上面说以太网帧中的数据最少要也得占46字节,当传输的是ARP请求包的时候,ARP请求包本身占得只有28字节,但为了能够凑够46字节,剩下的18字节由PAD占有,PAD表示填充,本身数据并没有意义。

在这里插入图片描述
28字节的ARP请求又有具体划分,其中硬件类型,协议类型,硬件地址长度,协议地址长度,op等都不用管它,我们主要看的是“以太网目的地址”,“以太网源地址”,“发送端以太网地址”,“发送端IP地址”,“目的端以太网地址”,“目的端IP地址” 这6部分。
在这里插入图片描述
如上图:主机A的数据要发送到主机B,首先由主机A选择将数据发送到哪一个路由器上来形成最优路径,假设我们选择的路由表是D,那么从A的路由表中就可以查出D的IP地址,此时A发送过去的ARP请求报的格式就为下图;(此时我们不知道路由器D的MAC地址,所以协议规定地址为ff:ff:ff:ff:ff:ff)
在这里插入图片描述
当数据由主机A发送到路由表D的时候,路由表D会进行部分解包,解包的部分就是以太网帧和IP首部(其中IP首部提供最终目的端的IP地址,也就是主机B的IP地址),而以太网帧提供的就是ARP请求了,路由表D检测到ARP的目的地址为0,就将自己的MAC地址填充到对应的位置,然后再将包封装传输到下一个路由节点,下一个路由节点也会对数据进行解包和封装,根据解包和封装的操作获取到主机B的IP地址,以及当前路由节点的MAC地址,依据这两个完成传输。

TTL

但是有个特殊情况,如下图,假设说现在主机A连接路由D的线路断了,现在主机A重新选择路径,假设现在选的是E,然后E再选择路由节点I,I选G,G选D,D选E(虽然概率很小,但是也是有可能的),这样就形成A-E-I-G-D-E的循环路径,当A不停传数据时,数据就会在这条路径上形成阻塞,影响传输,为了防止这种情况出现,我们在IP协议里面有个部分叫做TTL(生存时间),我们初始会给TTL一个数值,每当我们"跳一次",TTL减一,当路由器检测到TTL为0,就会丢弃这个数据。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值