TCP协议下是如何保证数据可靠性

面试题:为什么TCP协议是可靠的?TCP协议是怎么保证数据的可靠的?
能够保证TCP协议可靠的算法有检验和,连接管理机制,ACK应答机制,快速重传和超时重传机制,滑动窗口机制,拥塞控制机制,这些机制共同保证TCP协议的可靠性

检验和TCP检验和的计算与UDP一样,在计算时要加上12byte的伪首部,检验范围包括TCP首部及数据部分,但是UDP的检验和字段为可选的,而TCP中是必须有的。计算方法为:在发送方将整个报文段分为多个16位的段,然后将所有段进行反码相加,将结果存放在检验和字段中,接收方用相同的方法进行计算,如最终结果为检验字段所有位是全1则正确(UDP中为0是正确),否则存在错误。可以保证接收方能判断当前报文是否属于自己要接受的报文,如果为0,那就是,不为0,则不是,丢弃此报文。

序列号:TCP 对每个报文进行编号,这些编号就是序列号。而序列号有多种作用
a:保证可靠性,当接收到的数据失序时,就能立马知道
b:去除重复的报文,数据传输过程中的确认应答,重发控制,重复控制等功能都要依靠序列号来实先。
c:提高效率,可以实现多次发送,一次确认。

ACK应答机制:发送的每一条消息,都需要对方发送一条消息来回复消息是否被收到。主要实现是TCP的首部来控制,当ACK =1 时ack才有效,ack等于期望下一个传输过来的序号,也就是上一次接收消息的序号+1。这样就可以保证消息能被确认接收。

连接管理机制:三次握手建立连接与四次挥手断开连接,保证了TCP的全双工工作。

快重传和超时重传:保证了数据能够不丢失的传输数据,快重传是发送方连续收到3个接收方发送的同一个ack时,此时快速重传ack序号以及其之后的所有数据报。超时重传是:当发送方发送了数据给接收方,当时超过了约定的时间(RTO)也没有接收到确认消息,此时重传此报文。(Tips:RTO也就是重传超时时间,这个时间由TCP的自适应算法生成)

滑动窗口滑动窗口既提高了报文传输的效率,也避免了发送方发送过多的数据而导致接收方无法正常处理的异常。数据的发送方和接收方都有滑动窗口,对于发送方来说,窗口内就是可以发送的报文,当窗口的前沿紧挨的报文发送并且确认时,窗口向后移动。而窗口的后沿可以向前移动,当接收方处理不了那么多的报文时,就会发送消息告诉发送方,此时滑动窗口就需要缩小,所以后沿前移。但是TCP非常不建议窗口后沿前移。

拥塞控制拥塞控制使得宏观网络中的资源能够合理的应用。实现的算法有四个,慢开始,拥塞避免,快速回复,和快速重传慢开始指一开始发送报文时,不清楚网络中的情况,试探性的发送1cwnd的数据量,如果没有到门限值,则以指数形式增长,一直到门限值;当到达门限值时,此时采用拥塞避免算法,此时并没有发生网络拥塞,所以可以继续增加数据的发送量,但是不能是指数性增长了,而是+1增长,一直到发生网络拥塞为止;当发生网络拥塞时,此时采用快速回复算法,使得发送的数据量cwnd坠降到此次的门限值。在使用拥塞避免算法,发生网络拥塞再次快速回复,循环往复。这样就使得网络中的报文能够合理运用网络的资源,让网络资源利用最大化。
(网络资源即:网关,网桥,路由器,交换机等等)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值