计算机网络协议分析 第13课 TCP第二部分

第7章 TCP

7.3 TCP的流量控制

TCP报文格式

  • 流量控制:发送方根据接收方给定的“窗口尺寸”,来调整发出报文段的大小
  • 全双工:通信双方都有发送缓存和接收缓存,建立连接后,双方可同时发送数据和接收数据

发送缓存

发送缓存
发送缓存包含:

  1. 发送方TCP准备发送的数据
  2. 已发送出去,但尚未收到确认的数据

接收缓存

接收缓存
接收缓存包含:

  1. 按序到达的、已确认但尚未被应用程序提取的数据
  2. 可能失序到达的数据

根据下图梳理TCP数据传输过程
TCP传输数据过程
:如果上图中的第8个报文丢失会造成什么现象?怎么解决?
:因为发送方收到第7个报文后不能发送数据,要一直等待第8个报文的到来才开始送数据。而接收方发出第8个报文后一直在等待数据的到来,却迟迟收不到,形成了死锁现象
发送方过一定时间未收到第8个报文,会发送一个探测报文出去,探测一下现在接收方的窗口值。
接收方送出第8个报文后,过一段时间未收到数据,会重传该报文(有一种特殊情况就是如果发送方已经没有数据发送了,这时接收方一直收不到数据)。

这里的计时器叫做坚持计时器

  1. 发送方TCP为每一个连接设置一个坚持计时器
  2. 当发送方收到接收方的零窗口通告报文,就停止发送数据,并启动坚持计时器
  3. 当计时器到期,发送一个零窗口探测报文段(仅携带1字节数据),接收方在确认时给出了当前窗口值
  • 若窗口不是零,死锁打开
  • 若窗口仍然是零,发送方重置计时器。
  • 计时器最开始的时间是RTO重传时间,重置后翻倍,直至到60s后不再翻倍,直到收到非零窗口通告或连接被终止

7.4 TCP的差错控制

差错
传输出错
丢失
乱序
重复

传输出错:检验和,丢失,不确认,超时重传
丢失:超时重传
乱序:缓存失序报文段,立即确认
重复:丢弃,立即确认

捎带确认

累积确认

累积确认

  • 接收方在确认seq=100报文之前,收到seq=300报文段,则发回ack=500的确认。
  • 收到两个连续报文段立即发送确认,或者等待500ms后发送确认
有丢失的累积确认

有丢失的累积确认
当seq=300的报文段丢失,只能确认第一个报文段

有重复的累积确认

有重复的累积确认

选择确认

选择确认
对失序报文段的单独确认
每个不连续的字节块有两个边界:左边界L和右边界R
TCP选择确认是可选项,在建立TCP连接时协商SACK选项

7.5 TCP的计时器

1 超时重传计时器

作用:解决报文段丢失问题
是个变化值,TCP发送方每发送一个报文段,启动超时重传计时器,到期未收到确认,重传
自适应算法

2 坚持计时器

作用:解决死锁等待问题

3 时间等待计时器

时间等待计时器
作用:解决因最后一个挥手报文段丢失而使TCP连接释放失败的问题
2MSL,一般1个MSL设为2分钟

4 保活计时器

作用:防止TCP连接处于长时间的空闲

  • 每当服务器收到客户的数据,就启动保活计时器
  • 到期没收到客户数据,就发送一个探测报文,连续(间隔75秒)探测10次后关闭这个连接

7.6 TCP首部选项

TCP首部选项

选项结束选项

1字节,用作选项区结束时的填充
只能用作最后一个选项,只能使用一次
选项结束选项

无操作选项

1字节,用作选项和选项之间的填充符
无操作选项

MSS选项

指TCP报文段中数据部分的最大长度
在建立连接极端由双方协商,在连接期间保持不变
MSS选项

窗口扩大选项

窗口尺寸:取值范围0~65535,在高速网络中可能不够用,受到MTU影响
窗口扩大因子:在连接建立阶段确定,在连接期间保持不变
新的窗口大小 = 窗口尺寸 * 2^扩大因子
窗口扩大因子选项

时间戳选项

作用:测量往返时间RTT;防止序号绕回
时间戳选项

允许SACK选项和SACK选项

允许SACK选项和SACK选项

  • 允许SACK选项:在建立连接阶段由双方协商
  • SACK选项:用于数据传输阶段
  • 最多8个数据块

例子:
SACK选项例子

7.7 TCP的拥塞控制

  • TCP发送方维持一个拥塞窗口cwnd,根据网络的拥塞情况调整拥塞窗口的大小
  • TCP发送方判断网络拥塞的依据是重传计时器超时
  • 发送窗口 = MIN (接收方窗口,拥塞窗口)

TCP拥塞控制算法

慢开始

初始swnd=1个MSS,发送方每收到一个ACK,cwnd加1
慢开始

快重传与快恢复

快恢复与快重传
当发送方收到连续三个重复的确认时,执行快恢复算法:

  1. 慢开始门限ssthresh = 当前拥塞窗口 cwnd /2
  2. 新cwnd = 当前ssthresh
  3. 执行拥塞避免算法
拥塞控制策略

若因重传计时器超时,则:

  1. 把门限值ssthresh设置为当前发送窗口值的一半
  2. 把拥塞窗口cwnd重置为1
  3. 再次进行慢开始阶段

若因受到连续3个重复ACK时,则:

  1. 把门限值ssthresh设置为当前发送窗口值的一半
  2. 把拥塞窗口cwnd设置为新的ssthresh值
  3. 进入拥塞避免阶段

拥塞控制

7.8 TCP攻击

慢速拒绝服务LDoS

  1. 周期性地突发短时高强度攻击数据流,导致正常TCP流大量丢包,使得拥塞控制机制被迫转入满开始
  2. 进入慢开始,停止攻击
  3. 当TCP流恢复至即将正常是,下一个LDoS攻击周期开始,导致下一轮拥塞控制
  4. 如此反复,使TCP流反复进入“拥塞避免”和“拥塞恢复”状态,导致TCP流的吞吐量大大下降

LDoS攻击的三个参数

**T:攻击周期。**基于重传超时(RTO)设定T的值。若保持每轮T=RTO,则网络会一直:拥塞控制–>恢复–>再拥塞
**t:攻击时间。**一个周期内只会存在短时间的高强度攻击流,大部分时间保持静默
**R:攻击速率。**必须大于瓶颈带宽,否则网络不会因攻击流而拥塞

缺一道例题,下次补充

上一课:第12课 TCP第一部分
下一课:第14课 SCTP

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值