网络协议 TCP 如何保证数据的有序无误传输

如何保证数据的有序无误传输


上一节讲了 网络协议 TCP 数字编号和重传机制,其实已经变相的说明了这个问题。

1.如何保证有序传输

首先说,TCP 不同与UDP ,TCP 是有序的,那么是如何保证有序的,数据在发送后,可能经过不同路径,这样到达目的地时的顺序可能会与发送时不同,后发先到是一件很平常的事,网络层是不会保证数据的有序,TCP 是传输层协议,他实现了这样的一套逻辑,虽然网络层收到的消息顺序可能不一样,但是tcp 保证了提交到上层,应用层的消息,是有序的。
那么,如何保证有序,tcp通过字节编号,每一个数据字节都会有一个编号,比如发送了三包,每包100字节,假设第一包首个字节标号是1,那么发送的三包的编号就是 1,101,201,三包数据,只有接收端收到连续的序号的包,才会将数据包提交到应用层例如收到1,201,101,是不会提交到上层应用层的,只有收到正确连续顺序才会提交,所以就保证了数据的有序性。

2.如何保证传输的无误性

TCP是有链接的协议,在连接的握手状态就会有一个起始编号,这个编号会随着后续消息的发送而不断增加,且消息是基于字节流的,每个字节在发送之处就会被编号,当某一段消息(多个连续消息)由于其他原因丢失,就会触发重传消息机制,发送端会根据超时消息,将数据重新发送,或者根据接受端给出的消息编号选择性的发送消息,这样就保证了消息的无误性,不会乱序不会丢失,当然,如果更加严谨的说,tcp还会对消息本身做校验计算,这是为了保证消息序号不变的同时,消息内容发生错误的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值