什么是以太网帧的“在线”大小? 1518年还是1542年?

根据这里的表格 ,它说MTU = 1500字节,有效载荷部分是1500 – 42字节或1458字节(< – 这实际上是错误的!)。 现在最重要的是,你必须添加IPv4和UDP头,这是28字节(20 IP + 8 UDP)。 这使我的最大可能的应用程序消息为1430字节! 但通过在互联网上查找这个数字,我看到了1472。 我在这里做这个计算错了吗?

我想知道的是我可以通过电线发送的最大应用消息,而不会造成碎片。 这绝对不是1500,因为它包含帧头。 有人可以帮忙吗?


令人困惑的是PAYLOAD实际上可能高达1500字节,这就是MTU。 那么现在1500的有效载荷的线内尺寸是多less呢? 从那张表中可以看到1542个字节。

因此,我可以发送的最大应用信息是1472(1500 – 20(ip) – 8(udp)),在1542线的最大值。令我惊讶的是,事情实际上很简单,事情变得如此复杂。 而且我不知道如果有人说1542,那么有人提出了1518。

    维基百科上的图表是可怕的。 希望我要写的更清楚。


    802.3以太网中的最大有效载荷是1500字节。
    这是您尝试通过电线发送的数据(以及MTU指的是什么)。
    [payload] < – 1500字节

    有效载荷被封装在一个以太网帧 (它添加了源/目标MAC,VLAN标记,长度和CRC校验和,总共22个字节的附加“东西”
    [SRC+DST+VLAN+LENGTH+[payload]+CRC] < – 1522字节

    帧是通过电线传输 – 之前,你的以太网卡,它基本站起来,呼喊非常大声,以确保没有其他人使用电线(CSMA / CD) – 这是前导码起始帧定界符 (SFD) – 额外的8个字节,所以现在我们有:
    [Preamble+SFD+[Ethernet Frame]] < – 1530字节

    最后,当一个以太网收发器完成发送一个帧时,802.3需要发送12个字节的静音(“帧间间隔”),然后才允许发送下一个帧。
    [Preamble+SFD+[Ethernet Frame]+Silence] < – 1542字节在线路上传输。


    前导码,SFD和帧间间隔不作为帧的一部分。 它们是以太网协议本身的支持结构。

    MTU适用于有效载荷 – 它是可以填入数据包的最大数据单位。 因此,一个MTU为1500字节的以太网数据包实际上是一个1522字节的帧,并且1542字节(假设有vLAN标签)。

    所以你的问题的答案 – 什么是最大的数据包,我可以发送通过802.3以太网没有碎片? – 是1500字节的有效载荷数据

    但以太网层可能不是你的限制因素。 要发现一路上是否有限制MTU小于1500字节的有效载荷数据使用下列之一:

    • Windows: ping hostname -f -l sizeofdata (John K提到的技术)
    • BSD: ping -D -s sizeofdata hostname
    • Linux: ping -M do -s sizeofdata hostname

    工作的sizeofdata是MTU(通过数据的特定path)。

    这取决于你在框架中的数据量。 如果你在一个帧中放入1500字节的数据,你的总帧大小将是1518字节。 有了1472个字节的数据,你最终的总帧数将是1500。

    http://en.wikipedia.org/wiki/Ethernet_frame

    这就是说,如果你真的对testing碎片感兴趣,一个好的方法来testing这是一个很好的旧的ping几个标志:

    ping主机名-f -l sizeofdata

    如果数据包被分段,-f标志将导致ping失败。 这里要理解的关键是“sizeofdata”是可以在没有分片的情况下放入消息中的数据量 – 所以如果你发送1500的有效载荷,当你超过1500字节时,你将开始分片。 把它翻到1472(1500 – 18字节的开销),你会看到ping通过。

    对于基本的Ethernet_II帧,帧大小为1518字节(在导线上或导线上)。 它由6个字节组成,每个目的地址和源地址由2个字节组成,有效载荷为46到1500字节之间的types字段(在你的情况下,整个IP数据包的IP头和UDP头),4字节FCS。 除此之外,还可以限制一个帧的大小(64字节)。 这就是为什么范围是从46个字节(加上这两个地址和types和FCS,你得到64个字节 – 46 + 6 + 6 + 2 + 4 = 64)。

    如果帧位于支持多个vlan的networking上,并且您需要使用vlan标记标记该帧,则会在types字段之前添加一个额外的字段。 这是4个字节。 现在这意味着有效负载的大小范围可以在底端减less4个字节,并且仍然有64个字节的最小值。 因此,42(所以42 + 6 + 6 + 2 + 4 + 4为vlan标签= 64)

    所以当范围写入1500-42并不意味着1500减去42,这意味着从1500到42个字节的任何东西都是有效的。 一个电线,这个标记帧可以是1522字节(如果只使用一个标记,或1526如果使用两个标记)的大。 这些都不能解释数字1542。

    为了达到这个数字,你需要考虑如何在以太网上发送帧。 以太局域网上没有时钟,所以一帧的发送端发送一系列1和0来设置时钟。 这就是所谓的序言。 不是每个听众都会听到所有的序言,但大多数人应该听到它的一部分。 为了通知前导码的结束,发送的最后8个比特中的一个被翻转,使得10101010变成10101011,该字节被称为帧起始定界符(SDF)。 这在技术上并没有用于捕捉线路,所以前导码的7个字节和1个字节的SDF通常不计算在内,但是如果它们是我们原来的1518,现在是1526.仍然不是1542 ..

    在帧被发送之后,在被称为帧间间隙的线路上存在强制静音。 这相当于12个字节的传输。 这也没有计算或捕获,但如果是这样会让我们到1538字节。 现在从1538年到1542年的唯一方法就是说帧被标记(即它包含4字节的计划标记)。 唷,终于1542。

    这一切都在术语中。 一个标准的帧是1518字节的线(就任何捕获设备而言)。 一个标记的帧(单个标记)在线上是1522字节。 这些在线路上占用1538字节或1542字节的传输空间。

    希望有助于澄清..

    没有你想要发生碎片,这就是为什么你得到的数据包需要被分割,但DF设置采取这样一个2路公路与一大堆半成品对相同的高速公路与一大堆的小型智能汽车,都将是相同的目的地半码率携带更多的有效载荷,但速度较慢,可以更容易小型车携带较less,但行驶较快MSS是不一样的MTU