tcp保证可靠性的一些方式

tcp是面向连接的,可靠的字节流传输协议。

传输的另一方无法知道发送方传输了多少字节的内容。

5元组确定一个session:发送发ip,端口,接收方ip,端口,协议号

Nagle算法:当接收的一方收到数据后,并不会立即返回ack,而会等待200毫秒后回复;

  • 发送放在没有收到一个分组的返回ack时,不会发送下一个分组;

  • 而是在这段时间内,会收集零散的tcp报文,在收到ack后一起发送。

好处:在发送大量小数据报的时候,能够减少发送的次数。

坏处:在某些情况下,会造成极大的时延。

TCP可靠性传输的方式
TFTP协议:停止等待协议,在未收到ack之前不会发送下一个分组。(由于效率低tcp未使用)

tcp采用滑动窗口的方式。

一般情况下采用隔一个报文进行一次确认。

流量控制:快的发送方和慢的接收方。(两个终端)

采用滑动窗口的机制,当 接收通过设置报文中的窗口大小来通知发送方的发送数据的多少。

  • 滑动窗口的左边沿:ack中的相对序号(ack序号-初始号)
  • 滑动窗口的右边沿:ack+win

拥塞控制:互联网传输速度较慢的情况。(取决于中间网络的阻塞成都)

采用慢启动的方式。慢启动为发送发添加另一个窗口:拥塞窗口cwnd

**拥塞窗口是发送方使用的流量控制,而通告窗口是接收方发送的流量控制。**发送方取拥塞窗口和通告窗口中较小的一个为发送上限。

慢启动算法:

  • 增长:

    • 拥塞窗口的增长方式是以指数级增长的。慢动门限为65535
  • 增长上限

    • 当某些节点上达到了互联网的容量,发送方检测到丢包时,慢启动门限设置为当前窗口的一般。

拥塞避免算法:

  • 增长:
    • 线性增长方式,在一个RTT时间内,窗口增加1.

慢启动和拥塞避免进行拥塞控制:

  • 开始时kwnd设置为1,使用慢启动方法;
  • 当kwnd大于慢启动门限的时候,进行拥塞避免算法;
  • 若发生拥塞,慢启动门限设置为当前窗口(拥塞窗口和通告窗口的)的一半;若是超时引发的拥塞,则cwnd设置为1,进入慢启动阶段;若是收到重复的ack引发的拥塞,采用快速重传和快速恢复算法。

分组丢失的两种指示:超时和收到三个重复的ack

快重传:接收端收到3个及以上的重复的ack时,很有可能是有一个报文丢失,就开始重传丢失的报文段,而无需等待超时定时器溢出。

快速恢复:收到3个重复的ack时,发送端会将发送速度设置到慢启动门限,然后使用拥塞避免算法进行传输。(原因:因为收到3个重复的ack时,网络状态可能还能传输,只是某个数据报丢失,不想采用慢启动这种方式来减少数据流。)

**定时器:**分为4中

重传计时器:

  • 发送方在一段时间内没有收到接收方的确认报文时,进行重传

坚持定时器:

  • 当ack中win窗口大小为0后,发送端持续进行探测窗口大小。(5,6,12,24,48,60)

保活定时器:

  • 在双方都不进行数据交换时,双方会发送探测报文。(一般情况下由应用程序来完成),每75秒发送一个。

Time_wait计时器:

  • 在断开连接过程中,客户端进入time_wait状态,并等待两个最大报文存活时间,防止服务端无法无法关闭的情况。

5秒发送一个。

Time_wait计时器:

  • 在断开连接过程中,客户端进入time_wait状态,并等待两个最大报文存活时间,防止服务端无法无法关闭的情况。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值