计算机网络-为什么说TCP是流式的
1. TCP不是也有分段吗?和IP包为什么不一样?
- 确实是有分段,但是TCP协议完全不关心数据被分成了多少单元
- 因为在接收端,TCP协议能够把之前的内容拼接起来,形成完整的数据流。
- 分的段,是不能丢失的,丢失一个也不行,因为最终会拼接不上的。因此需要有差错控制机制。
- 这个过程当中可能会出现问题,但是有差错控制机制。对于应用程序来讲,感知到的就是一个完整的、连续的数据流。
- 简单说,就是接收端,是连续去读取TCP数据的。接收端接受的对象是流。
- 反观IP包
- IP协议把数据切成一个一个的包去传输。
- 包本身就是一个独立的单位,丢了一个两个的也无所谓,重新发就行。
- 接收方接受的对象是包
[!cite]
- link: 你是如何理解“TCP是面向字节流的协议”的
- 先说说面向报文的udp协议,你发一个666长度的数据包,那你收到的肯定也是666大小的数据包,有没有可能收到665,667的呢,没有,如果有其它情况,那肯定就出错了,一般这个报文就丢弃了
- 那面向流的tcp协议呢,你发一个666长度的数据,你可能先收到600再收到66哦,也可能收到了6个100,再收到66哦,也可能666一次性全部都倒给你哦,还有可能你发了一个100,又发了一个66,结果一次性收到了166哦,不同的情况下结果可能是不确定的。