Skip to content

计算机网络-为什么说TCP是流式的

1. TCP不是也有分段吗?和IP包为什么不一样?

  1. 确实是有分段,但是TCP协议完全不关心数据被分成了多少单元
  2. 因为在接收端,TCP协议能够把之前的内容拼接起来,形成完整的数据流。
  3. 分的段,是不能丢失的,丢失一个也不行,因为最终会拼接不上的。因此需要有差错控制机制。
  4. 这个过程当中可能会出现问题,但是有差错控制机制。对于应用程序来讲,感知到的就是一个完整的、连续的数据流
  5. 简单说,就是接收端,是连续去读取TCP数据的。接收端接受的对象是

  • 反观IP包
  • IP协议把数据切成一个一个的包去传输。
  • 包本身就是一个独立的单位,丢了一个两个的也无所谓,重新发就行。
  • 接收方接受的对象是

[!cite]

  • link: 你是如何理解“TCP是面向字节流的协议”的
  • 先说说面向报文的udp协议,你发一个666长度的数据包,那你收到的肯定也是666大小的数据包,有没有可能收到665,667的呢,没有,如果有其它情况,那肯定就出错了,一般这个报文就丢弃了

  • 那面向流的tcp协议呢,你发一个666长度的数据,你可能先收到600再收到66哦,也可能收到了6个100,再收到66哦,也可能666一次性全部都倒给你哦,还有可能你发了一个100,又发了一个66,结果一次性收到了166哦,不同的情况下结果可能是不确定的。