《数据通信与计算机网络课件 数据通信与计算机网络第十四章.ppt》由会员分享,可在线阅读,更多相关《数据通信与计算机网络课件 数据通信与计算机网络第十四章.ppt(91页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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 T
2、CP 的流量控制与拥塞控制的流量控制与拥塞控制*7.4.5 TCP 的重传机制的重传机制 7.4.6 采用随机早期丢弃采用随机早期丢弃 RED 进行拥塞控制进行拥塞控制 *7.4.7 TCP 的运输连接管理的运输连接管理 7.4.8 TCP 的有限状态机的有限状态机 7.1 运输层协议概述运输层协议概述 n从从通通信信和和信信息息处处理理的的角角度度看看,运运输输层层向向它它上上面面的的应应用用层层提提供供通通信信服服务务,它它属属于于面面向向通通信信部部分分的最高层,同时也是用户功能中的最低层。的最高层,同时也是用户功能中的最低层。物理层物理层网络层网络层运输层运输层应用层应用层数据链路层数
3、据链路层面向信息处理面向信息处理面向通信面向通信用户功能用户功能网络功能网络功能应用进程之间的通信应用进程之间的通信n两两个个主主机机进进行行通通信信实实际际上上就就是是两两个个主主机机中中的的应应用进程互相通信。用进程互相通信。n应用进程之间的通信又称为端到端的通信。应用进程之间的通信又称为端到端的通信。n运运输输层层的的一一个个很很重重要要的的功功能能就就是是复复用用和和分分用用。应应用用层层不不同同进进程程的的报报文文通通过过不不同同的的端端口口向向下下交交到运输层,再往下就共用网络层提供的服务。到运输层,再往下就共用网络层提供的服务。n“运运输输层层提提供供应应用用进进程程间间的的逻逻
4、辑辑通通信信”。“逻逻辑辑通通信信”的的意意思思是是:运运输输层层之之间间的的通通信信好好像像是是沿沿水水平平方方向向传传送送数数据据。但但事事实实上上这这两两个个运运输输层层之间并没有一条水平方向的物理连接。之间并没有一条水平方向的物理连接。运输层协议和网络层协议运输层协议和网络层协议的主要区别的主要区别 应用进程应用进程 应用进程应用进程 IP 协议的作用范围协议的作用范围(提供主机之间的逻辑通信)(提供主机之间的逻辑通信)TCP 和和 UDP 协议的作用范围协议的作用范围(提供进程之间的逻辑通信)(提供进程之间的逻辑通信)因因 特特 网网运输层的主要功能运输层的主要功能 n运运输输层层为
5、为应应用用进进程程之之间间提提供供端端到到端端的的逻逻辑辑通通信信(但网络层是为主机之间提供逻辑通信)。(但网络层是为主机之间提供逻辑通信)。n运输层还要对收到的报文进行差错检测。运输层还要对收到的报文进行差错检测。n运运输输层层需需要要有有两两种种不不同同的的运运输输协协议议,即即面面向向连连接的接的 TCP 和无连接的和无连接的 UDP。运输层与其上下层之间的关系运输层与其上下层之间的关系的的 OSI 表示法表示法 运输实体运输实体运输实体运输实体运输协议运输协议运输层运输层层接口层接口 运输服务用户运输服务用户(应用层实体)(应用层实体)运输服务用户运输服务用户(应用层实体)(应用层实体
6、)层接口层接口 网络层网络层(或网际层)(或网际层)应用层应用层主机主机 A主机主机 B运输层服务访问点运输层服务访问点TSAP网络层服务访问点网络层服务访问点NSAP运输层向上层提供可靠的和不可靠的逻辑通信信道TCP/IP的运输层有两个不同的协议:的运输层有两个不同的协议:(1)用户数据报协议用户数据报协议 UDP (User Datagram Protocol)(2)传输控制协议传输控制协议 TCP (Transmission Control Protocol)7.2 TCP/IP 体系中的运输层体系中的运输层7.2.1 运输层中的两个协议运输层中的两个协议n两个对等运输实体在通信时传送的
7、数据单位叫作两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元运输协议数据单元 TPDU(Transport Protocol Data Unit)。nTCP 传送的数据单位协议是传送的数据单位协议是 TCP 报文段报文段(segment)n UDP 传送的数据单位协议是传送的数据单位协议是 UDP 报文报文或或用户数用户数据报据报。TCP 与与 UDP TCP/IP 体系中的运输层协议体系中的运输层协议 TCPUDPIP应用层与各种网络接口运输层TCP 与与 UDP nUDP 在在传传送送数数据据之之前前不不需需要要先先建建立立连连接接。对对方方的的运运输输层层在在收收到到 UDP
8、报报文文后后,不不需需要要给给出出任任何何确确认认。虽虽然然 UDP 不不提提供供可可靠靠交交付付,但但在在某些情况下某些情况下 UDP 是一种最有效的工作方式。是一种最有效的工作方式。nTCP 则则提提供供面面向向连连接接的的服服务务。TCP 不不提提供供广广播播或或多多播播服服务务。由由于于 TCP 要要提提供供可可靠靠的的、面面向向连连接接的的运运输输服服务务,因因此此不不可可避避免免地地增增加加了了许许多多的的开开销销。这这不不仅仅使使协协议议数数据据单单元元的的首首部部增增大大很多,还要占用许多的处理机资源。很多,还要占用许多的处理机资源。还要强调两点还要强调两点 n运运输输层层的的
9、 UDP 用用户户数数据据报报与与网网际际层层的的IP数数据据报报有有很很大大区区别别。IP 数数据据报报要要经经过过互互连连网网中中许许多多路路由由器器的的存存储储转转发发,但但 UDP 用用户户数数据据报报是是在在运输层的端到端抽象的逻辑信道中传送的。运输层的端到端抽象的逻辑信道中传送的。nTCP 报报文文段段是是在在运运输输层层抽抽象象的的端端到到端端逻逻辑辑信信道道中中传传送送,这这种种信信道道是是可可靠靠的的全全双双工工信信道道。但但这这样样的的信信道道却却不不知知道道究究竟竟经经过过了了哪哪些些路路由由器器,而而这这些些路路由由器器也也根根本本不不知知道道上上面面的的运运输输层层是
10、是否否建立了建立了 TCP 连接。连接。7.2.2 端口的概念端口的概念n端口就是运输层服务访问点端口就是运输层服务访问点 TSAP。n端口的作用就是让应用层的各种应用进程都能将端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。付给应用层相应的进程。n从这个意义上讲,端口是用来标志应用层的进程。从这个意义上讲,端口是用来标志应用层的进程。端口在进程之间的通信中所起的作用端口在进程之间的通信中所起的作用 应用层运输层
11、网络层TCP 报文段UDP用户数据报应用进程TCP 复用IP 复用UDP 复用TCP 报文段UDP用户数据报 应用进程端口端口TCP 分用UDP 分用IP 分用发送方接收方端口端口 n端口用一个端口用一个 16 bit 端口号进行标志。端口号进行标志。n端端口口号号只只具具有有本本地地意意义义,即即端端口口号号只只是是为为了了标标志志本本计计算算机机应应用用层层中中的的各各进进程程。在在因因特特网网中中不不同同计计算算机机的的相相同同端端口口号号是是没没有有联联系的。系的。两类端口两类端口 n一类是熟知端口,其数值一般为一类是熟知端口,其数值一般为 01023。当。当一种新的应用程序出现时,必
12、须为它指派一个一种新的应用程序出现时,必须为它指派一个熟知端口。熟知端口。n另一类则是一般端口,用来随时分配给请求通另一类则是一般端口,用来随时分配给请求通信的客户进程。信的客户进程。插口插口(socket)nTCP 使使用用“连连接接”(而而不不仅仅仅仅是是“端端口口”)作作为为最最基基本本的的抽抽象象,同同时时将将 TCP 连连接接的的端端点点称称为为插插口口(socket),或套接字、套接口。或套接字、套接口。n插口和端口、插口和端口、IP 地址的关系是:地址的关系是:IP 地址地址131.6.23.13 端口号端口号1500 131.6.23.13,1500插口插口(socket)同一
13、个名词同一个名词 socket有多种不同的意思有多种不同的意思 n应用编程接口应用编程接口 API 称为称为 socket API,简称为简称为 socket。nsocket API 中使用的一个函数名也叫作中使用的一个函数名也叫作socket。n调用调用 socket 函数的端点称为函数的端点称为 socket。n调调用用 socket 函函数数时时其其返返回回值值称称为为 socket描描述述符符,可简称为可简称为 socket。n在在操操作作系系统统内内核核中中连连网网协协议议的的 Berkeley 实实现现,称称为为 socket 实现。实现。7.3 用户数据报协议用户数据报协议 UD
14、P 7.3.1 UDP 概述概述 nUDP 只只在在 IP 的的数数据据报报服服务务之之上上增增加加了了很很少少一一点的功能,即端口的功能和差错检测的功能。点的功能,即端口的功能和差错检测的功能。n虽虽然然 UDP 用用户户数数据据报报只只能能提提供供不不可可靠靠的的交交付付,但但 UDP 在某些方面有其特殊的优点。在某些方面有其特殊的优点。n发送数据之前不需要建立连接发送数据之前不需要建立连接nUDP 的主机不需要维持复杂的连接状态表。的主机不需要维持复杂的连接状态表。nUDP 用户数据报只有用户数据报只有8个字节的首部开销。个字节的首部开销。n网网络络出出现现的的拥拥塞塞不不会会使使源源主
15、主机机的的发发送送速速率率降降低低。这这对对某某些些实实时时应用是很重要的。应用是很重要的。端口是用报文队列来实现端口是用报文队列来实现 UDP 端口端口 51000UDP 端口端口 69 出队列出队列入队列入队列出队列出队列入队列入队列TFTP 服务器服务器TFTP 客户客户UDP 用户数据报用户数据报应应用用层层运运输输层层TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG比特比特 0
16、 8 16 24 31填填 充充源端口和目的端口字段源端口和目的端口字段各占各占 2 字节。端口是运输字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。要通过端口才能实现。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充序号字段占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。TC
17、P首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充确认号字段占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充数据偏移数据偏移占占 4 bit,它指出它指出 TCP 报文段的数据起报文段的数据起始处距离始处距离 TCP
18、报文段的起始处有多远。报文段的起始处有多远。“数据偏移数据偏移”的单位不是的单位不是字节字节而是而是 32 bit 字字(4 字节为计算单位)。字节为计算单位)。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充保留字段占 6 bit,保留为今后使用,但目前应置为 0。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG
19、比特 0 8 16 24 31填 充紧急比特 URG 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充确认比特 ACK 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F
20、INSYNRSTPSHACKURG比特 0 8 16 24 31填 充推送比特 PSH(PuSH)接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充复位比特 RST(ReSeT)当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。TCP首部20字节固定首部目 的
21、 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充同步比特 SYN 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充终止比特 FIN(FINal)用来释放一个连接。当FIN 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。TCP首
22、部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充窗口字段窗口字段 占占 2 字节。窗口字段用来控制对方发送的字节。窗口字段用来控制对方发送的数据量,单位为字节。数据量,单位为字节。TCP 连接的一端根据设置的缓存连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。定对方的发送窗口的上限。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (
23、长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充检检验验和和 占占 2 字字节节。检检验验和和字字段段检检验验的的范范围围包包括括首首部部和和数数据据这这两两部部分分。在在计计算算检检验验和和时时,要要在在 TCP 报文段的前面加上报文段的前面加上 12 字节的伪首部。字节的伪首部。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充紧紧急急指指针针
24、字字段段 占占 16 bit。紧紧急急指指针针指指出出在在本本报报文段中的紧急数据的最后一个字节的序号。文段中的紧急数据的最后一个字节的序号。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充选项字段 长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS(Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”MSS 是 TCP 报文段中的数据字段的
25、最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充填充字段 这是为了使整个首部长度是 4 字节的整数倍。7.4.3 TCP 的数据编号与确认的数据编号与确认 nTCP 协协议议是是面面向向字字节节的的。TCP 将将所所要要传传送送的的报报文文看看成成是是字字节节组组成成的的数数据据流流,并并使使每每一一个个字字节节对对应应于一个序号。于一个序号。n在在连连接接建建立立时时,
26、双双方方要要商商定定初初始始序序号号。TCP 每每次次发发送送的的报报文文段段的的首首部部中中的的序序号号字字段段数数值值表表示示该该报报文段中的文段中的数据部分的第一个字节的序号数据部分的第一个字节的序号。n TCP 的的确确认认是是对对接接收收到到的的数数据据的的最最高高序序号号表表示示确确认认。接接收收端端返返回回的的确确认认号号是是已已收收到到的的数数据据的的最最高高序序号号加加 1。因因此此确确认认号号表表示示接接收收端端期期望望下下次次收收到到的的数据中的第一个数据字节的序号数据中的第一个数据字节的序号。7.4.4 TCP 的流量控制与拥塞控制的流量控制与拥塞控制1.滑动窗口的概念
27、滑动窗口的概念nTCP 采采用用大大小小可可变变的的滑滑动动窗窗口口进进行行流流量量控控制制。窗窗口口大小的单位是大小的单位是字节字节。n在在 TCP 报报文文段段首首部部的的窗窗口口字字段段写写入入的的数数值值就就是是当当前前给对方设置的发送窗口数值的上限。给对方设置的发送窗口数值的上限。n发发送送窗窗口口在在连连接接建建立立时时由由双双方方商商定定。但但在在通通信信的的过过程程中中,接接收收端端可可根根据据自自己己的的资资源源情情况况,随随时时动动态态地地调整对方的发送窗口上限值调整对方的发送窗口上限值(可增大或减小可增大或减小)。收到确认即可前移收到确认即可前移1002003004005
28、006007008009001012013014015016017018011发送窗口可发送不可发送指针指针n发送端要发送发送端要发送 900 字节长的数据,划分为字节长的数据,划分为 9 个个 100 字节长的报文段,而发送窗口确定为字节长的报文段,而发送窗口确定为 500 字节。字节。n发送端只要收到了对方的确认,发送窗口就可发送端只要收到了对方的确认,发送窗口就可前移。前移。n发送发送 TCP 要维护一个指针。每发送一个报文要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。段,指针就向前移动一个报文段的距离。收到确认即可前移收到确认即可前移1002003004005006
29、007008009001012013014015016017018011可发送不可发送指针1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针指针发送窗口前移n发送端已发送了发送端已发送了 400 字节的数据,但只收到对前字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。字节数据的确认,同时窗口大小不变。n现在发送端还可发送现在发送端还可发送 300 字节。字节。已发送并被确认已发送但未被确认1002003004005006007008009001012013014015016017018011已发
30、送并被确认已发送但未被确认可发送不可发送指针指针1002003004005006007008009001012013014015016017018011已发送并被确认可发送不可发送指针指针发送窗口前移发送窗口缩小发送端收到了对方对前发送端收到了对方对前 400 字节数据的确认,但对方字节数据的确认,但对方通知发送端必须把窗口减小到通知发送端必须把窗口减小到 400 字节。字节。现在发送端最多还可发送现在发送端最多还可发送 400 字节的数据。字节的数据。2.慢开始和拥塞避免慢开始和拥塞避免n发送端的主机在确定发送报文段的速率时,既要发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力
31、,又要从全局考虑不要使根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。网络发生拥塞。n因此,每一个因此,每一个 TCP 连接需要有以下两个状态变连接需要有以下两个状态变量:量:n接收端窗口接收端窗口 rwnd(receiver window)又称为通知又称为通知窗口窗口(advertised window)。n拥塞窗口拥塞窗口 cwnd(congestion window)。接收端窗口接收端窗口 rwnd 和和拥塞窗口拥塞窗口 cwnd n(1)接收端窗口接收端窗口 rwnd 这是接收端根据其目前这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自的接收缓存大小所许诺的最新的
32、窗口值,是来自接收端的流量控制。接收端将此窗口值放在接收端的流量控制。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。报文的首部中的窗口字段,传送给发送端。n(2)拥塞窗口拥塞窗口 cwnd(congestion window)是发是发送端根据自己估计的网络拥塞程度而设置的窗口送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。值,是来自发送端的流量控制。发送窗口的上限值发送窗口的上限值n发送端的发送窗口的上限值应当取为接收端窗口发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口和拥塞窗口 cwnd 这两个变量中较小的一个,这两个变量中较小的
33、一个,即应按以下公式确定:即应按以下公式确定:发送窗口的上限值发送窗口的上限值 Min rwnd,cwnd (7-1)n当当 rwnd cwnd 时,是接收端的接收能力限制发送时,是接收端的接收能力限制发送窗口的最大值。窗口的最大值。n当当 cwnd 3),),则将则将 cwnd 设置为设置为 ssthresh+n MSS。(4)若发送窗口值还容许发送报文段,就按拥塞避免若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。算法继续发送报文段。(5)若收到了确认新的报文段的若收到了确认新的报文段的 ACK,就将就将 cwnd 缩缩小到小到 ssthresh。7.4.5 TCP 的重传机
34、制的重传机制n重传机制是重传机制是 TCP 中最重要和最复杂的问中最重要和最复杂的问题之一。题之一。nTCP 每发送一个报文段,就对这个报文每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重重传时间到但还没有收到确认,就要重传这一报文段。传这一报文段。往返时延的自适应算法往返时延的自适应算法 n记录每一个报文段发出的时间,以及收到相应的记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。这两个时间之差就是报文段确认报文段的时间。这两个时间之差就是报文段的往返时延。的往返时延。n将各个报文段的往返时延样本加
35、权平均,就得出将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延报文段的平均往返时延 RTT。n每测量到一个新的往返时延样本,就按下式重新每测量到一个新的往返时延样本,就按下式重新计算一次平均往返时延计算一次平均往返时延 RTT:平均往返时延平均往返时延RTT (旧的旧的RTT)(1 )(新的往返时延样本新的往返时延样本)(7-2)n在上式中,在上式中,0 1。参数参数 的选择的选择n若若 很接近于很接近于 1,表示新算出的平均往返时延,表示新算出的平均往返时延 RTT 和原来的值相比变化不大,而新的往返和原来的值相比变化不大,而新的往返时延样本的影响不大时延样本的影响不大(RTT
36、 值更新较慢值更新较慢)。n若选择若选择 接近于零,则表示加权计算的平均接近于零,则表示加权计算的平均往返时延往返时延 RTT 受新的往返时延样本的影响较受新的往返时延样本的影响较大大(RTT 值更新较快值更新较快)。n典型的典型的 值为值为 7/8。超时重传时间超时重传时间 RTO(RetransmissionTime-Out)n计时器的计时器的 RTO 应略大于上面得出的应略大于上面得出的 RTT,即:即:RTO RTT (7-3)n这里这里 是个大于是个大于 1 的系数。的系数。n若取若取 很接近于很接近于1,发送端可及时地重传丢失的,发送端可及时地重传丢失的报文段,因此效率得到提高。报
37、文段,因此效率得到提高。n但若报文段并未丢失而仅仅是增加了一点时延,但若报文段并未丢失而仅仅是增加了一点时延,那么过早地重传反而会加重网络的负担。那么过早地重传反而会加重网络的负担。n因此因此 TCP 原先的标准推荐将原先的标准推荐将 值取为值取为 2。Karn 算法算法 n在计算平均往返时延在计算平均往返时延 RTT 时,只要报文时,只要报文段重传了,就不采用其往返时延样本。段重传了,就不采用其往返时延样本。n这样得出的平均往返时延这样得出的平均往返时延 RTT 和重传时和重传时间就较准确。间就较准确。修正的修正的 Karn 算法算法 n报文段每重传一次,就将重传时间增大一些:报文段每重传一
38、次,就将重传时间增大一些:新的重传时间新的重传时间 (旧的重传时间旧的重传时间)(7-4)n系数系数 的典型值是的典型值是2。n当不再发生报文段的重传时,才根据报文段的往当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延返时延更新平均往返时延 RTT 和重传时间的数值。和重传时间的数值。n实践证明,这种策略较为合理。实践证明,这种策略较为合理。7.4.7 TCP 的运输连接管理的运输连接管理1.运输连接的三个阶段运输连接的三个阶段 n运输连接就有三个阶段,即:连接建立、运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理数据传送和连接释放。运输连接的管理就是使运
39、输连接的建立和释放都能正常就是使运输连接的建立和释放都能正常地进行。地进行。n连接建立过程中要解决以下三个问题:连接建立过程中要解决以下三个问题:n要使每一方能够确知对方的存在。要使每一方能够确知对方的存在。n要允许双方协商一些参数(如最大报文段要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。长度,最大窗口大小,服务质量等)。n能够对运输实体资源(如缓存大小,连接能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。表中的项目等)进行分配。客户服务器方式客户服务器方式 nTCP 的连接和建立都是采用客户服务器的连接和建立都是采用客户服务器方式。方式。n主动发起连接建
40、立的应用进程叫做客户主动发起连接建立的应用进程叫做客户(client)。n被动等待连接建立的应用进程叫做服务被动等待连接建立的应用进程叫做服务器器(server)。用三次握手建立用三次握手建立 TCP 连接连接 SYN,SEQ=x主机主机 BSYN,ACK,SEQ=y,ACK=x 1ACK,SEQ=x+1,ACK=y 1被动打开被动打开主动打开主动打开确认确认确认确认主机主机 A连接请求连接请求建立建立 TCP 连接连接nA 的的 TCP 向向 B 发出连接请求报文段,其首部中的发出连接请求报文段,其首部中的同步比特同步比特 SYN 应置为应置为 1,并选择序号,并选择序号 x,表明传表明传送
41、数据时的第一个数据字节的序号是送数据时的第一个数据字节的序号是 x。nB 的的 TCP 收到连接请求报文段后,如同意,则发收到连接请求报文段后,如同意,则发回确认。回确认。nB 在确认报文段中应将在确认报文段中应将 SYN 置为置为 1,其确认号应,其确认号应为为 x 1,同时也为自己选择序号同时也为自己选择序号 y。nA 收到此报文段后,向收到此报文段后,向 B 给出确认,其确认号应给出确认,其确认号应为为 y 1。nA 的的 TCP 通知上层应用进程,连接已经建立。通知上层应用进程,连接已经建立。n当运行服务器进程的主机当运行服务器进程的主机 B 的的 TCP 收到主机收到主机 A 的确认
42、后,也通知其上层应用进程,连接已经建的确认后,也通知其上层应用进程,连接已经建立。立。7.4.8 TCP 的有限状态机的有限状态机n为了管理因特网,在为了管理因特网,在网络管理中心网络管理中心设有管理信息设有管理信息库库 MIB(Management Information Base)。n管理信息库存放着各主机的管理信息库存放着各主机的 TCP 连接表。连接表。nTCP 连接表对每个连接都登记了其连接信息。连接表对每个连接都登记了其连接信息。除本地和远地的除本地和远地的 IP 地址和端口号外,还要记录地址和端口号外,还要记录每一个连接所处的状态。每一个连接所处的状态。连接状态连接状态 本地本地
43、 IP 地址地址 本地端口本地端口 远地远地 IP 地址地址 远地端口远地端口连接连接 1连接连接 2连接连接 n TCP 的正常的连接建立和关闭的正常的连接建立和关闭 SYN,SEQ=x客户进程服务器进程LISTEN(被动打开)(主动打开)SYN_SENTSYN_RCVDESTABLISHEDESTABLISHED(主动关闭)FIN_WAIT_1CLOSE_WAIT(被动关闭)FIN_WAIT_2LAST_ACKTIME_WAITCLOSED(全双工数据传送阶段)SYN,ACK,SEQ=y,ACK=x+1ACK,SEQ=x+1,ACK=y+1FIN,SEQ=uACK,SEQ=v,ACK=u+1FIN,ACK,SEQ=v,ACK=u+1ACK,SEQ=u+1,ACK=v+1TIME_WAITCLOSE_WAITSYN_RCVDESTABLISHED