答案
一个TCP报文最多传输多少字节(即MSS)?
答案:1440
分析
报文头的长度
TCP: 58 = 18+20+20
UDP: 46 = 18+20+8
其中链路层:18,IP层:20, TCP:32 UDP:8,如下图:(各协议的报文详情见附录)
但我们通常说得MTU(最大传输单元)并不包括链路层,那么:
TCP: 40 = 20+20
UDP: 28 = 20+8
有些想象力丰富的小朋友会发现,链路层的协议上写着数据段大小是46-1500会不会是弄错了?
答:其实这个46和UDP没有一毛钱关系。因为链路层传输字段的最小长度是64,链路协议占了18,64-18=46。也就是说,不管你发不发数据,这个46的长度是少不了的。
MTU的长度:
以太网限制长度:1500
IEEE 802.3要求长度:1492
取较小值,也就是真正用来传输数据的长度:
1452 = 1492 - 40
百度百科参考的一般值:
1460 = 1500 - 40
TCP头的最大长度是60,因为偏移位占4bit最大值为15,表示TCP包头长度,单位4字节(32bit),因此TCP头最多长60字节。
所以我们经常抓包的时候会发现,MSS有时会是1440这个数,表示TCP包头占了60字节。当然经过复杂的网络环境MSS会更小。
附录
参考网址
https://blog.csdn.net/xiaofei0859/article/details/51052848
https://www.cnblogs.com/qinqin-me/p/12942225.html
https://blog.csdn.net/baidu_17611285/article/details/80171239
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」