7?运输层 第7章 71运输层协议概述 7.2TCPP体系中的运输层 运输层 72.1运输层中的两个协议 722端口的概念 *7.3用户数据报协议UDP 7.3.1UDP概述 7.32UDP用户数据报的首部格式 ?7?运输层(续) 7.1运输层协议概述 74传输控制协议TCP 从通信和信息处理的角度看,运输层向它上面 74.1TCP概述 的应用层提供通信服务,它属于面向通信部分 742TCP报文段的首部 的最高层,同时也是用户功能中的最低层 74.3TCP的数据编号与确认 面向信息处理 应用层 744TCP的流量控制与拥塞控制 用户功能 *745TCP的重传机制 运输层 7.46采用随机早期丢弃RED进行拥塞控制 网络层 74.7TCP的运输连接管理 据链路层 网络功能 748TCP的有限状态机 物理层 运输层为相互通信的应用进程提供了逻辑通信 应用进程之间的通信 应用进程 端口运输层提供应用进程间的逻辑通信 两个主机进行通信实际上就是两个主机中的应 用进程互相通信 ●应用进程之间的通信又称为端到端的通信。 运输层的一个很重要的功能就是复用和分用 应用层不同进程的报文通 到运输层,再往下就共用网络层提供的服务。 路由器1 运输层提供应用进程间的逻辑通 卩协议的作用范围 向传送数据。但事实上这两个运输层之间并 运输层协议TCP和UDP的作用范围 没有一条水平方向的物理连接
1 ? 7 ? 运输层 *7.1 运输层协议概述 *7.2 TCP/IP 体系中的运输层 7.2.1 运输层中的两个协议 7.2.2 端口的概念 *7.3 用户数据报协议 UDP 7.3.1 UDP 概述 7.3.2 UDP 用户数据报的首部格式 ? 7 ? 运输层(续) 7.4 传输控制协议 TCP *7.4.1 TCP 概述 *7.4.2 TCP 报文段的首部 *7.4.3 TCP 的数据编号与确认 *7.4.4 TCP 的流量控制与拥塞控制 *7.4.5 TCP 的重传机制 7.4.6 采用随机早期丢弃 RED 进行拥塞控制 *7.4.7 TCP 的运输连接管理 7.4.8 TCP 的有限状态机 7.1 运输层协议概述 l 从通信和信息处理的角度看,运输层向它上面 的应用层提供通信服务,它属于面向通信部分 的最高层,同时也是用户功能中的最低层。 物理层 网络层 运输层 应用层 数据链路层 面向信息处理 面向通信 用户功能 网络功能 运输层为相互通信的应用进程提供了逻辑通信 5 4 3 2 1 运输层提供应用进程间的逻辑通信 主机 A 主机 B 应用进程 应用进程 路由器 1 路由器 2 AP1 WAN LAN2 AP2 AP3 AP4 IP 层 LAN1 AP1 AP2 AP4 端口 端口 5 4 3 2 1 IP 协议的作用范围 运输层协议 TCP 和 UDP 的作用范围 AP3 应用进程之间的通信 l 两个主机进行通信实际上就是两个主机中的应 用进程互相通信。 l 应用进程之间的通信又称为端到端的通信。 l 运输层的一个很重要的功能就是复用和分用。 应用层不同进程的报文通过不同的端口向下交 到运输层,再往下就共用网络层提供的服务。 l “运输层提供应用进程间的逻辑通信”。“逻辑通 信”的意思是:运输层之间的通信好像是沿水平 方向传送数据。但事实上这两个运输层之间并 没有一条水平方向的物理连接
运输层协议和网络层协议的主要 运输层的主要功能 应用进程 输层为应用进程之间提 端的逻辑通信 (但网络层是为主机之间提供逻辑通信) ●运输层还要对收到的报文进行差错检测 因特网 运输层需要有两种不同的运输协议,即面向连 接的TCP和无连接的UDP。 cP和UDP协议的作用范围 运输层与其上下层之间的关系的OSI 输层向上提供可靠的和不可靠的逻 表示法 辑通信信道 主机A 层 应用层 向《应用届实体 应用层实体 层接口 全双工可靠信道 运输实体一-运的协议}一运输实体1运输层 使用TcP协议 使用UDP协议 屈接口 网络层服务访问点 或网际层 72TCP/P体系中的运输层 7.21运输层中的两个协议 TCP与UDP TcPP的运输层有两个不同的协议: 两个对等运输实体在通信时传送的数据单位叫作 1)用户数据报协议UDP 运输协议数据单元 TPDU (Transport Protocol (User Datagram Protocol) Data Unit) (2)传输控制协议TCP TCP传送的数据单位协议是TCP报文段 (Transmission Control Protocol) UDP传送的数据单位协议是UDP报文或用户数 据报
2 运输层协议和网络层协议的主要 区别 2 应用进程 … 2 2 应用进程 … 2 IP 协议的作用范围 (提供主机之间的逻辑通信) TCP 和 UDP 协议的作用范围 (提供进程之间的逻辑通信) 因 特 网 运输层的主要功能 l 运输层为应用进程之间提供端到端的逻辑通信 (但网络层是为主机之间提供逻辑通信)。 l 运输层还要对收到的报文进行差错检测。 l 运输层需要有两种不同的运输协议,即面向连 接的 TCP 和无连接的 UDP。 运输层与其上下层之间的关系的 OSI 表示法 运输实体 运输协议 运输实体 运输层 层接口 运输服务用户 (应用层实体) 运输服务用户 (应用层实体) 网络层 层接口 (或网际层) 应用层 主机 A 主机 B 运输层服务访问点 TSAP 网络层服务访问点 NSAP 运输层向上提供可靠的和不可靠的逻 辑通信信道 应 用 ? 层 运 输 层 发 送 进 程 接 收 进 程 接 收 进 程 数据 数据 全双工可靠信道 数据 数据 使用 TCP 协议 使用 UDP 协议 不可靠信道 2 2 2 2 发 送 进 程 TCP/IP的运输层有两个不同的协议: (1) 用户数据报协议 UDP (User Datagram Protocol) (2) 传输控制协议 TCP (Transmission Control Protocol) 7.2 TCP/IP 体系中的运输层 7.2.1 运输层中的两个协议 l 两个对等运输实体在通信时传送的数据单位叫作 运输协议数据单元 TPDU (Transport Protocol Data Unit)。 l TCP 传送的数据单位协议是 TCP 报文段 (segment) l UDP 传送的数据单位协议是UDP 报文或用户数 据报。 TCP 与 UDP
TCP/P体系中的运输层协议 TCP与UDP UDP在传送数据之前不需要先建立连接。对 方的运输层在收到UDP报文后,不需要给出 输层 任何确认。虽然UDP不提供可靠交付,但在 某些情况下UDP是一种最有效的工作方式。 TCP则提供面向连接的服务。TCP不提供广 与各种网络接口 播或多播服务。由于TCP要提供可靠的、面 向连接的运输服务,因此不可避免地增加了许 多的开销。这不仅使协议数据单元的首部增大 很多,还要占用许多的处理机资源 还要强调两点 722端口的概念 ●运输层的UDP用户数据报与网际层的P数据报 端口就是运输层服务访问点TSAP。 有很大区别。P数据报要经过互连网中许多路 由器的存储转发,但UDP用户数据报是在运输 其数据通过端口向下交付给运输层,以及让运输 层的端到端抽象的逻辑信道中传送的。 层知道应当将其报文段中的数据向上通过端口交 TCP报文段是在运输层抽象的端到端逻辑信道 付给应用层相应的进程 中传送,这种信道是可靠的全双工信道。但这 从这个意义上讲,端口是用来标志应用层的进 样的信道却不知道究竟经过了哪些路由器,而 这些路由器也根本不知道上面的运输层是否建 立了TCP连接。 端口在进程之间的通信中所起的作用 端口 接收方 应用进程 应用进程 ●端口用一个16bt端口号进行标志。 ●端口号只具有本地意义,即端口号只是为 TCP复 TcP分用 了标志本计算机应用层中的各进程。在因 特网中不同计算机的相同端口号是没有联 TcP报文段 系的。 IP分用
3 TCP/IP 体系中的运输层协议 UDP TCP IP 应用层 与各种网络接口 运输层 TCP 与 UDP l UDP 在传送数据之前不需要先建立连接。对 方的运输层在收到 UDP 报文后,不需要给出 任何确认。虽然 UDP 不提供可靠交付,但在 某些情况下 UDP 是一种最有效的工作方式。 l TCP 则提供面向连接的服务。TCP 不提供广 播或多播服务。由于 TCP 要提供可靠的、面 向连接的运输服务,因此不可避免地增加了许 多的开销。这不仅使协议数据单元的首部增大 很多,还要占用许多的处理机资源。 还要强调两点 l 运输层的UDP用户数据报与网际层的IP数据报 有很大区别。IP数据报要经过互连网中许多路 由器的存储转发,但UDP用户数据报是在运输 层的端到端抽象的逻辑信道中传送的。 l TCP 报文段是在运输层抽象的端到端逻辑信道 中传送,这种信道是可靠的全双工信道。但这 样的信道却不知道究竟经过了哪些路由器,而 这些路由器也根本不知道上面的运输层是否建 立了 TCP 连接。 7.2.2 端口的概念 l 端口就是运输层服务访问点 TSAP。 l 端口的作用就是让应用层的各种应用进程都能将 其数据通过端口向下交付给运输层,以及让运输 层知道应当将其报文段中的数据向上通过端口交 付给应用层相应的进程。 l 从这个意义上讲,端口是用来标志应用层的进 程。 端口在进程之间的通信中所起的作用 应 用 层 运 输 层 网 络 层 TCP 报文段 UDP 用户数据报 应用进程 TCP 复用 222 IP 复用 UDP 复用 222 TCP 报文段 UDP 用户数据报 222 222 应用进程 端口 端口 TCP 分用 UDP 分用 IP 分用 IP 数据报 IP 数据报 发送方 接收方 端口 l端口用一个 16 bit 端口号进行标志。 l端口号只具有本地意义,即端口号只是为 了标志本计算机应用层中的各进程。在因 特网中不同计算机的相同端口号是没有联 系的
两类端口 DP使用的熟知端口号 一类是熟知端口,其数值一般为0-1023 一种新的应用程序出现时,必须为它指派 熟知端口 域名服务 另一类则是一般端口,用来随时分配给请求通 信的客户进程 下载引导程序你息的客户机端 TCP常用的熟知端口号 插口( socket) TCP使用“连接《(而不仅仅是“端口")作为最基本 文件传输协议《数据连接 的抽象,同时将TCP连接的端点称为插口 文件传输协议《控制连楼) ( socket),或套接字、套接口 ●插口和端口、|P地址的关系是 P地址 超文本传输协议 远程过程调用 插口( socke13162313 同一个名词 socket 73用户数据报协议UDP 有多种不同的意思 73.1UDP概述 ·应用编程接口AP称为 socket AP,简称为 UDP只在P的数据报服务之上增加了很少一 socket 点的功能,即端口的功能和差错检测的功能。 socket AP|中使用的一个函数名也叫作 socket e 虽然UDP用户数据报只能提供不可靠的交 调用 socket函数的端点称为 socket. 付,但UDP在某些方面有其特殊的优点 调用 socke t函数时其返回值称为 socket描述 ◎发送数据之前不需要建立连扫 符,可简称为 socket s oUDP的主机不需要维持复杂的连接状态表 在操作系统内核中连网协议的 Berkeley实现,称 oUDP用户数据报只有8个字节的首部开销。 为 socket实现 ◎网络出现的拥塞不会使源主机的发送速率降低。这对 某些实时应用是很重要的
4 两类端口 l 一类是熟知端口,其数值一般为 0~1023。当 一种新的应用程序出现时,必须为它指派一个 熟知端口。 l 另一类则是一般端口,用来随时分配给请求通 信的客户进程。 UDP使用的熟知端口号 端口号 服务进程 说 明 下载引导程序信息的服务器端口 53 Name server 域名服务 67 Bootps 68 Bootpc 下载引导程序信息的客户机端口 69 TFTP 简单文件传输协议 111 RPC 远程过程调用 123 NTP 网络时间协议 161 SNMP 简单网络管理协议 TCP常用的熟知端口号 端口号 服务进程 说明 文件传输协议(控制连接) 20 FTP 文件传输协议(数据连接) 21 FTP 23 Telnet 虚拟终端网络 25 SMTP 简单邮件传输协议 53 DNS 域名服务器 80 HTTP 超文本传输协议 111 RPC 远程过程调用 插口(socket) l TCP 使用“连接”(而不仅仅是“端口”)作为最基本 的抽象,同时将 TCP 连接的端点称为插口 (socket),或套接字、套接口。 l 插口和端口、IP 地址的关系是: IP 地址 131.6.23.13 端口号 1500 插口(socket) 131.6.23.13, 1500 同一个名词 socket 有多种不同的意思 l 应用编程接口 API 称为 socket API, 简称为 socket。 l socket API 中使用的一个函数名也叫作socket。 l 调用socket 函数的端点称为 socket。 l 调用 socke t函数时其返回值称为 socket描述 符,可简称为socket。 l 在操作系统内核中连网协议的 Berkeley 实现,称 为 socket 实现。 7.3 用户数据报协议 UDP 7.3.1 UDP 概述 l UDP 只在 IP 的数据报服务之上增加了很少一 点的功能,即端口的功能和差错检测的功能。 l 虽然 UDP 用户数据报只能提供不可靠的交 付,但 UDP 在某些方面有其特殊的优点。 ° 发送数据之前不需要建立连接 ° UDP 的主机不需要维持复杂的连接状态表。 ° UDP 用户数据报只有8个字节的首部开销。 ° 网络出现的拥塞不会使源主机的发送速率降低。这对 某些实时应用是很重要的
端口是用报文队列来实现 732UDP用户数据报的 首部格式 TFTP服务器 源|P地址 目的|P地址 入队列 出队列 入队列 伪首部 的端口长度 户数据报首部工二 发送在 UDP用户数据报 首部 吧教燕报 74传输控制协议TCP 741TCP概述 发送端 应用进程 应用进程 保国阻EF 窗口 发送缓存 选项(长度可变 写入数据块 CP报文段 TCP数据部分 匚发送存 卜接收缓存 报文段[报文段上 报段→ P首部 发送TcP报文段 743TCP的数据编号与确认 7.44TCP的流量控制与拥塞控制 1.滑动窗口的概念 TCP协议是面向字节的。TCP将所要传送的报文 TCP采用大小可变的滑动窗口进行流量控制。窗口 看成是字节组成的数据流,并使每一个字节对应于 大小的单位是字节 在TCP报文段首部的窗口字段写入的数值就是当前 ●在连接建立时,双方要商定初始序号。TCP每次 给对方设置的发送窗口数值的上限 发送的报文段的首部中的序号字段数值表示该报文 段中的数据部分的第一个字节的序号 ●发送窗口在连接建立时由双方商定。但在通信的过 程中,接收端可根据自己的资源情况,随时动态地 TcP的确认是对接收到的数据的最高序号表示确 调整对方的发送窗口上限值(可增大或减小)。 认。接收端返回的确认号是己收到的数据的最高序 号加1。因此确认号表示接收端期望下次收到的数 据中的第一个数据字节的序号
5 端口是用报文队列来实现 UDP 端口 51000 UDP 端口 69 2 2 出队列 入队列 出队列 入队列 TFTP 客户 TFTP 服务器 UDP 用户数据报 应 用 层 运 输 层 7.3.2 UDP 用户数据报的 首部格式 伪首部 源端口 目的端口 长 度 检验和 首 部 数 据 源 IP 地址 目的 IP 地址 0 17 UDP长度 IP 数据报 字节 4 4 1 1 2 字节 12 2 2 2 2 发送在前 UDP 用户数据报 首 部 数 据 7.4 传输控制协议 TCP 7.4.1 TCP 概述 2 端口 … 发送TCP报文段 TCP … TCP 发送缓存 接收缓存 报文段 报文段 … 报文段 端口 发送端 接收端 向发送缓存 写入数据块 从接收缓存 读取数据块 应用进程 应用进程2 TCP 首部 20 字节的 固定首部 目 的 端 口 数据 偏移 检 验 和 选 项 (长 度 可 变) 源 端 口 序 号 紧 急 指 针 窗 口 确 认 号 保 留 F I N 32 bit 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 数据部分 发送在前 7.4.3 TCP 的数据编号与确认 l TCP 协议是面向字节的。TCP 将所要传送的报文 看成是字节组成的数据流,并使每一个字节对应于 一个序号。 l 在连接建立时,双方要商定初始序号。TCP 每次 发送的报文段的首部中的序号字段数值表示该报文 段中的数据部分的第一个字节的序号。 l TCP 的确认是对接收到的数据的最高序号表示确 认。接收端返回的确认号是已收到的数据的最高序 号加 1。因此确认号表示接收端期望下次收到的数 据中的第一个数据字节的序号。 7.4.4 TCP 的流量控制与拥塞控制 1. 滑动窗口的概念 l TCP 采用大小可变的滑动窗口进行流量控制。窗口 大小的单位是字节。 l 在 TCP 报文段首部的窗口字段写入的数值就是当前 给对方设置的发送窗口数值的上限。 l 发送窗口在连接建立时由双方商定。但在通信的过 程中,接收端可根据自己的资源情况,随时动态地 调整对方的发送窗口上限值(可增大或减小)
发送窗口 利用可变窗口大小 双方确定的窗口值是400 Ioo hoI 200 ol 3oo ol 40o -ol solon oooi 70 20I s0osol900 可发送 不可发送 主机A 主机B A还能发送300字节 SEQ =101 ●发送端要发送900字节 分为 A还能发送200字节 100字节长的报文段 确定为 sE=201类生 允许A再发送300字节(序号201至500) 发送端只要收到了对方的确认,发送窗口就可 A还能发送200字节(序号301至500) SEO=401 A还能发送100字节(序号401至500) 发送TcP要维护一个指针。每发送一个报文 段,指针就向前移动一个报文段的距离。 1A超时重发,但不能发送序号500以后的数据 允许A再发送200字节(序号501至700 A还能发送100字节(序号501至700) I ACK= 601, WIN=0 不允许A再发送(到序号600的数据都已收到 2.慢开始和拥塞避免 接收端窗口nd和 拥塞窗口cwnd ●发送端的主机在确定发送报文段的速率时,既要 根据接收端的接收能力,又要从全局考虑不要使 (1)接收端窗口wnd这是接收端根据其目前的 网络发生拥塞。 接收缓存大小所许诺的最新的窗口值,是来自接 收端的流量控制。接收端将此窗口值放在TCP 因此,每一个TCP连接需要有以下两个状态变 报文的首部中的窗口字段,传送给发送端。 ·(2)拥塞窗口cwnd( congestion window)是发 O接收端窗口rwnd( receiver window)又称为通知 送端根据自己估计的网络拥塞程度而设置的窗口 窗囗( advertised window 值,是来自发送端的流量控制。 O拥塞窗口cwnd( congestion window) 发送窗口的上限值 必须强调指出 ●发送端的发送窗口的上限值应当取为接收端窗口 ●"拥塞避免”并非指完全能够避免了拥 rwnd和拥塞窗口cMnd这两个变量中较小的一个, 即应按以下公式确定 塞。利用以上的措施要完全避免网 络拥塞还是不可能的 发送窗口的上限值=Min[rwnd,cwnd 1) ●"拥塞避免”是说在拥塞避免阶段把拥 当rwnd<cwnd时,是接收端的接收能力限制发送 窗口的最大值。 塞窗口控制为按线性规律增长,使 当cwd<wnd时,则是网络的拥塞限制发送窗口 网络比较不容易出现拥塞。 的最大
6 收到确认即可前移 1 100 101 200 201 300 301 400 401 500 501 600 601 700 701 800 801 900 发送窗口 可发送 不可发送 指针 l 发送端要发送 900 字节长的数据,划分为9 个 100 字节长的报文段,而发送窗口确定为 500 字节。 l 发送端只要收到了对方的确认,发送窗口就可 前移。 l 发送 TCP 要维护一个指针。每发送一个报文 段,指针就向前移动一个报文段的距离。 利用可变窗口大小进行流量控制 双方确定的窗口值是400 SEQ = 1 SEQ = 201 SEQ = 401 SEQ = 301 SEQ = 101 SEQ = 501 ACK = 201, WIN = 300 ACK = 601, WIN = 0 ACK = 501, WIN = 200 主机 A 主机 B 允许 A 再发送 300 字节(序号 201 至 500) A 还能发送 200 字节 A 还能发送 200 字节(序号 301 至 500) A 还能发送 300 字节 A 还能发送 100 字节(序号 401 至 500) A 超时重发,但不能发送序号 500 以后的数据 允许 A 再发送 200 字节(序号 501 至 700) A 还能发送 100 字节(序号 501 至 700) 不允许 A 再发送(到序号 600 的数据都已收到) SEQ = 201 丢失! 2. 慢开始和拥塞避免 l 发送端的主机在确定发送报文段的速率时,既要 根据接收端的接收能力,又要从全局考虑不要使 网络发生拥塞。 l 因此,每一个 TCP 连接需要有以下两个状态变 量: °接收端窗口 rwnd (receiver window) 又称为通知 窗口(advertised window)。 °拥塞窗口 cwnd (congestion window)。 接收端窗口 rwnd 和 拥塞窗口 cwnd l (1) 接收端窗口 rwnd 这是接收端根据其目前的 接收缓存大小所许诺的最新的窗口值,是来自接 收端的流量控制。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。 l (2) 拥塞窗口 cwnd (congestion window) 是发 送端根据自己估计的网络拥塞程度而设置的窗口 值,是来自发送端的流量控制。 发送窗口的上限值 l 发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个, 即应按以下公式确定: 发送窗口的上限值 = Min [rwnd, cwnd] (7-1) l 当 rwnd < cwnd 时,是接收端的接收能力限制发送 窗口的最大值。 l 当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口 的最大值。 必须强调指出 l“拥塞避免”并非指完全能够避免了拥 塞。利用以上的措施要完全避免网 络拥塞还是不可能的。 l“拥塞避免”是说在拥塞避免阶段把拥 塞窗口控制为按线性规律增长,使 网络比较不容易出现拥塞
3.快重传和快恢复 快重传举例 主机A 主机B A发送M,和M B确认M和M2 ●快重传算法规定,发送端只要一连收到三个 重复的ACK即可断定有分组丢失了,就应立 A发送M3但丢失了 即重传丢失的报文段而不必继续等待为该报 文段设置的重传计时器的超时 B只能再次确认M(因为M3没有收到) 不难看出,快重传并非取消重传计时器,而 A发送M 是在某些情况下可更早地重传丢失的报文 B发送第二个重复确认ACK3 A发送M6 1B发送第三个重复确认ACK A收到了三个重复的确认ACK,就立即重传 M3,而不必等待超时重传 快恢复算法 745TCP的重传机制 (1)当发送端收到连续三个重复的ACK时,就重 设置慢开始门限 ssthresh ●重传机制是TCP中最重要和最复杂的问 (2)与慢开始不同之处是拥塞窗口cMnd不是设置为 题之一 1,而是设置为 ssthresh+3xMsS TCP每发送一个报文段,就对这个报文 (3)若收到的重复的ACK为n个(n>3),则将 段设置一次计时器。只要计时器设置的 cWnd设置为 ssthresh+ nx MSS 重传时间到但还没有收到确认,就要重 (4)若发送窗口值还容许发送报文段,就按拥塞避免 传这一报文段 算法继续发送报文段 (5)若收到了确认新的报文段的ACK,就将cwnd缩 小到 ssthresh 往返时延的自适应算法 往返时延的方差很大 记录每一个报文段发出的时间,以及收到相应的 确认报文段的时间。这两个时间之差就是报文段 ●由于TCP的下层是一个互连网环境,P数据报 的往返时延 所选择的路由变化很大。因而运输层的往返时延 ●将各个报文段的往返时延样本加权平均,就得出 的方差也很大。 报文段的平均往返时延RTT 往返时延的 每测量到一个新的往返时延样本,就按下式重新 概率分布 算一次平均往返时延RTT: 平均往返时延RTT 数据链路 ax(旧的RTT+(1-a)x(新的往返时延样本)(7-2) 在上式中,0≤a<1
7 3. 快重传和快恢复 l 快重传算法规定,发送端只要一连收到三个 重复的 ACK 即可断定有分组丢失了,就应立 即重传丢失的报文段而不必继续等待为该报 文段设置的重传计时器的超时。 l 不难看出,快重传并非取消重传计时器,而 是在某些情况下可更早地重传丢失的报文 段。 快重传举例 M1 , M2 ACK2 , ACK3 M4 主机 A 主机 B B 确认 M1 和 M2 A 发送 M1 和 M2 A 收到了三个重复的确认 ACK3,就立即重传 M3,而不必等待超时重传。 M3 丢失! A 发送 M3 但丢失了 A 发送 M4 ACK3 M5 A 发送 M5 ACK3 B 发送第二个重复确认 ACK3 M6 A 发送 M6 ACK3 M3 B 发送第三个重复确认 ACK3 B 只能再次确认 M2 (因为 M3 没有收到) 快恢复算法 (1) 当发送端收到连续三个重复的 ACK 时,就重新 设置慢开始门限 ssthresh。 (2) 与慢开始不同之处是拥塞窗口 cwnd 不是设置为 1,而是设置为 ssthresh + 3 ´ MSS。 (3) 若收到的重复的 ACK 为 n 个(n > 3),则将 cwnd 设置为 ssthresh + n ´ MSS。 (4) 若发送窗口值还容许发送报文段,就按拥塞避免 算法继续发送报文段。 (5) 若收到了确认新的报文段的 ACK,就将 cwnd 缩 小到 ssthresh。 7.4.5 TCP 的重传机制 l重传机制是 TCP 中最重要和最复杂的问 题之一。 lTCP 每发送一个报文段,就对这个报文 段设置一次计时器。只要计时器设置的 重传时间到但还没有收到确认,就要重 传这一报文段。 往返时延的方差很大 l 由于 TCP 的下层是一个互连网环境,IP 数据报 所选择的路由变化很大。因而运输层的往返时延 的方差也很大。 时间 数据链路层 运输层 T1 T2 T3 往返时延的 概率分布 往返时延的自适应算法 l 记录每一个报文段发出的时间,以及收到相应的 确认报文段的时间。这两个时间之差就是报文段 的往返时延。 l 将各个报文段的往返时延样本加权平均,就得出 报文段的平均往返时延RTT。 l 每测量到一个新的往返时延样本,就按下式重新 计算一次平均往返时延RTT: 平均往返时延RTT = a ´ (旧的RTT) + (1 - a) ´ (新的往返时延样本) (7-2) l 在上式中,0 £ a < 1
747TCP的运输连接管理 客户服务器方式 运输连接的三个阶段 ●运输连接就有三个阶段,即:连接建 TCP的连接和建立都是采用客户服务器方 、数据传送和连接释放。运输连接的 管理就是使运输连接的建立和释放都能 主动发起连接建立的应用进程叫做客户 常地进行 (client). ●连接建立过程中要解决以下三个问题 ●被动等待连接建立的应用进程叫做服务器 O要使每一方能够确知对方的存在 O要允许双方协商一些参数(如最大报文段长 erver) 度,最大窗口大小,服务质量等)。 O能够对运输实体资源(如缓存大小,连接表 中的项目等)进行分配 建立TCP连接 用三次握手建立TCP连接 A的TCP向B发出连接请求报文段,其首部中的 同步比特SYN应置为1,并选择序号x,表明传 主机A 送数据时的 个数据字节的序号是x B的TCP收到连接请求报文段后,如同意,则发 回确认 B在确认报文段中应将SYN置为1,其确认号 H0=yACK=x+1确认 A收到此报文段后,向B给出确认,其确认号应 ACK SE0=x+1, ACK=y+1 A的TCP通知上层应用进程,连接已经建立 ·当运行服务器进程的主机B的TCP收到主机A的 确认后,也通知其上层应用进程,连接已经建立。 至此,整个连接已经全部释放 A不再发送报文 应用进程 ACK SEQ=y ACK=x+1 从A到B的连接就释放了,连接处于半关闭状态 相当于A向B说 但你如果还发送数据,我仍接收
8 7.4.7 TCP 的运输连接管理 1. 运输连接的三个阶段 l运输连接就有三个阶段,即:连接建 立、数据传送和连接释放。运输连接的 管理就是使运输连接的建立和释放都能 正常地进行。 l连接建立过程中要解决以下三个问题: °要使每一方能够确知对方的存在。 °要允许双方协商一些参数(如最大报文段长 度,最大窗口大小,服务质量等)。 °能够对运输实体资源(如缓存大小,连接表 中的项目等)进行分配。 客户服务器方式 lTCP 的连接和建立都是采用客户服务器方 式。 l主动发起连接建立的应用进程叫做客户 (client)。 l被动等待连接建立的应用进程叫做服务器 (server)。 用三次握手建立 TCP 连接 SYN, SEQ = x 主机 B SYN, ACK, SEQ = y, ACK= x + 1 ACK, SEQ = x + 1, ACK = y + 1 主动打开 被动打开 确认 确认 主机 A 连接请求 建立 TCP 连接 l A 的 TCP 向 B 发出连接请求报文段,其首部中的 同步比特 SYN 应置为 1,并选择序号 x,表明传 送数据时的第一个数据字节的序号是 x。 l B 的 TCP 收到连接请求报文段后,如同意,则发 回确认。 l B 在确认报文段中应将 SYN 置为 1,其确认号应 为 x + 1,同时也为自己选择序号 y。 l A 收到此报文段后,向 B 给出确认,其确认号应 为 y + 1。 l A 的 TCP 通知上层应用进程,连接已经建立。 l 当运行服务器进程的主机 B 的 TCP 收到主机 A 的 确认后,也通知其上层应用进程,连接已经建立。 TCP 连接释放的过程 FIN, SEQ = x ACK, SEQ = y, ACK= x + 1 ACK, SEQ = x + 1, ACK = y + 1 应用进程 释放连接 A 不再发送报文 FIN, ACK, SEQ = y, ACK = x + 1 主机 A 主机 B 通知主机 应用进程 ① 应用进程 释放连接 B 不再发送报文 ② 确认 确认 从 A 到 B 的连接就释放了,连接处于半关闭状态。 相当于 A 向 B 说: “我已经没有数据要发送了。 但你如果还发送数据,我仍接收。” 至此,整个连接已经全部释放