本文共 534 字,大约阅读时间需要 1 分钟。
简介:TCP协议会将应用层的数据封装交给下层继续处理,根据七层协议,可以不管TCP数据包在下层的详细过程,而假设接收端TCP层同样可以收到该数据包,在此基础上进行以下讨论。
完美情况: TCP直接将应用层数据包(可以认为就是一个数组)发给接收方,并且根据TCP协议,TCP会将每个发送的数据包编号(序列号),发送完一个序列号后,接收端收到会回复该序列号,代表已经被接受。 这样实际上保证了数据包的有序性,并且如果包与包之间接受有时间间隔的话,就按照顺序解包就可以了(一般来说,一个包对应一个信息,即数据未分段发送) 但问题是: (1)接收端有自己的TCP缓存区,它会将多个包积累在一起在进行处理,这样的结果是导致包与包之间“无缝连接”,即所谓的”粘包“ 针对此问题,就有了一些解决办法:(2)每个数据包发送后都要得到响应才发下一个,如果因为某一个包发送出现问题,会阻塞而导致程序一直占据资源等待,这是一种浪费。所以引入了滑动窗口机制。
详情参考:转载地址:http://xrzwi.baihongyu.com/