TCP可靠性和提高性能的机制

确认应答机制

  • TCP将每个字节的数据都进行了编号,即为序列号;
  • 每一个ACK都带有对应的确认序列号,意思是告诉发送者,我已经收到了哪些数据,下一次你从哪里开始发。

超时重传机制

  • 主机A发送数据给主机B之后,可能因为网络拥堵等原因,数据无法到达主机B;
  • 如果主机A在一个特定时间间隔内没有收到B发来的确认应答,就会进行重发。

也有可能是ACK丢失了,此时主机A仍会重发,主机B利用序列号来达到去重的目的。

超时时间设置:

  • 太长可能会影响整体的重传效率,
  • 太短可能会频繁发送重复的包;
  • 会动态计算这个超时时间。500ms,再得不到应答就以指数形式增长500*2^n;
  • 累计到一定重传次数,TCP认为网络或者对端主机出现异常,强制关闭连接。

连接管理机制

就是三次握手,四次挥手的机制。参考我的另外一篇博客:三次握手,四次挥手

滑动窗口

  • 一收一发是串行的,效率低下;TCP在发送报文时是批量化的发送,批量化的响应。滑动窗口解决传输效率的问题;
  • 窗口大小:无需等待确认应答而可以继续发送数据的最大值,滑动窗口的大小必须小于等于对方的接收缓冲区剩余空间的大小;
  • 收到一个确认报文,滑动窗口就向后移动,发送下一个报文;
  • 发送缓冲区来记录哪些数据还没有应答,只有确认应答过的数据,才能从发送缓冲区删掉;滑动窗口在发送缓冲区中;
  • 窗口越大,则网络的吞吐率越高;
  • 窗口前:已经发送,并且已经收到确认;窗口内:已经发送出去的报文,没有收到确认;窗口后:还没有发送的报文。
  • 丢失报文的情况:
  • 丢掉ACK:可以通过后续的ACK进行确认,后续的ACK表示这之前的报文我已近全收到了;(最大的ACK)
  • 数据报直接丢了:会有三次重复的确认应答,如果发送端主机连续三次收到了同样的ACK应答,就会将相应的报文进行重传࿰
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值