关于tcp 所携带的 最大数据的问题
////////////////////////////////////////////////
//
1. tcp 实验 (windows2000 vc++6.0 学校的局域网)
1) 最简单的tcp 连接框架 , 分为 server 端 和 client端
两端的socket对象的属性都采用 ::socket函数创建时候的默认值
2) 连接成功后,
client端 用 ::send 函数 发送 一次 数据
server端 用 ::recv 函数 接收 一次 数据
3) 改变 client 端 发送数据的大小,比如: 300 、1024、 60000 、200000 字节
然后重新编译连接, 观察 server端的接收情况
4) 我的实验结果:
client 发送600000 字节 , server 端收到 600000 字节
两端的数据 均使用 大数组存储,直到 数组大小到了上限,
数据的 发送 接收 都是正常的
5) 我的问题:
a. 1个 tcp 数据包 最大 能 携带 多少数据 ?
b. 在保证 server端能接收到的情况下,
::send 函数 1 次 最多 能发送 多少 数据 ?
c. 或者 “1个 tcp 数据包” 的说法是错误的,
因为 具体发送时 ,在网络上 传递的 基本单位是 一个 物理帧,
其它所谓的数据包 都是由 协议堆栈 来负责构造,
::send 函数 “看到的” 是1个 tcp 数据包 ,
1 个 tcp 数据包 可能被 分解成为 n 个 ip 数据包,
1 个 ip 数据包 可能被 分解成为 n 个 物理帧,
6) 请大家谈谈看法
并请指出我阐述中的错误之处, 谢谢