1、南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,1,第五章 运输层,5.4 可靠传输的工作原理 5.5 TCP报文段的首部格式,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,2,学习目标,理解理解停止等待协议 理解连续ARQ协议 了解TCP报文段的首部格式,5.4.1 停止等待协议,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,4,请注意,在发送完一个分组后,必须暂时保留已发送的分组的副本。 分组和确认分组都必须进行编号。 超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。,确认丢失和确认迟到,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,6,可靠通信的实现
2、,使用确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。 这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。 ARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,7,信道利用率,停止等待协议的优点是简单,但缺点是信道利用率太低。,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,8,信道的利用率 U,(5-3),南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,9,流水线传输,发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。 由于
3、信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,10,5.4.2 连续 ARQ 协议,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,11,累积确认,接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,表示:到这个分组为止的所有分组都已正确收到了。 优点是:容易实现,即使确认丢失也不必重传。 缺点是:不能向发送方反映出接收方已经正确的收到所有分组的信息。,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,12,Go-back-N(回退 N),如果发送方发送了前 5 个分
4、组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。 这就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。 可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,13,TCP 可靠通信的具体实现,TCP 连接的每一端都必须设有两个窗口:一个发送窗口和一个接收窗口。 TCP 的可靠传输机制用字节的序号进行控制,TCP 所有的确认也都是基于序号。 TCP 两端的四个窗口经常处于动态变化之中。 TCP连接的往返时间 R
5、TT 也不是固定不变的,需要使用特定的算法估算较为合理的重传时间。,TCP 首部,20 字节的 固定首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,32 位,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,TCP 数据部分,TCP 首部,TCP 报文段,IP 数据部分,IP 首部,发送在前,5.5 TCP 报文段的首部格式,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序
6、号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,源端口和目的端口字段各占 2 字节。端口是运输层与应用层的服务接口,实现了运输层的复用和分用。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,序号字段占 4 字节。TCP 连接传送的数据流中的每一个字节都编上
7、一个序号。序号字段的值指本报文段所发送的数据的第一个字节的序号。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,确认号字段占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F
8、I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,数据偏移(即首部长度)占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”单位是 32 位字(以 4 字节为计算单位)。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,保留字段占 6 位,保留为今后使用,目前应置为 0
9、。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,紧急 URG 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y
10、N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,确认 ACK 只有当 ACK 1 时,确认号字段才有效。当 ACK 0 时,确认号无效。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,推送 PSH (PuSH) 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了再向上交付。,
11、TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,复位 RST (ReSeT) 当 RST 1 时,表明 TCP 连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F
12、 I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,同步 SYN 同步 SYN = 1 ,表示这是一个连接请求或连接接受报文。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,终止 FIN (FINis) 用来释放一个连接。FIN 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。,TCP 首部,2
13、0 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,窗口字段 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 3
14、1,填 充,检验和 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,紧急指针字段 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,
15、检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,选项字段 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”,MSS (Maximum Segment Size) 是 TCP 报文段中的数据字段的最大长度。 TCP 报文段 = TCP首部 + 数据字段,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,30,其他选项,
16、窗口扩大选项 占 3 字节,其中有一个字节表示移位值 S。新的窗口值等于TCP 首部中的窗口位数增大到(16 + S),相当于把窗口值向左移动 S 位后获得实际的窗口大小。 时间戳选项占10 字节,其中最主要的字段是时间戳值字段(4 字节)和时间戳回送回答字段(4 字节)。 选择确认选项在后面的 5.6.3 节介绍。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,填充字段 这是为了使整个首部长度是 4 字节的整数倍。,南理工泰州科技学院计算机科学与技术系 主讲:吴许俊,32,作业,5-18 5-30,