本文主要是介绍网络协议 TCP 如何保证数据的有序无误传输,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如何保证数据的有序无误传输
- 1.如何保证有序传输
- 2.如何保证传输的无误性
上一节讲了 网络协议 TCP 数字编号和重传机制,其实已经变相的说明了这个问题。
1.如何保证有序传输
首先说,TCP 不同与UDP ,TCP 是有序的,那么是如何保证有序的,数据在发送后,可能经过不同路径,这样到达目的地时的顺序可能会与发送时不同,后发先到是一件很平常的事,网络层是不会保证数据的有序,TCP 是传输层协议,他实现了这样的一套逻辑,虽然网络层收到的消息顺序可能不一样,但是tcp 保证了提交到上层,应用层的消息,是有序的。
那么,如何保证有序,tcp通过字节编号,每一个数据字节都会有一个编号,比如发送了三包,每包100字节,假设第一包首个字节标号是1,那么发送的三包的编号就是 1,101,201,三包数据,只有接收端收到连续的序号的包,才会将数据包提交到应用层例如收到1,201,101,是不会提交到上层应用层的,只有收到正确连续顺序才会提交,所以就保证了数据的有序性。
2.如何保证传输的无误性
TCP是有链接的协议,在连接的握手状态就会有一个起始编号,这个编号会随着后续消息的发送而不断增加,且消息是基于字节流的,每个字节在发送之处就会被编号,当某一段消息(多个连续消息)由于其他原因丢失,就会触发重传消息机制,发送端会根据超时消息,将数据重新发送,或者根据接受端给出的消息编号选择性的发送消息,这样就保证了消息的无误性,不会乱序不会丢失,当然,如果更加严谨的说,tcp还会对消息本身做校验计算,这是为了保证消息序号不变的同时,消息内容发生错误的情况。
这篇关于网络协议 TCP 如何保证数据的有序无误传输的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!