网络编程--TCP是如何保证包的顺序传输
2020-07-14 04:57
127 查看
主机每次发送数据时,TCP就给每个数据包分配一个序列号并且在一个特定的时间内等待接收主机对分配的这个序列号进行确认,如果发送主机在一个特定时间内没有收到接收主机的确认,则发送主机会重传此数据包。接收主机利用序列号对接收的数据进行确认,以便检测对方发送的数据是否有丢失或者乱序等,接收主机一旦收到已经顺序化的数据,它就将这些数据按正确的顺序重组成数据流并传递到高层进行处理。
具体步骤如下:
(1)为了保证数据包的可靠传递,发送方必须把已发送的数据包保留在缓冲区;
(2)并为每个已发送的数据包启动一个超时定时器;
(3)如在定时器超时之前收到了对方发来的应答信息(可能是对本包的应答,也可以是对本包后续包的应答),则释放该数据包占用的缓冲区;
(4)否则,重传该数据包,直到收到应答或重传次数超过规定的最大次数为止。
(5)接收方收到数据包后,根据数据包的序号排序,先进行CRC校验,如果正确则把数据交给上层协议,然后给发送方发送一个累计应答包,表明该数据已收到,如果接收方正好也有数据要发给发送方,应答包也可方在数据包中捎带过去。
相关文章推荐
- TCP是如何保证包的顺序传输?
- TCP是如何保证包的顺序传输?
- TCP是如何保证包的顺序传输?
- tcp如何保证数据包的顺序传输
- TCP是如何保证包的顺序传输?
- TCP是如何保证包的顺序传输?
- TCP是如何保证包的顺序传输
- TCP是如何保证包的顺序传输?
- 网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结
- TCP是如何保证数据可靠传输
- TCP是如何保证可靠传输的
- TCP如何保证消息顺序以及可靠性到达
- [网络编程] TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结
- 黑马程序员-网络编程 tcp传输 URL
- 黑马程序员——java网络编程中的传输协议:UDP和TCP
- 网络编程 UDP TCP传输数据
- 黑马程序员---网络编程(TCP传输)
- 黑马程序员:网络编程之TCP传输
- 【C/C++学院】(29)网络编程--实现跨平台传输文件(TCP版)
- 应聘复习基础笔记1:网络编程之TCP与UDP的优缺点,TCP三次握手、四次挥手、传输窗口控制、存在问题...