TCP是如何保证包的顺序传输
生活随笔
收集整理的这篇文章主要介绍了
TCP是如何保证包的顺序传输
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
转自:http://blog.csdn.net/ggxxkkll/article/details/7894112
大家都知道,TCP提供了最可靠的数据传输,它给发送的每个数据包做顺序化(这看起来非常烦琐),然而,如果TCP没有这样烦琐的操作,那么,可能会造成更多的麻烦。
如造成数据包的重传、顺序的颠倒甚至造成数据包的丢失。
那么,TCP具体是通过怎样的方式来保证数据的顺序化传输呢?
1. 主机每次发送数据时,TCP就给每个数据包分配一个序列号并且在一个特定的时间内等待接收主机对分配的这个序列号进行确认,
2. 如果发送主机在一个特定时间内没有收到接收主机的确认,则发送主机会重传此数据包。
3. 接收主机利用序列号对接收的数据进行确认,以便检测对方发送的数据是否有丢失或者乱序等,
4. 接收主机一旦收到已经顺序化的数据,它就将这些数据按正确的顺序重组成数据流并传递到高层进行处理。
具体步骤如下:
(1)为了保证数据包的可靠传递,发送方必须把已发送的数据包保留在缓冲区; (2)并为每个已发送的数据包启动一个超时定时器; (3)如在定时器超时之前收到了对方发来的应答信息(可能是对本包的应答,也可以是对本包后续包的应答),则释放该数据包占用的缓冲区; (4)否则,重传该数据包,直到收到应答或重传次数超过规定的最大次数为止。(5)接收方收到数据包后,先进行CRC校验,如果正确则把数据交给上层协议,然后给发送方发送一个累计应答包,表明该数据已收到,如果接收方正好也有数据要发给发送方,应答包也可方在数据包中捎带过去。
转载于:https://www.cnblogs.com/Allen-rg/p/7513344.html
总结
以上是生活随笔为你收集整理的TCP是如何保证包的顺序传输的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 做梦梦到朋友请吃饭是什么意思
- 下一篇: sha256---利用java自带的实现