TCP/IP——数据链路层

一、IEEE802.3以太帧头:

在这里插入图片描述
前导码:7字节0x55,一串1、0间隔,作用是用来使接收端的适配器在接收MAC帧时能够迅速调整时钟频率,使它和发送端的频率相同。

帧起始定界符:1字节0xD5(10101011),表示一帧的开始

DA(目的MAC):描述下一跳的MAC地址

SA(源MAC):描述发送主机的MAC地址

类型/长度:该字段为0x0800时,表示将数据部分交付给IP协议,为0x0806交付给ARP,0X8035交付给RARP。

数据:46~1500字节,IP首部+IP数据部分。

帧校验序列(FCS):4字节,使用CRC计算从目的MAC到数据域这部分内容而得到的校验和。避免无效帧在网络中传输,浪费网络资源。

当出现下列情况之一即为无效的MAC帧:

帧的长度不是8的倍数。
检验序列检验出差错。
帧长度数据字段不在46-1500之间。
无效的帧将被交换机直接丢弃。

以太网IP数据包(数据帧的数据部分)的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步吗+1字节帧开始定界符+6字节的目的MAC+6字节的源MAC+2字节的帧类型+1500+4字节的FCS。

按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是1526字节呢?

原因是当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交“设备驱动程序”做进一步处理。这时我们的抓包软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据,其最大值是6+6+2+1500=1514。

以太网规定,以太网帧数据部分最小为46字节,也就是以太网帧最小是6+6+2+46+4=64。除去4个字节的FCS,因此,抓包时就是60字节。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据帧长不小于64字节。填充数据是由MAC子层负责,也就是设备驱动程序。

为什么要有最小帧长度?
在早期为了避免因为帧长度太短引起冲突,在CSMA/CD中,由于帧长度太短,导致主机发送出去的帧在离它最远的主机还没收到前就发送完毕,最远的主机没有侦测到信道有人使用,这时,如果最远的主机开始使用信道,这时就会发生碰撞,并且发送主机无法并不知道帧发生了碰撞(因为发送主机已经发送完帧)误以为已发送成功,又因为以太网没有提供可靠的传输机制,发送主机在发送发这个帧之后就不会再发送这个帧,这就导致最远的主机没有收到该数据帧。如果这个数据帧刚好是发送给最远的主机,就会造成严重后果。

为什么要有最大帧长度?
在早期为了避免帧长度太长,引起单个主机占用网络太长,其它主机无法通信。而且有的数据可能超过接收端的缓冲区大小。

二、封装格式

在这里插入图片描述
802.3帧字段说明:

目的地址:目的MAC地址

源地址:源目的MAC地址

长度:可以根据数值区分是以太网的帧还是802.3的帧

DSAP:目的服务访问点,值固定为0xaa

SSAP:源服务范文点,值固定为0xaa

Ctrl:控制位值位0x03

Org code:组织单位代码,普通电脑发的就是0,如果是厂商发的就是厂商的ID

类型:上一层使用的什么协议

帧的长度最少要有64字节

MTU与路径MTU

以太网和802.3对数据帧的数据部分长度都有一个限制,其最大值分别是1500和1492字节,链路层的这个特性称作MTU,最大传输单元

如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片,把数据报分成若干片,使每一片都小于MTU

两台通信主机路径中的最小MTU,被称为路径MTU

路径MTU在两个方向上可能不一致

MTU是计算出接口方向的MTU

三、环回口

在这里插入图片描述
只要是127.开头的就是环回地址

传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上,因为广播传送和多播传送的定义包含主机本身。
任何传给该主机IP地址的数据均送到环回接口。
当自己用cmd,ping环回地址时。由用户进程调用ICMP,进入IP输出队列,进入环回口队列,转发到IP输入队列。如果是访问的广播,也是由环回驱动程序转发到IP输入队列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值