MTU与MSS的关系---以太网帧结构
2014-03-29 21:48
239 查看
MSS是指应用层在一个数据包内最大能传输的字节数
MTU是指IP层在一个数据包内最大能传输的字节数
MTU= MSS+TCP层头部长度+IP层头部长度
对于千兆以太网,每秒能传输1000Mbit数据,即125000000B/s,每个以太网frame的固定开销有:前导码和帧开始符preamble(8B)、MAC(12B)、type(2B)、payload(46B~1500B)、CRC(4B)、gap(12B),因此最小的以太网帧是84B,每秒可以发送1488000帧。最大的以太网帧是1538B,每秒可发送81274帧。接下来算TCP有效负荷:一个TCP segment包含IP header(20B)和TCP header(20B),还有Timestamp
option(12B),因此TCP的最大吞吐量是81274*(1500-51)=117MB/s。
来自线路的二进制数据包称作一个帧。从物理线路上看到的帧,除其他信息外,还可看到前导码和帧开始符。任何物理硬件都会需要这些信息。
1个octets=1Byte
一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。快速以太网之前,在线路上帧的这部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由于在传输一个字节时最不重要的位最先传输(即低位最先传输),因此其相应的16进制表示为0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。
10/100M 网卡(MII PHY)一次传输4位(一个半字)。因此前导符会成为7组0x5+0x5,而帧开始符成为0x5+0xD。1000M网卡(GMII)一次传输8位,而10Gbit/s(XGMII) PHY芯片一次传输32位。 注意当以octet描述时,先传输7个01010101然后传输11010101。由于8位数据的低4位先发送,所以先发送帧开始符的0101,之后发送1101。
(PS:其实可以这么简单的理解,在以太网传输帧时,一帧数据最大是1538,出去以太网帧头帧尾这些附带数据外,以太网帧的最大负载就是1500字节(MTU),那么这1500个字节是来自上层协议总的数据包,在网络层中IP头有20个字节,也就是说在IP层可以接受上层协议最多的字节就是1480,在传输层中,如果使用TCP的话,除去TCP的头,还有12字节为TCP的时间戳(可选项),在传输层可以接受上层协议的最大数据就是1480-20--12=1448字节),这1448字节就是应用层的最大负载数据,即MSS,这么一来,如果使用TCP作为传输层协议传输数据时,应用层每包的数据不要超过1448字节,不然会造成分包的操作。
MTU是指IP层在一个数据包内最大能传输的字节数
MTU= MSS+TCP层头部长度+IP层头部长度
对于千兆以太网,每秒能传输1000Mbit数据,即125000000B/s,每个以太网frame的固定开销有:前导码和帧开始符preamble(8B)、MAC(12B)、type(2B)、payload(46B~1500B)、CRC(4B)、gap(12B),因此最小的以太网帧是84B,每秒可以发送1488000帧。最大的以太网帧是1538B,每秒可发送81274帧。接下来算TCP有效负荷:一个TCP segment包含IP header(20B)和TCP header(20B),还有Timestamp
option(12B),因此TCP的最大吞吐量是81274*(1500-51)=117MB/s。
以太网帧结构
在以太网链路上的数据包称作以太帧。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以MAC地址说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包(例如IP协议)。以太帧由一个32位冗余校验码结尾。它用于检验数据传输是否出现损坏。来自线路的二进制数据包称作一个帧。从物理线路上看到的帧,除其他信息外,还可看到前导码和帧开始符。任何物理硬件都会需要这些信息。
1个octets=1Byte
前导码和帧开始符
参见:Syncword一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。快速以太网之前,在线路上帧的这部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由于在传输一个字节时最不重要的位最先传输(即低位最先传输),因此其相应的16进制表示为0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。
10/100M 网卡(MII PHY)一次传输4位(一个半字)。因此前导符会成为7组0x5+0x5,而帧开始符成为0x5+0xD。1000M网卡(GMII)一次传输8位,而10Gbit/s(XGMII) PHY芯片一次传输32位。 注意当以octet描述时,先传输7个01010101然后传输11010101。由于8位数据的低4位先发送,所以先发送帧开始符的0101,之后发送1101。
报头
包含源地址和目标地址的MAC地址,以太类型字段和可选的用于说明VLAN成员关系和传输优先级的IEEE 802.1Q VLAN 标签。帧校验码
帧校验码是一个32位循环冗余校验码,以便验证帧数据是否被损坏。帧间距
当一个帧发送出去之后,发送方在下次发送帧之前,需要再发送至少12个octet的空闲线路状态码。(PS:其实可以这么简单的理解,在以太网传输帧时,一帧数据最大是1538,出去以太网帧头帧尾这些附带数据外,以太网帧的最大负载就是1500字节(MTU),那么这1500个字节是来自上层协议总的数据包,在网络层中IP头有20个字节,也就是说在IP层可以接受上层协议最多的字节就是1480,在传输层中,如果使用TCP的话,除去TCP的头,还有12字节为TCP的时间戳(可选项),在传输层可以接受上层协议的最大数据就是1480-20--12=1448字节),这1448字节就是应用层的最大负载数据,即MSS,这么一来,如果使用TCP作为传输层协议传输数据时,应用层每包的数据不要超过1448字节,不然会造成分包的操作。
相关文章推荐
- MTU值的作用以及设置
- 小议TCP的MSS(最大分段)以及MTU
- MTU/MSS/PPPoE名词解释
- IP Fragmentation and PMTUD(Cisco)
- 什么是MTU值,如何设置最快最好?
- Nagle算法(TCP 通信设置)
- Csipsimple Or Imsdroid :invite message too long for 3g - it gets fragmented
- Warning: Unable to send packet: Error with PF_PACKET send() [11]: Message too long (errno = 90)
- 开源安全信息管理系统——OSSIM安装
- OSPF与MTU
- 由于MTU值设置不当造成的某些网站无法登录解决
- CISCO 3750 不能修改接口mtu?
- MSS值
- 更改MTU值
- 关于对某些网站无法访问的解决办法 推荐
- 关于MTU的一些概念与设置技巧
- css水平垂直居中