TCP/IP详解--以太网帧结构 IP层关注的MTU 网络中MSS大小
2014-03-29 14:05
477 查看
对于千兆以太网,每秒能传输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。
上面的解释是正确的:
来自线路的二进制数据包称作一个帧。从物理线路上看到的帧,除其他信息外,还可看到前导码和帧开始符。任何物理硬件都会需要这些信息。
下面的表格显示了在以1500个八位元组为MTU传输(有些吉比特以太网甚至更高速以太网支持更大的帧,称作巨型帧)时的完整帧格式。[note
2] 一个八位元组是八个位组成的数据(也就是现代计算机的一个字节)。
一个帧以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字节,那么这1500个字节是来自上层协议总的数据包,在网络层中IP头有20个字节,也就是说在IP层可以接受上层协议最多的字节就是1480,在传输层中,如果使用TCP的话,除去TCP的头,还有12字节为TCP的时间戳,在传输层可以接受上层协议的最大数据就是1480-20--12=1448字节),这1448字节就是应用层的最大负载数据,这么一来,如果使用TCP作为传输层协议传输数据时,应用层每包的数据不要超过1448字节,不然会造成分包的操作。TCP的协议数据单元被称为段。
参考/article/1595484.html
option(12B),因此TCP的最大吞吐量是81274*(1500-51)=117MB/s。
上面的解释是正确的:
结构
在以太网链路上的数据包称作以太帧。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以MAC地址说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包(例如IP协议)。以太帧由一个32位冗余校验码结尾。它用于检验数据传输是否出现损坏。来自线路的二进制数据包称作一个帧。从物理线路上看到的帧,除其他信息外,还可看到前导码和帧开始符。任何物理硬件都会需要这些信息。
下面的表格显示了在以1500个八位元组为MTU传输(有些吉比特以太网甚至更高速以太网支持更大的帧,称作巨型帧)时的完整帧格式。[note
2] 一个八位元组是八个位组成的数据(也就是现代计算机的一个字节)。
前导码和帧开始符
参见: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字节,那么这1500个字节是来自上层协议总的数据包,在网络层中IP头有20个字节,也就是说在IP层可以接受上层协议最多的字节就是1480,在传输层中,如果使用TCP的话,除去TCP的头,还有12字节为TCP的时间戳,在传输层可以接受上层协议的最大数据就是1480-20--12=1448字节),这1448字节就是应用层的最大负载数据,这么一来,如果使用TCP作为传输层协议传输数据时,应用层每包的数据不要超过1448字节,不然会造成分包的操作。TCP的协议数据单元被称为段。
参考/article/1595484.html
相关文章推荐
- sizeof进行结构体大小的判断
- 计算一个结构的大小
- 计算结构体大小
- mac Word 怎样放大缩小文档结构图文字大小
- C语言中结构体大小的计算(内存对齐详解)
- world2007文档结构图字体大小调整
- 利用宏定义在编译阶段检查结构体大小的方法
- 再谈结构体的大小
- sizeof运算求结构体大小
- sizeof运算求结构体大小
- 结构体大小的计算(无说明的默认32位机)
- Linux目录结构、Linux分区大小、挂载点和如何分区
- TCP流量控制中的滑动窗口大小、TCP字段中16位窗口大小、MTU、MSS、缓存区大小有什么关系?
- Oracle查询数据表结构(字段,类型,大小,备注)
- 字节对齐与结构体大小
- 15 个数用循环结构比较大小
- 介绍Linux目录结构 & Linux分区大小、挂载点 和如何分区
- 结构体大小问题
- 结构体大小问题
- Oracle查询数据表结构(字段,类型,大小,备注)