可靠的数据流传输服务
—— TCP:传输控制协议
TCP的服务
? 端到端的面向连接的服务
? 可靠的连接建立和较好的连接释放
? 完全可靠性
? 全双工通信
? 流接口
?应用程序将数据流发送给 tcp
?在 TCP流中,每个数据字节都被编号(序号)
?Tcp层将数据流分成数据段并以序号来标识
可靠的建立连接:三次握手协议
滑 动 窗 口
释放连接:改进的三次握手协议
提供可靠性
? 防丢失:确认,超时后重传;带重传的
肯定确认技术
? 收到,发确认( ACK)
? 设定时器,源端在时限内没有收到 ACK,则
重发
? 防重复 &防乱序:给数据赋予序号
传输效率和流量控制
? 使用滑动窗口机制
? 收发双方都有一个缓冲区,相当于窗口
? TCP端到端流量控制技术:窗口大小可变
技术
? 可随时改变窗口大小,确认时告诉源端接收
方现在的缓冲区大小(窗口通告),以便源
端扩大或缩小它的窗口大小。
? 可用 0窗口通告使发送方停止发送
TCP报文格式
0 31位3 10 15
源端口 目的端口
发送序号
18
确认序号
校验和
选项和填充( ?0 )
首部
长度
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
保留 窗口大小
紧急指针
数据(可选)
TCP消息头部字段
? 源端口 /目的端口,TSAP地址
? 发送序号:所发送的数据的第一字节的序号
? 确认序号:期望收到的数据(下一个消息)的第一字节的序号
? 首部长度:单位为 32位
? 控制字段:
紧急位( URG),1表示加急数据,此时紧急指针的值为加急
数据的最后一个字节的序号
确认位( ACK),1表示确认序号字段有意义
急迫位( PSH),1表示请求接收端的传输实体尽快交付应用层
重建位( RST),1表示出现严重差错,连接必须释放、重建
同步位( SYN),SYN=1,ACK=0 表示连接请求消息
SYN=1,ACK=1 表示同意建立连接消息
终止位( FIN),1表示数据已发送完,要求释放连接
? 窗口大小:通知发送方接收窗口的大小,即最多可以发送的字节数
? 校验和(必选):覆盖范围为,12B的伪首部;首部;数据
TCP拥塞控制
? 拥塞:交换节点数据报负载过重的现象。此时会丢失
报文。
? TCP的拥塞控制:
? 拥塞窗口,TCP为每个连接保留一个拥塞窗口值,其大小以字
节为单位。但它的增加或减小以 MSS(最大报文段长度)为单

? TCP计算的发送窗口 =min(接收端窗口通告,拥塞窗口 )
? 加速递减:当出现超时重传时,立即将拥塞窗口大小减半,对
保留在窗口中的数据,将重传定时器加倍。(指数级递减)
? 慢启动:拥塞解除后,每收到一个确认,拥塞窗口增加一个
MSS,当拥塞窗口恢复到原大小的一半时,进入, 拥塞避免,
状态,即窗口中所有报文段的确认都收到后,才将拥塞窗口增
加一个 MSS。(算术级增加,防止振荡)
网络层对改善 TCP拥塞控制的支持
? 如果不提供支持机制,使用 尾部丢弃,
当队列满时丢掉每一个到来的报文,会
造成 TCP全局性同步,即大量的 TCP连接
只是为了丢掉以两个报文而进入了慢启
动状态。
? 随机早期丢弃( RED):
不丢弃 随机丢弃 全部丢弃
Tmin Tmax
接收队列