TCP/IP卷一:12---链路层之(以太网帧、帧校验序列/循环冗余校验、MTU/MTU路径)

一、以太网帧

  • 所有的以太网(802.3)帧都基于一个共同的格式。在原有规范的基础上,帧格式已被改进以支持额外功能

以太网帧格式

  • 下图显示了当前的以太网帧格式,以及它与IEEE提出的一个相对新的术语IEEE分组(一个在其他标准中经常使用的术语)的关系

  • 以太网帧开始是一个前导字段,接收器电路用它确定一个帧的到达时间,并确定编码位 (称为时钟恢复)之间的时间量。由于以太网是一个异步的局域网(即每个以太网接口卡中不 保持精确的时钟同步),从一个接口到另一个接口的编码位之间的间隔可能不同。前导是一 个公认的模式(典型值为0xAA),在发现帧起始分隔符(SFD)时,接收器使用它“恢复时钟”
  • SFD的固定值为0xAB
  • 这个基本的帧格式包括48位(6字节)的目的地址(DST)和源地址(SRC)字段。这些地址有时也采用其他名称,例如“MAC地址”、 “链路层地址”、 “802地址”、 “硬件地址” 或“物理地址”。以太网帧的目的地址也允许寻址到多个站点(称为“广播”或“组播”)。广播功能用于ARP协议,组播功能用于ICMPv6协议,以 实现网络层地址和链路层地址之间的转换
  • 源地址后面紧跟着一个类型字段,或一个长度字段。在多数情况下,它用于确定头 部后面的数据类型。TCP/IP网络使用的常见值包括IPv4 (0x0800)、 IPv6 (0x86DD)和 ARP (0x0806)。0x8100表示一个Q标签帧(可携带一个“虚拟局域网”或802.1q标准 回 VLAN ID)。一个以太网帧的基本大小是1518字节,但最近的标准将该值扩大到2000字节
    • 注意:最初的IEEE (802.3)规范将长度/类型字段作为长度字段而不是类型字段使用。困此,这个字段被重载(可用于多个目的)。关键是看字段值。目前,如果字段值大于或等于1536,则该字段表示类型,它是由标准分配的超过1536的值。如果字 段值等于或小于1500,则该字段表示长度。 [ETHERTYPES]给出了类型的完整列表
  • 在上述字段之后,[802.3-2008]提供了多种标签包含由其他IEEE标准定义的备种协议字段。其中,最常见的是那些由802.1p和802.1q使用的标签,它提供虚拟局域网和一些服务质量(Qos)指示符
    • 注意:当前的[802.3-2008]标准采用修改后的802.3帧格式,提供最大为482字节 的“标签”,它携带在每个以太网帧中。这些较大的帧称为信封帧,长度最大可能达到2000字节。包含802.1p/q标签的帧称为Q标签帧,也是信封帧。但是,并非 所有信封帧必然是Q标签帧
  • 在这些讨论过的字段之后,是帧的数据区或有效载荷部分。这里是放高层PDU(例如IP数据报)的地方。传统上,以太网的有效载荷一直是1500字节,它代表以太网的MTU。目 前,大多数系统为以太网使用1500字节的MTU,虽然在必要时它也可设置为一个较小的值。有效载荷有时被填充(添加)数个0,以确保帧总体长度符合最小长度要求

二、帧校验序列/循环冗余校验

  • 在以太网帧格式中,有效载荷区域之后的最后字段提供了对帧完整性的检查。循环冗余校验(CRC)字段位于尾部,有32位,有时称之为IEEE/ANSI标准的CRC32 [802.3- 2008]。要使用一个″位CRC检测数据传输 错误,被检查的消息首先需要追加″位0形成一个扩展消息。然后,扩展消息(使用 模2除洼)除以一个(乃十1)位的值,这个 作为除数的值称为生成多项式。放置在消息 的CRC字段中的值是这次除法计算中余数 的二进制反码(商被丢弃)。生成多项式已 被标准化为一系列不同的″值。以太网使用 ″=32,CRC32的生成多项式是33位的二 进制数100000100110000010001Ⅱ0110110111。 为了理解如何使用(mod 2 )二进制除法计算 余数,我们看一个CRC4的简单例子。国际 电信联盟(ITU)将CRC4的生成多项式值 标准化为10011,这是在G.704 [G704]标 准中规定的。如果我们要发送16位的消息 1001111000101111,首先开始进行下图所示的(mod2)二进制除法
  • 在该图中,我们看到这个除法的余数 是4位的值ⅡⅡ。通常,该余数的反码 (0000)将放置在帧的CRC或帧校验序列 (FCS)字段中。在接收到数据之后,接收方 执行相同的除法计算出余数,并判断该值与FCS字段的值是否匹配。如果两者不匹配,帧可能在传输过程中受损,通常被丢弃。CRC功 能可用于提示信息受损,因为位模式的任何改变极可能导致余数的改变

三、帧大小

  • 以太网帧有最小和最大尺寸

最小尺寸

  • 最小的帧是64字节,要求数据区(有效载荷)长度(无标签)最小为48字节
  • 当有效载荷较小时,填充字节(值为0)被添加到有效载荷尾部,以确保达到最小长度

最大尺寸

  • 传统以太网的最大帧长度是1518字节(包括4字节CRC和14字节头部)。选择这个值 出于一种折中:如果一个帧中包括一个错误(接收到不正确的CRC校验),只需重发1.5kB 以修复该问题
  • 另一方面,MTU大小限制为1500字节。为了发送一个更大的消息,则需要多个帧(例如,对于TCP/IP网络常用的较大尺寸64KB,需要至少44个帧)
  • 由多个以太网帧构成一个更大的上层PDU的后果是,每个帧都贡献了一个固定开销(14字节的头部和4字节的CRC)。更糟的是,为了允许以太网硬件接收电路正确恢复来 自网络的数据,并为其他站提供将自已的流量与已有流量区分开的机会,以太网帧在网络中 不能无缝地压缩在一起。Ethernet Ⅱ规范除了在帧开始处定义了7字节前导和1字节SFD之 外,还指定了12字节的包间距(IPG)时间( 10Mb/s为9.6us,100Mb/s为960ns,1000Mb/s为 96ns,10000Mb/s为9.6ns)。因此, Ethernet Ⅱ的每帧效率最多为1500/(12 + 8+14+ 1500+4)= 0.975293,约98%。一种提高效率的方式是,在以太网中传输大量数据时,尽量使帧尺寸更大 一些。这可采用以太网巨型帧吓]来实现,它是一种非标准的以太网扩展(主要在1000Mb/s以 太网交换机中使用),通常允许帧尺寸高达9000字节。有些环境使用的帧称为超级巨型帧,它 们通常超过9000字节。在使用巨型帧时要谨慎,这些较大的帧无法与较小的1518字节的帧 互操作,因为它们无法由大多数传统以太网设备处理

四、MTU和MTU路径

  • 我们从最上面的帧格式图可以看到,在很多链路层网络(例如以太网)中,携带高层协议PDU的帧大小是有限制的。以太网有效载荷的字节数通常被限制为1500,PPP通常采用相同大小以保持与以太网兼容。链路层的这种特征被称为最大传输单元(MTU)
  • 大多数的分组网络(例如以太网)都有固定的上限。大多数的流类型网络(串行链路)提供可设置的上限,它可被帧协议(例如PPP)所使用。如果IP需要发送一个数据报,并且这个数据报比链路层MTU大,则IP通过分片将数据报分解成较小的部分,使每个分片都小于MTU(我们会在后面Internet协议文章和UDP文章中讨论IP分片)
  • 路径MTU:
    • 当同一网络中的两台主机之间通信时,本地链路的MTU在会话期间对数据报大小有直接影响。当两台主机之间跨越多个网络通信时,每条链路可能有不同大小的MTU
    • 在包含所有链路的整个网络路径上,最小的MTU称为路径MTU
  • 任何两台主机之间的路径MTU不会永远不变,这取决于当时使用的路径。如果网络中的路由器或链路故障,MTU可能改变。另外,路径通常不对称(主机A到B路径可能不是 B到A的反向路径),路径MTU不需要在两个方向上相同
  • [RFCl191]规定了IPv4路径MTU发现(PMTUD)机制,[RFC1981]描述了用于IPv6 的相应机制。 [RFC4821]描述了一个补充方案,以解决这些机制中的一些间题。PMTUD用于确定某个时间的路径MTU,它在IPv6实现中是需要的。在后面的文章中,针对前面描述的ICMP和IP分片,我们将观察这个机制如何运行。我们在讨论TCP和UDP时,也会讨论它对传输性能的影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董哥的黑板报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值