2025-11-20 05:27:20
TCP协议把数据当连续的字节流看,就像给一桶水倒进杯子里不用管里面有没有分块。发送方往网络里丢的字节连成串,接收方按顺序接住再拼起来。比如你发"你好"四个字,TCP会拆成多个字节包,但接收方不会知道哪个包装哪个字,统一按顺序重组。
为啥要这样设计呢?早期网络设备带宽有限,数据包大小受限。比如80年代路由器最大传输单元是576字节(RFC 793标准),如果按报文流传输,每个包都要加完整头信息,小数据包效率低。字节流把数据切到刚好能塞进最大传输单元的长度,中间用空字节占位。比如发送100字节数据,刚好塞进576字节包,剩下476字节留空。接收方收到后,把连续的100字节提取出来,剩下的空字节扔掉。这样既保证传输效率,又避免数据错位。比如1995年万兆以太网出现时,最大传输单元升级到9216字节,但字节流设计依然适用,发送方自动计算切割长度。而UDP虽然也是字节流,但不保证顺序,所以视频会议用TCP更可靠。
本题链接: