TCP如何保证传输可靠?

TCP保证数据传输可靠性的方式主要有:

校验和

计算方式:在数据传输的过程中,将发送的数据段都当作一个16位的整数,将这些整数加起来,并且前面的进位不能丢,补在后面,最后取反,得到校验和。

发送方:在发送数据之前计算校验和,并进行校验和的填充,

接收方:收到数据后,对数据以同样的方式进行计算。如果接收方比对校验和与发送方不一致,那么就一定传输有误,如果一致,数据也不一定会传输成功。

确认应答和序列号

序列号:TCP在传输时对每个字节都进行了编号,这就是序列号。

TCP接收方在每次收到数据的时候都会给发送方进行确认应答,也就是发送ACK确认报文,这个报文中带有确认应答序号,告诉发送方接收到了哪些数据,这样下次传输的时候,从哪里接着发数据。

超时重传

由于确认应答机制和序列号机制,发送方在发送完一部分数据之后,会等待接收方的ACK报文,判断是否发送成功,如果发送方发送完数据之后,迟迟没有收到ACK确认报文,就会引入一个新的机制叫超时重传机制。

当然,没有收到响应的ACK报文有两个原因:

1.数据在传输过程中由于网络原因全体丢包,接收方根本没有接收到数据

2.接收方接收到了响应的数据,但是发送的ACK报文由于网络问题丢包了。

超时重传机制就是如果发送方没有收到接收方的ACK报文,在等一定的时间之后就会对刚才的数据进行重新发送,如果时由于发送的数据没有到达接收方,那么接收方收到这个重发的数据之后,就会进行ACK应答,如果已经存在数据,通过序列号进行判断数据是否存在,那么就直接丢弃,仍旧发送ACK应答。

连接管理

就是指三次握手和四次挥手。

流量控制

流量控制就是让发送速率不要过快,让接收方可以来得及接收,利用滑动窗口机制可以实施流量控制。原理是运用TCP报文段中的窗口大小字段来控制,发送方的发送窗口不可以大于接收方的发回的窗口大小。如果接收方没有足够的缓存使用,就会发送零窗口大小的报文,这时发送方将发送窗口设置为0。停止发送数据,等之后接收方有足够的缓存时,发送非零窗口大小的报文,而此时这个报文在中途丢失,那发送方的发送窗口就一直为零导致死锁。

解决的办法就是,TCP为每一个连接设置一个持续计时器,只要TCP的一方收到对方的零窗口通知,就启动改计时器,周期性的发送一个零窗口探测报文段,对方就在确认这个报文段的时候给出现在的窗口大小。

 

拥塞控制

包括四部分 慢启动 拥塞避免 快重传 快恢复

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值