计网——链路层要点笔记

以太网数据帧格式

  以太网链路传输的数据包称为以太帧,或者以太网数据帧。
以太帧的工作机制
  当以太网软件从网络层接收到数据报后需要完成下面的操作:

  1. 根据需要把网际层的数据分解为较小的块,以符合以太网帧数据段要求,一般系统以太网帧的整体大小需要在64~1518字节之间(不含前导码);
  2. 把数据块打包成帧,每帧都包含数据和其他信息,这些都是以太网网络适配器处理帧所需的;
  3. 把数据帧传递给对应于OSI模型物理层的底层组件,然后将其转化为比特流通过传输介质发送出去;
  4. 以太网的其他网络适配器接受到这个帧,检查其中的目的地址,若与该网络适配器地址相匹配,则会处理接收到的帧,解析出来的数据传递给协议栈中的上层。

以太帧结构
以太帧起始部分前同步码帧开始定界符组成,后面跟的是以太网报头,以MAC地址说明目的地址和源地址。以太帧的中部由该帧负载的包含其他协议报头的数据包,如IP协议/TCP协议。以太帧的尾部是一个32位冗余校验码结尾,用于校验数据传输是否出现损坏。其结构如下图所示:
在这里插入图片描述
  上图中的含义如下所示:

  • 前同步码:用来使接收端的适配器在接受MAC帧是能够迅速调整时钟频率,使它和发送端的频率相同,前同步码为7歌字节,1和0交替。
  • 帧的开始定界符:帧的起始符,为一个字节,前6位1和0交替,最后两个连续的1表示告诉接收端适配器:“帧的信息要来了,准备接收”。
  • 目的地址:接收帧的网络适配器的物理地址(MAC地址),为6个字节(48比特),作用是当网卡接收到一个数据帧时会检查该帧的目的地址是否该适配器的物理地址相同,相同则处理,否则丢弃。
  • 源地址:发送帧的网络适配器的物理地址(MAC地址),同样为6个字节(48)比特。
  • 类型:上层协议的类型,由于上层协议众多,则需要在处理数据时设置该字段,表示数据交付哪个协议处理,例如字段为0x0800时将会交付给IP协议。
  • 数据:称为效载荷,表示交付给上层的数据,以太网帧数据长度最小为46个字节,最大为1500字节,若不足46个字节则会填充到最小长度,最大值也叫做最大传输单元(MTU后面会介绍),在Linux中可使用ifconfig命令查看该值,通常为1500。
  • 帧检验序列:检测该帧是否出现差错,占4个字节(32比特),发送方计算帧的循环冗余码校验值,把这个值写到帧中,接收放从新计算该值,与该字段的值进行比较,若两个值不同,则说明发生了数据丢失或改变,则需要重新传输。

MTU最大传输单元

MTU(Maximum Transmission Unit),中文名是最大传输单元。那么它有什么用呢?我们假设一个场景:假设你在家用笔记本上网,笔记本接路由器,路由器接电信网络,然后访问www.baidu.com就会从你的笔记本发出一个以太网数据帧会经过下面的路径:

笔记本 -> 路由器 -> 电信机房 -> 服务器

  其中每个节点都有一个MTU值:

1500	  1500                  1500
笔记本 -> 路由器 -> 电信机房 -> 服务器

  假如将笔记本的MTU最大设为了1700,然后发送一个ip数据包(2000),那么以太网传输的时候将会拆成两个包,一个1700,一个300,然后加上各自的投传输:

1700	  1500                  1500
笔记本 -> 路由器 -> 电信机房 -> 服务器

  路由器收到了一个1700的帧,发现大于自己设置的最大值:1500,若IP包DF标志位为1,即不允许分包,那么路由器将会把这个包丢弃,不会达到电信机房,也就到不了服务器,因此我们可发现,MTU就是一个结点的管控制,只要大于这个值的数据帧,要么被分片,要么被丢弃。
  上面我们说到标准以太网数据帧的大小是:1518个字节,而通常MTU的值被设为1500,那18个字节是什么的?其中头部的信息有14个字节,尾部校验和占了四个字节,这就可为什么要设置为1500的原因。
  当然如果这个值设得大一点就会受到实际网路传输速率的影响,还有路由器不可处理过大的包而被拒绝转发,而如果太小的话因为协议需要在前面加上包头,则实际传输有效数据量就会变小,即传输速率变小这样也划不来,大部分的系统会默认设一个对用户来说相对合理的值。

参考文章:什么是MTU?为什么MTU值普遍都是1500?

ARP地址解析协议

ARP(Address Resolution Protocol),即地址解析协议,他根据IP地址获取物理地址的一个TCP/IP协议。ARP协议通过IP地址向MAC地址的转换,解决网际层和网络访问层的衔接问题。由于IP地址和MAC地址定位方式不同,ARP协议称为数据传输的必备协议,主机发送信息前,需要通过ARP协议获取目的IP的MAC地址,才能正确地发送数据包。
ARP工作的基本流程
ARP工作流程分为两个阶段,一个是ARP请求过程,另一个是ARP响应过程
  设一个主机A的IP地址为192.168.1.1,主机B的IP地址为192.168.1.2。若主机A与主机B通信,需要获取其MAC地址,流程如下:

  • 主机A广播向网络中所有主机发送ARP请求,请求包中包含了目标IP地址192.168.1.2;
  • 主机B接到请求,发现主机A为要找的主机,则返回ARP响应,响应包中包含自己的MAC地址。

ARP缓存
  在请求目标主机的MAC地址时,每次获取目标主机的MAC地址都需要发送一次ARP请求,然后根据相应获取到MAC地址,为了避免重复的ARP请求,每台主机都有一个ARP高速缓存,当主机得到ARP响应后,会将目标主机的IP地址和物理地址都存入本机的ARP缓存中,保留一定的时间,在这个时间范围内,请求MAC地址时会查询ARP缓存,节省了网络资源。
  因为有了ARP缓存,ARP的工作流程如下:

  1. 主机A在本机ARP缓存中检查主机B的匹配MAC地址;
  2. 若ARP缓存中没有找到关于主机B的信息,则会询问主机B的MAC地址,源主机A的IP和MAC地址都会包括在请求中;
  3. 本地网络内的每台主机接收到ARP请求,检查是否与自己的IP地址匹配,如果主机发现请求不匹配,则丢弃,如果B确定请求中的信息与自己的匹配,则将主机A的地址信息映射到本地的ARP缓存中;
  4. 主机B将自身的地址信息通过ARP响应的方式发送给A;
  5. 当A收到从B发来的ARP响应消息后会用B的地址信息更新ARP缓存;
  6. 主机B的MAC确定后,主机A可向主机B发送数据包,缓存生存期过后,会重复上面过程。

  在linux下可通过arp -a的命令查看缓存信息。

ARP报文格式

  ARP报文总长为28个字节,MAC地址长为6个字节,IP地址长为4个字节格式如下图所示:
在这里插入图片描述
  其中每个字段含义如下:

  1. 硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为1;
  2. 协议类型:指明了要映射的协议地址类型,值为0x0800,表示IP地址;
  3. 硬件地址长度和协议长度:分别指明了硬件地址和协议长度,以字节为单位,对于以太网IP地址和ARP请求或应答来说值分别为6和4;
  4. 操作类型:用来表示报文类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
  5. 发送方/目标MAC地址:发送方/接收方设备的硬件地址;
  6. 发送方/目标IP地址:发送方/接收方设备的IP地址

RARP逆地址解析协议

  顾名思义RARP的作用与ARP相反,用于将MAC地址转换为IP地址。主要被那些没有磁盘驱动器的系统使用,如无盘工作站等。其工作过程如下:

  1. 网络上每台设备都会有独一无二的硬件地址,发送主机从网卡上读取MAC地址,然后再网络上发送一个RARP请求广播数据包,请求任何接收到请求的RARP服务器分配一个IP地址;
  2. RARP服务器收到请求后会检查其RARP表项,查找该MAC地址对应的IP地址;
  3. 若存在则该服务器会给主机发送一个响应数据包,其中包含了该主机的IP地址;
  4. 若不存在,则服务器不会做任何相应;
      需要注意的是ARP、RARP请求是以广播的方式发送,而ARP、RARP应答则一般是单播传送。

感谢:【计算机网络】详解网络层(二)ARP和RARP

猜你喜欢

转载自blog.csdn.net/weixin_42647166/article/details/105741442