简单直接的答案是:在标准的以太网环境中,最常见的单次TCP报文段所能携带的应用层数据最大是 1460 字节。
下面从不同层面详细解释:
1. 最核心的概念:MSS
MSS是Maximum Segment Size,即最大报文段长度。它指的是TCP报文段中“数据”部分的最大长度,不包括TCP头(通常20字节)和IP头(通常20字节)。
- 计算方式:MSS = MTU - IP头 - TCP头
- 标准以太网MTU:1500字节(这是数据链路层的最大传输单元)。
- 因此:MSS = 1500 - 20 - 20 =1460 字节。
结论一:在TCP连接建立时的三次握手中,双方会协商彼此的MSS。对于大多数标准网络,发送方一次最多能放入1460字节的应用数据到一个TCP报文段中,然后交给IP层。
2. 其他重要层面和影响因素
a) 应用程序调用send()/write()的大小
你可以在程序中一次性调用send(socket, buf