中国斜学我术大学 University of Science and Technology of China 计算机网络(第7版) 第5章运输层(2) 中国科学技术大学曾凡平
计算机网络 (第 7 版) 第 5 章 运输层(2) 中国科学技术大学 曾凡平
第5章运输层(2)内容 ·5.6TCP可靠传输的实现 ·5.7TCP的流量控制 ·5.8TCP的拥塞控制 ·5.9TCP的运输连接管理 运输层(1) 3
第 5 章 运输层(2)内容 • 5.6 TCP 可靠传输的实现 • 5.7 TCP的流量控制 • 5.8 TCP 的拥塞控制 • 5.9 TCP 的运输连接管理 运输层(1) 3
5.6TCP可靠传输的实现 ·5.6.1以字节为单位的滑动窗口 ·5.6.2超时重传时间的选择 ·5.6.3选择确认SACK 运输层(1) 4
5.6 TCP 可靠传输的实现 • 5.6.1 以字节为单位的滑动窗口 • 5.6.2 超时重传时间的选择 • 5.6.3 选择确认 SACK 运输层(1) 4
5.6.1以字节为单位的滑动窗口 ·TCP的滑动窗口是以字节为单位的。 0于 现假定A收到了B发来的确认报文段,其中窗 口是20字节,而确认号是31(这表明B期望收 到的下一个序号是31,而序号30为止的数据已 经收到了)。 ·根据这两个数据,A就构造出自己的发送窗口, 运输层(1) 5
5.6.1 以字节为单位的滑动窗口 • TCP 的滑动窗口是以字节为单位的。 • 现假定 A 收到了 B 发来的确认报文段,其中窗 口是 20 字节,而确认号是 31(这表明 B 期望收 到的下一个序号是 31,而序号 30 为止的数据已 经收到了)。 • 根据这两个数据,A 就构造出自己的发送窗口, 运输层(1) 5
根据B给出的窗口值,A构造出自己的发送窗口。 。 发送窗口表示:在没有收到B的确认的情况下,A可以连续把窗 口内的数据都发送出去。 ·发送窗口里面的序号表示允许发送的序号。 显然,窗口越大,发送方就可以在收到对方确认之前连续发送更 多的数据,因而可能获得更高的传输效率。 后沿 前沿 →前移 义收缩←一→前移 A的发送窗口=20 2国2☑2☒2国3回313233343536373839404142434454647484950515253545556 已发送并 不允许发送 收到确认 允许发送的序号 B期望 收到的序号 TCP标准强烈不赞成 发送窗口前沿向后收缩 运输层(1) 6
前移 已发送并 不允许发送 收到确认 A 的发送窗口 = 20 允许发送的序号 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 B 期望 收到的序号 后沿 前沿 前移 收缩 • 根据 B 给出的窗口值,A 构造出自己的发送窗口。 • 发送窗口表示:在没有收到 B 的确认的情况下,A 可以连续把窗 口内的数据都发送出去。 • 发送窗口里面的序号表示允许发送的序号。 • 显然,窗口越大,发送方就可以在收到对方确认之前连续发送更 多的数据,因而可能获得更高的传输效率。 TCP 标准强烈不赞成 发送窗口前沿向后收缩 运输层(1) 6
A发送了11个字节的数据 A的发送窗口位置不变 可用窗口 2国2☑28293@3132333435363738394041424344454647484950515253545556 已发送并 不允许发送 收到确认 已发送但未收到确认 允许发送但尚未发送 P2 P2 P3 B的接收窗口 262☑282303132333435363738394041424344454647484950515253545556 已发送确认 不允许接收 并交付主机 允许接收 接收窗口内的序号(31~50》 未按序收到 是允许接收的序号。 P3-P1=A的发送窗口( 又称为通知窗口) P2-P1=已发送但尚未收到确认的字节数 P3一P2=允许发送但尚未发送的字节数(又称为可用窗口) 运输层(1)
已发送并 不允许发送 收到确认 A 的发送窗口位置不变 允许发送但尚未发送 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 已发送但未收到确认 56 P1 P2 P3 已发送确认 不允许接收 并交付主机 B 的接收窗口 允许接收 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 未按序收到 可用窗口 A 发送了 11 个字节的数据 P3 – P1 = A 的发送窗口(又称为通知窗口) P2 – P1 = 已发送但尚未收到确认的字节数 P3 – P2 = 允许发送但尚未发送的字节数(又称为可用窗口) 接收窗口内的序号(31 ~ 50) 是允许接收的序号。 运输层(1) 7
A收到新的确认号,发送窗口向前滑动 A的发送窗口向前滑动 262☑282四3@B闰32333435363738394041424344454647484950515253545556 已发送并收到确认 已发送 允许发送但尚未发送 不允许 发送 P1 但未收到确认 P2 P3 B的接收窗口向前滑动 262☑282国30β闰B23☒3435363738394041424344454647484950515253545556 已发送确认 不允许 并交付主机 允许接收 接收 未按序收到 先存下,等待缺少的 数据的到达 运输层(1) 8
允许发送但尚未发送 A 的发送窗口向前滑动 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 已发送并收到确认 不允许 已发送 发送 但未收到确认 56 P1 P2 P3 允许接收 B 的接收窗口向前滑动 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 已发送确认 并交付主机 不允许 接收 56 未按序收到 A 收到新的确认号,发送窗口向前滑动 先存下,等待缺少的 数据的到达 运输层(1) 8
A的发送窗口内的序号都已用完, 但还没有再收到确认,必须停止发送。 A的发送窗口已满,有效窗口为零 262☑2图293@313233343536373839404幻4243444546474849505152 53 545556 已发送并收到确认 不允许 已发送但未收到确认 发送 PI P23 发送窗口内的序号都属于已发送但未被确认 运输层(1) 9
不允许 发送 已发送并收到确认 A 的发送窗口已满,有效窗口为零 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 已发送但未收到确认 56 P1 P2 P3 A 的发送窗口内的序号都已用完, 但还没有再收到确认,必须停止发送。 发送窗口内的序号都属于已发送但未被确认 运输层(1) 9
发送缓存 发送方的应用进程把字节流写入TCP的发送缓存。 发送窗口通常只是发 送缓存的一部分。 发送应用程序 TCP 发送缓存 发送窗口 已发送 最后被确认 最后发送 序号增大 的字节 的字节 运输层(1) 10
发送缓存 最后被确认 的字节 发送应用程序 发送缓存 最后发送 的字节 发送窗口 已发送 TCP 序号增大 发送方的应用进程把字节流写入 TCP 的发送缓存。 发送窗口通常只是发 送缓存的一部分。 运输层(1) 10
接收缓存 接收方的应用进程从TCP的接收缓存中读取字节流。 接收应用程序 TCP 接收缓存 下一个读取 的字节 接收窗口 已收到 下一个期望收到的 序号增大 字节(确认号) 运输层(1) 11
接收缓存 接收应用程序 已收到 接收窗口 TCP 接收缓存 下一个读取 的字节 下一个期望收到的 序号增大 字节(确认号) 接收方的应用进程从 TCP 的接收缓存中读取字节流。 运输层(1) 11