数据链路层

115 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第33天,点击查看活动详情

大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

作者简介:

数据链路层

数据链路层比较偏底层,我们就大致了解一下! 通过以太网数据帧协议了解数据链路层 以太网数据帧格式: 在这里插入图片描述

  • 目的地址
  • 源地址

这里的地址和IP地址不同,称为mac地址(物理地址),每一个设备都有唯一的物理地址(每个网卡都是唯一),这里指的是网卡的物理地址!并且这里的地址范围是6字节所以不存在地址分配问题,保证了每一台设备的物理地址唯一! 在这里插入图片描述 这就是博主设备的物理地址, 80-30-49-71-A0-4F可以看到mac地址有6位每位是一个字节! 这里需要注意区分,这里的mac地址是在数据链路层下使用,而IP地址是在网络层下使用,具有不同的功能和作用不要混淆了! 我们知道数据链路层中的目的地址和源地址随着数据的传输时不断改变的!只是记录当前时刻相邻的设备地址!而IP协议报中的始终不变,一直保存着源IP和目的IP 还有这里每个设备的mac地址是在设备出厂时就固定的!

  • 帧协议类型字段

这里的帧协议类型字段有3种取值对应着IP,ARP,RARP.

  • CRC

这里是帧位的CRC校验码,校验数据是否丢失!

MTU

MTU指的是一个以太网数据帧可以承受的最大数据范围! MTU的取值取决于2个因数

  • 硬件设备本身,因为传输链路中不同的设备硬件是不同的!
  • TCP/IP报头长度,因为我们知道TCP和IP的报头长度是变长的,如果TCP和IP的报头长度越长,那MTU也就需要相应减小!

MTU对IP的影响 由于MTU范围大小的限制,使得对网络层IP协议也有所制约,之前所说的IP协议数据报拆包大部分情况下是针对这里数据链路层数据传输的限制,通过MTU,IP协议报也能更好的对数据报进行拆包!

在这里插入图片描述就好比上图,发送快递的过程,当达到一个包裹的最大重量,就需要分成多个包裹进行邮寄!这里的IP也一样,当得知数据链路层的MTU可以承受的最大数据范围,就会将IP协议报数据进行拆包! MSS 在这里插入图片描述

  • TCP的一个数据报也不能无限大,还是受制于MTU。TCP的单个数据报的最大消息长度,称为MSS(Max Segment Size);
  • TCP在建立连接的过程中,通信双方会进行MSS协商。 最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)。
  • 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。
  • 然后双方得知对方的MSS值之后,选择较小的作为最终MSS。
  • MSS的值就是在TCP首部的40字节变长选项中(kind=2);

通俗点讲就是这里的MSS,TCP在IP不分包的情况下最大的数据载荷量! 我们连接时双方互通MSS这个值,就可以知道数据链路层在IP协议数据报不分包的情况下可以承受最大的数据载荷量,从而告诉TCP协议传输数据时,数据报按照这个范围打包数据,在接下了的传输过程就避免了拆包,组装的过程,从而提高了传输速率!

ARP

这里的ARP并不是用来传输数据的,而是起到一个辅助传输的效果! ARP保存IP地址和mac物理地址的映射关系!当我们路由器在转发数据时,首先拿到的是一个IP地址,而我我们需要转发给另一个路由设备,而路由设备的地址是mac地址,这时ARP就可以在以太网数据帧进行封装时,通过ARP协议保存的映射关系,设置源地址和目的地址的值! ARP协议保存的映射关系从何而来? 当设备启动时,就会向局域网中,广播ARP报文,每个设备接收到后,就会给出一个应答,应答中就包含了自己的IP地址和mac地址,发起广播方就可以通过收集到的映射关系,建立一个映射表!


TCP_IP协议栈还有许多内容等待我们去学习去了解! 加油! 在这里插入图片描述