TCP报文的最大最小长度

您所在的位置:网站首页 udp数据包最小长度怎么算出来的 TCP报文的最大最小长度

TCP报文的最大最小长度

2024-07-14 06:23| 来源: 网络整理| 查看: 265

最大

以太网的最大数据帧为:1518Bytes

(mac)以太网帧头:mac目标地址(6bytes), mac源地址(6bytes),2bytes, type域,共14

帧尾校验符:4bytes

数据域:1518 - 14 -4 = 1500(MTU)

TCP(数据域):1500 - 20 (IP)- 20 (TCP) = 1460(MSS)

udp(数据域) : 1500 - 20-8=1472

最小

TCP上传要是64个bytes

对于tcp:14 + 4 + 20 +20 =58B , 则需要额外填充 6个字节

对于udp:14 + 4 + 20 + 8 = 46B , 则至少需要额外填充 18个字节。

是谁帮我们填充 这个数据

参考:https://www.cnblogs.com/larry-luo/p/11010813.html 在用UDP局域网通信时,经常发生“Hello World”来进行测试,但是“Hello World”并不满足最小有效数据(64-46)的要求,为什么小于18个字节,对方仍然可用收到呢?因为在链路层的MAC子层中会进行数据补齐,不足18个字节的用0补齐。但当服务器在公网,客户端在内网,发生小于18个字节的数据,就会出现接收端收不到数据的情况。

以太网EthernetII规定,以太网帧数据域部分最小为46字节,也就是以太网帧最小是6+6+2+46+4=64。除去4个字节的FCS,因此,抓包时就是60字节。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据帧长不小于64字节。由于填充数据是由MAC子层负责,也就是设备驱动程序。不同的抓包程序和设备驱动程序所处的优先层次可能不同,抓包程序的优先级可能比设备驱动程序更高,也就是说,我们的抓包程序可能在设备驱动程序还没有填充不到64字节的帧的时候,抓包程序已经捕获了数据。因此不同的抓包工具抓到的数据帧的大小可能不同。下列是本人分别用wireshark和sniffer抓包的结果,对于TCP 的ACK确认帧的大小一个是54字节,一个是60字节,wireshark抓取时没有填充数据段,sniffer抓取时有填充数据段。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3