第7章传输控制协议TCP
要求:
1. 掌握TCP的可靠性机制:确认、重传、序号;
2. 掌握TCP的流控和提高传输效率策略:滑动窗口机制;
3. 掌握TCP连接的建立与关闭协议:三次握手;
4. 掌握TCP的报文段格式;
5. 掌握TCP的拥塞控制技术;
6. 掌握TCP避免糊涂窗口综合症的技术;
7. 了解紧急数据发送和强迫数据发送。
7.1 概述
要实现可靠的数据流传输服务,
必须解决哪几个问题?
1.可靠性:
①防丢失:确认与重传;
②防重复:报文段序号;
2.传输效率、流量控制:滑动窗口机制;
3.拥塞控制:加速递减与慢启动技术;
4.建立连接:三次握手协议;
5.关闭连接:改进的三次握手协议。
可靠传输服务有哪些特点?
①面向数据流;
②虚电路连接;
③有缓冲的传输;
④无结构的数据流;
⑤全双工连接。
7.2 提供可靠性
①接收方收到
数据接收方
两个问题:
定时器时限设置多长?
2. 防重复–可捎带的累计确认技术
①为每一分组赋予序号。
②确认时也指明确认哪个分组。
③序号同时保证了分组间的正确顺序。
3. RTT与重传定时器
问题:超时重传,如何设置定时器的时限?
两个概念:
①RTT:往返时间,报文段发出到收到确认信息间的时间段。
②自适应重传算法:监视每个连接的性能,由此推算出合适的定时时限。当连接的性能变化时,随时修改定时时限。
重传定时时限的计算方法:
①早期的方法
②改进的方法
③Karn算法和定时器补偿
(1)早期的方法
R:RTT的估计值
M:本次测量的RTT值
RT0:定时时限
修改估计值:R ←αR + (1-α)M
(0≤α<1,通常取α=0.9)
计算时限:RT0 = βR
(β早期取2,后改为4)
缺陷:在RTT变化较大的场合,说明网络某处处于拥塞状态,但上述方法对此反映不敏感,从而造成不必要的重传,进一步加重网络负担。
(2)改进的方法
R:
M:本次测量的RTT值
RT0:定时时限
Diff:差值
Dev :平均偏差的估计值
Diff ←M -R
R ←R + δ*Diff
Dev ←Dev +ρ*(|Diff| -Dev) (Dev RT0 ←R +η*Dev
δ、ρ在0—1之间,通常取:
δ= 1/23,ρ= 1/22,η= 22
(3)Karn算法和定时器补偿
确认二义性:
哪一次传输的确认无法确定。
结果:RTT样本值无法使用;
Karn算法:
思想:当超时重传发生时,不再更新
忽略重传样本。
定时器补偿:
超时重传发生,加大定时时限:
(γ通常取2,即指数避退)。
对重传分组的后续分组,定时时限不变,直到获得一个新的有效样本时再更改时限值。
7.3 传输效率和流量控制-滑动窗口机制1.一般的滑动窗口机制
的确认未到时,则暂停发送。
不能发送
3. TCP端到端流量控制-窗口大小可变技术
时机:
发送窗口,初
7.4 糊涂窗口综合症SWS
1.什么是SWS?
接收方的小窗口通告造成发送方发送一系列小的报文段,严重浪费网络带宽。
2.启发式的避免策略:
接收方:
(1)避免小窗口通告,在零窗口通告之后,只在可用缓冲区显著增加(缓冲区空间的一半或一个MSS)后才发送新的窗口通告
(2)推迟确认(最多500ms),
SWS策略所需的尺寸时,不确认。
为了使发送方正确估计RTT,至少每隔一个报文段要进行正常的确认。
发送方:
Nagle算法:
(2)当缓冲区中数据不足一个报文段,则推迟发送。等到一个确认来到(确认触发)时,发送缓冲区中的小报文段。
问题:可能出现死锁吗?
确认丢失。
3.说明
①Nagle算法的两个优点:
自适应:确认到达得越快,数据也就发送得越快;
计算简单:不需要定时器。
②可关闭Nagle算法,应用程序接口一般提供选项TCP-NODELAY来关闭Nagle算法。
7.5 TCP拥塞控制技术
拥塞:交换节点(如路由器)数据报负载过重的现象。
回顾:IP层的拥塞控制技术:
(ICMP源站抑制报文),是一种被动机制。TCP拥塞控制的必要性:在TCP
时延增加,这又会造成超时重传,控制不当会进一步加重拥塞。
TCP采用了一种主动控制机制。
7.6 TCP报文
紧急指针
首部长度:
序号:
确认号:希望接收的对方下一报文段序号
到的数据字节序+1)
说明:
(1)序号和确认序号在一起使得确认可捎带进行。
(2)TCP采用累计确认策略。
问题:采用累计确认,确认丢失不一迫使发送方重传,为什么?
(3) TCP采用经受时延的确认(时延一般为
缺点:发送方无法收到所有成功传输的报文段的确认信息,对往返时间样本的精确测量带来影响。