TCP如何保证可靠连接

TCP如何保证可靠连接

首先应当明确TCP在数据传输过程中可能存在的影响可靠性的原因,主要存在以下几个问题

  1. 数据发生损坏
  2. 数据可能不是按顺序到达接受端
  3. 在传输过程中可能存在数据丢失
  4. 接收端返回的Ack丢失,发送端重新发送导致重复

为解决以上几个问题,TCP主要采用以下几个措施

1. 滑动窗口(流量控制)

发送窗口:发送端没有收到接收端回复的Ack的情况下,发送端可以将窗口内连续的数据都发送出去,但是发送的数据在未被接收端确认之前,都会暂时保留,以便在超时重传时重新使用。在收到接收端的Ack后,Ack之前的数据就不需要再保留。

接收窗口:接收端可以对 按序 收到的数据中的最高序号给出确认

发送缓存:

  1. 发送端准备发送的数据
  2. TCP已经发送但是尚未收到确认的数据

接收缓存:

  1. 按序到达的,但尚未被接收应用程序读取的数据
  2. 未按序到达的数据
  • 同一时刻,发送端和接收端的窗口大小不一定相同
  • 对于没有按序到达的数据,TCP通常先临时存放在接收窗口中,等到缺失的数据收到后,再按序交付给上层的应用程序
  • TCP的接收方有累积确认的功能,以减少传输开销

2. 超时重传

TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。

重传时间的选择

TCP采用了一种自适应的算法,简单来讲,就是记录报文发送的时间以及收到相应确认的时间,计算其差值为 报文往返时间RTT,并且RTT会根据每次报文的往返时间不断更新。

3. 拥塞控制

1. 什么是拥塞

在计算机网络中的带宽,交换节点中的缓存和处理机等,都是网络资源,在某段时间,若 对网络中的某一资源的的需求超过了网络所能提供的可用部分,网络的性能就会变坏了,这种情况就叫拥塞。

2. 控制方法

拥塞控制就是防止过多的数据注入到网络中,这样使得网络中的路由器或链路不至于过载,拥塞控制是全局性的过程

流量控制是一个端到端的,点对点通信的过程。

  • 慢开始

由小到大逐渐增大发送窗口

  • 拥塞避免

让拥塞窗口缓慢地增大,即每经过一个往返时间RTT就把发送方地拥塞窗口加1,拥塞窗口按现象规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢的多

  • 快重传

  • 快恢复

4. 校验和

如果接收方校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发送方一致,数据不一定传输成功。

5. 序列号和确认号

序列号: TCP将每个字节的数据都进行了编号,一般情况下序列号Seq为将要传输的数据的第一个编号

序列号的作用:

  1. 通过和Ack相互确认,可以判断接收方是否少接收数据

  2. 保证数据按序到达,每个字节的数据都又编号

  3. 提高效率,可以在多次发送后一次确认

  4. 去除重复的数据,假设接收方收到相同的数据,则丢弃

确认号: TCP收到数据后,期望下一次收到数据的第一个编号

确认号的作用:

  1. 保证数据的可靠性,Ack表示之前的数据都按序到达
  2. 延迟确认,如果连续收到多个字节的数据,只需要回复最终的Ack,降低网络流量
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值