《计算机传输层课件》由会员分享,可在线阅读,更多相关《计算机传输层课件(132页珍藏版)》请在金锄头文库上搜索。
1、 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社第9章传输层本章内容提要本章内容提要传输层概述传输层概述TCP/IP体系中的传输层体系中的传输层UDP协议协议TCP协议协议 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.19.1传输层概述传输层概述传输层又称为传输层又称为运输层运输层,处于,处于OSI/RMOSI/RM的的第四第四层层,是整个网络协议体系的核心。,是整个网络协议体系的核心。从通信和信息处理的角度看,传输层向它从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信上面的应用层提供通信服务,它属于面向通信部分
2、的最高层,同时也是用户功能中的最低层。部分的最高层,同时也是用户功能中的最低层。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.19.1传输层概述传输层概述当网络的边缘部分中的两个主机使用网络当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有传输层,位于网络边缘部分的主机的协议栈才有传输层,而网络核心部分中的路由器在转发分组时都只而网络核心部分中的路由器在转发分组时都只用到下三层的功能。用到下三层的功能。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版
3、社出版社传输层为相互通信的应用进程提供了逻辑通信传输层为相互通信的应用进程提供了逻辑通信 54321传输层提供应用进程间的逻辑通信主机 A主机 B应用进程应用进程路由器 1路由器 2AP1LAN2WANAP2AP3AP4IP 层LAN1AP1AP2AP4端口端口54321IP 协议的作用范围传输层协议 TCP 和 UDP 的作用范围AP3 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社应用进程之间的通信应用进程之间的通信两个主机进行通信实际上就是两个主机进行通信实际上就是两个主机中的应两个主机中的应用进程互相通信。用进程互相通信。 应用进程之间的通信又称为应用进程之间的
4、通信又称为端到端的通信端到端的通信。 传输层的一个很重要的功能就是传输层的一个很重要的功能就是复用和分用复用和分用。应用层不同进程的报文通过不同的端口向下交到应用层不同进程的报文通过不同的端口向下交到传输层传输层,再往下就共用网络层提供的服务。,再往下就共用网络层提供的服务。“传输层提供应用进程间的逻辑通信传输层提供应用进程间的逻辑通信”。“逻逻辑通信辑通信”的意思是:传输层之间的通信好像是沿的意思是:传输层之间的通信好像是沿水平方向传送数据。但事实上这两个传输层之间水平方向传送数据。但事实上这两个传输层之间并没有一条水平方向的物理连接。并没有一条水平方向的物理连接。 李太君李太君 林元乖林元
5、乖 等编著等编著 清华大学清华大学出版社出版社传输层协议和网络层协议的传输层协议和网络层协议的主要区别主要区别 应用进程应用进程IP 协议的作用范围(提供主机之间的逻辑通信)TCP 和 UDP 协议的作用范围(提供进程之间的逻辑通信)因 特 网 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社传输层的传输层的主要功能主要功能 传传输输层层为为应应用用进进程程之之间间提提供供端端到到端端的的逻逻辑辑通通信信(但网络层是为主机之间提供逻辑通信)。(但网络层是为主机之间提供逻辑通信)。传输层还要对收到的报文进行传输层还要对收到的报文进行差错检测差错检测。传传输输层层需需要要有有
6、两两种种不不同同的的运运输输协协议议,即即面面向向连连接的接的 TCP TCP 和和无连接的无连接的 UDPUDP。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社两种不同的运输协议两种不同的运输协议传输层向高层用户屏蔽了下面网络核心的细节传输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个传输层实它使应用进程看见的就是好像在两个传输层实体之间有一条端到端的体之间有一条端到端的逻辑通信信道逻辑通信信道。当传输层当传输层采用面向连接的采用面向连接的 TCP TCP 协议协议
7、时,尽管时,尽管下面的网络是不可靠的(只提供尽最大努力服下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双务),但这种逻辑通信信道就相当于一条全双工的工的可靠信道可靠信道。当传输层采用当传输层采用无连接的无连接的 UDP UDP 协议协议时,这种逻时,这种逻辑通信信道是一条辑通信信道是一条不可靠信道不可靠信道。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.29.2TCP/IPTCP/IP体系中的传输层体系中的传输层传输层是传输层是TCP/IPTCP/IP网络体系结构中网络体系结构中至关重要至关重要的一层的一层,它的,它的主要作用主要作
8、用就是保证就是保证端对端数据传端对端数据传输的可靠性输的可靠性。由于。由于TCP/IPTCP/IP的的网络层提供网络层提供的是面的是面向向无连接的数据报无连接的数据报服务,也就是说服务,也就是说IPIP数据报传数据报传送会出现丢失、重复或乱序的情况,因此在送会出现丢失、重复或乱序的情况,因此在TCP/IPTCP/IP网络中传输层就变得极为重要。网络中传输层就变得极为重要。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.2.1 9.2.1 传输层中的两个协议传输层中的两个协议TCP/IP TCP/IP 的传输层有的传输层有两个不同的协议两个不同的协议:(1) (1)
9、用户数据报协议用户数据报协议 UDPUDP (User Datagram Protocol)(User Datagram Protocol)(2) (2) 传输控制协议传输控制协议 TCPTCP (Transmission Control Protocol)(Transmission Control Protocol) 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.2.1 9.2.1 传输层中的两个协议传输层中的两个协议两个对等运输实体在通信时传送的数两个对等运输实体在通信时传送的数据单位叫作据单位叫作运输协议数据单元运输协议数据单元 TPDU TPDU (Tran
10、sport Protocol Data Unit)(Transport Protocol Data Unit)。TCP TCP 传送的数据单位协议是传送的数据单位协议是 TCP TCP 报文报文段段(segment)(segment) UDP UDP 传送的数据单位协议是传送的数据单位协议是 UDP UDP 报报文或用户数据报。文或用户数据报。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCPUDPIP应用层与各种网络接口传输层 两种协议在协议栈中的位置两种协议在协议栈中的位置TCP/IP 体系中的传输层协议 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大
11、学出版社出版社一些应用和应用层协议一些应用和应用层协议主要使用的传输层协议主要使用的传输层协议应用用关关键字字传输层协议域名服域名服务DNSUDP简单文件文件传输协议SFTP路由路由选择协议RIPIP地址配置地址配置BOOTP、DHCP简单网网络管理管理协议SNMP远程文件服程文件服务器器NFSIP电话专用用协议流式多媒体通信流式多媒体通信专用用协议多播多播IGMP文件文件传输协议FTPTCP远程虚程虚拟终端端协议Telnet万万维网网HTTP简单邮件件传输协议SMTP域名服域名服务DNS 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社UDP UDP 在传送数据之前在传
12、送数据之前不需要先建立连接不需要先建立连接。对。对方的传输层在收到方的传输层在收到 UDP UDP 报文后,不需要给出任报文后,不需要给出任何确认。虽然何确认。虽然 UDP UDP 不提供可靠交付,但在某些不提供可靠交付,但在某些情况下情况下 UDP UDP 是一种最有效的工作方式。是一种最有效的工作方式。TCP TCP 则提供则提供面向连接的服务面向连接的服务。TCP TCP 不提供广不提供广播或多播服务。由于播或多播服务。由于 TCP TCP 要提供可靠的、面向要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的
13、首部增大很多,开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。还要占用许多的处理机资源。 9.2.1 9.2.1 传输层中的两个协议传输层中的两个协议 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社传输层的传输层的 UDP UDP 用户数据报与网际层的用户数据报与网际层的IPIP数据数据报有报有很大区别很大区别。IP IP 数据报要经过互连网中许多数据报要经过互连网中许多路由器的存储转发,但路由器的存储转发,但 UDP UDP 用户数据报是在传用户数据报是在传输层的端到端抽象的逻辑信道中传送的。输层的端到端抽象的逻辑信道中传送的。TCP TCP 报文
14、段是在传输层抽象的端到端逻辑信报文段是在传输层抽象的端到端逻辑信道中传送,这种信道是可靠的道中传送,这种信道是可靠的全双工信道全双工信道。但这。但这样的信道却不知道究竟经过了哪些路由器,而这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的传输层是否建立了些路由器也根本不知道上面的传输层是否建立了 TCP TCP 连接。连接。 9.2.1 9.2.1 传输层中的两个协议传输层中的两个协议 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社传输层的协议实现应用进程间端到端的通信,传输层的协议实现应用进程间端到端的通信,网间进程通信要解决的是不同主机进程间的相
15、互网间进程通信要解决的是不同主机进程间的相互通信问题。为此,首先要解决的是网间进程标识通信问题。为此,首先要解决的是网间进程标识问题。问题。怎么解决的是网间进程标识问题怎么解决的是网间进程标识问题? ?9.2.2 9.2.2 端口与端口与SocketSocket的概念的概念 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社同一主机上,不同进程可用进程号同一主机上,不同进程可用进程号(process IDprocess ID)唯一标识;)唯一标识;但在网络环境下但在网络环境下,各,各主机独立分配的进程号不能唯一标识该进程。其主机独立分配的进程号不能唯一标识该进程。其次,操作
16、系统支持的网络协议众多,不同协议的次,操作系统支持的网络协议众多,不同协议的工作方式不同,地址格式也不同。因此,网间进工作方式不同,地址格式也不同。因此,网间进程通信还要程通信还要解决多重协议的识别问题解决多重协议的识别问题。为了解决为了解决上述网间进程通信问上述网间进程通信问题,题,TCP/IPTCP/IP协议引入了协议引入了端口端口和套接字和套接字的概念。的概念。解决方法解决方法 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社端口是协议端口号端口是协议端口号(protocol port number)(protocol port number)的简称,是网络中可以被
17、命名和寻址的通信端口,的简称,是网络中可以被命名和寻址的通信端口,用于标识通信的进程用于标识通信的进程。虽然通信的终点是应用进程,但只要把要传虽然通信的终点是应用进程,但只要把要传送的报文交到目的主机的某一个送的报文交到目的主机的某一个合适的目的端口合适的目的端口,剩下的工作(即最后交付给目的进程)就由,剩下的工作(即最后交付给目的进程)就由TCPTCP来完成来完成。9.2.2 9.2.2 端口与端口与SocketSocket的概念的概念 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社在协议栈层间的抽象的协议端口是在协议栈层间的抽象的协议端口是软件端口软件端口。路由器或
18、交换机上的端口是路由器或交换机上的端口是硬件端口硬件端口。硬件端口是硬件端口是不同硬件设备不同硬件设备进行交互的接口,而进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进软件端口是应用层的各种协议进程与运输实体进行层间交互的行层间交互的一种地址一种地址。 软件端口与硬件端口软件端口与硬件端口 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社每个端口都拥有一个叫每个端口都拥有一个叫端口号的整数型标识符端口号的整数型标识符,用于用于区别不同端口区别不同端口。每个端口都拥有一个叫端口号。每个端口都拥有一个叫端口号的整数描述符,用来标识不同的进程,可以在特定的整数描述符
19、,用来标识不同的进程,可以在特定应用程序间建立连接和识别应用进程。应用程序间建立连接和识别应用进程。在在TCP/IPTCP/IP的传输层,定义一个的传输层,定义一个16Bit16Bit长度的整数长度的整数作为端口标识,也就是说可定义作为端口标识,也就是说可定义2 21616个端口个端口,其端口,其端口号从号从0 0到到2 216-116-1。由于。由于TCP/IPTCP/IP传输层的传输层的TCPTCP和和UDPUDP两个协两个协议是两个完全独立的软件模块,因此各自的端口号议是两个完全独立的软件模块,因此各自的端口号也相互独立,即各自可独立拥有也相互独立,即各自可独立拥有2 21616个端口。
20、个端口。9.2.2 9.2.2 端口与端口与SocketSocket的概念的概念 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社应用层与传输层之间的接口应用层与传输层之间的接口端口号应用层传输层 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社三类端口三类端口 保留端口保留端口,所有小于,所有小于10241024以及大于以及大于10241024的个别的个别专用专用TCPTCP服务器端口号码属于保留号码,并被服务器端口号码属于保留号码,并被IANAIANA注册。它们基本上都被分配给了已知的应注册。它们基本上都被分配给了已知的应用协议用协议项 目目端端
21、 口口 号号关关 键 字字应 用用 协 议UDP保留端口保留端口举例例53DNS域名服域名服务69TFTP简单文件文件传输协议161SNMP简单网网络管理管理协议520RIPRIP路由路由选择协议TCP保留端口保留端口举例例21FTP文件文件传输协议23Telnet虚虚拟终端端协议25SMTP简单邮件件传输协议53DNS域名服域名服务80HTTP超文本超文本传输协议119NNTP网网络新新闻传输协议 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社三类端口三类端口 动态分配的端口动态分配的端口,动态分配的端口又称为本地,动态分配的端口又称为本地分配,这种端口的端口号一般都
22、大于分配,这种端口的端口号一般都大于10241024,这,这一类的端口没有固定的使用者,它们可以被动一类的端口没有固定的使用者,它们可以被动态地分配给应用程序使用。态地分配给应用程序使用。注册端口注册端口,注册端口比较特殊,它也是固定为,注册端口比较特殊,它也是固定为某个应用服务的端口,但是它所代表的不是已某个应用服务的端口,但是它所代表的不是已经形成标准的应用层协议,而是某个软件厂商经形成标准的应用层协议,而是某个软件厂商开发的应用程序。大多数注册端口的端口号大开发的应用程序。大多数注册端口的端口号大于于10241024 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社
23、套接字(套接字(SocketSocket)TCPTCP连接的端点叫做套接字连接的端点叫做套接字(SocketSocket)。根据)。根据RFC793RFC793的的定义定义:端口号拼接到(:端口号拼接到(contatenatedcontatenated withwith)IPIP地址就构成了套接字。地址就构成了套接字。所谓套接字实际上是一个通信端点,每个套接所谓套接字实际上是一个通信端点,每个套接字都有一个字都有一个套接字序套接字序号,包括主机的号,包括主机的IP IP 地址地址与一个与一个16 16 位的主机端口号,即形如位的主机端口号,即形如( (主机主机IP IP 地址:端口号地址:端口
24、号) )。例如,如果。例如,如果IPIP地址是地址是210.37.145.1210.37.145.1,而端口号是,而端口号是2323,那么得到,那么得到套接套接字就是(字就是(210.37.145.1210.37.145.1:2323)。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社套接字(套接字(SocketSocket)套接字套接字Socket Socket =(IP=(IP地址:端口号地址:端口号) ),套接字的,套接字的表示方法是点分十进制的表示方法是点分十进制的IPIP地址后面写上端口地址后面写上端口号,中间用冒号或逗号隔开。每一号,中间用冒号或逗号隔开。每
25、一条条TCPTCP连接连接唯一地被通信两端的两个端点(即两个套接字)唯一地被通信两端的两个端点(即两个套接字)所确定。所确定。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社套接字示意图套接字示意图 程序A 程序B基于TCP/IP的网络网络管理软件网络接口卡套接字套接字主机A主机B 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社三种套接字三种套接字 流式套接字流式套接字它提供了它提供了一种可靠的、面向连接一种可靠的、面向连接的双向数据传输的双向数据传输服务,实现了数据无差错、无重复地发送。流式服务,实现了数据无差错、无重复地发送。流式套接字内设流
26、量控制,被传输的数据看作是无记套接字内设流量控制,被传输的数据看作是无记录边界的字节流。录边界的字节流。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社三种套接字三种套接字 数据报套接字数据报套接字它它提供了一种无连接提供了一种无连接、不可靠的双向数据传输服、不可靠的双向数据传输服务。数据包以独立的包形式被发送,并且保留了务。数据包以独立的包形式被发送,并且保留了记录边界,不提供可靠性保证。数据在传输过程记录边界,不提供可靠性保证。数据在传输过程中可能会丢失或重复,并且不能保证在接收端的中可能会丢失或重复,并且不能保证在接收端的数据按发送顺序接收。数据按发送顺序接收。
27、李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社三种套接字三种套接字 原始套接字原始套接字该套接字允许对较低层协议(如该套接字允许对较低层协议(如IPIP或或ICMPICMP)进行)进行直接访问,常用于检验新的网络协议实现,也可直接访问,常用于检验新的网络协议实现,也可用于测试新配置或安装的网络设备。用于测试新配置或安装的网络设备。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.39.3UDPUDP协议协议9.3.1 UDP9.3.1 UDP概述概述UDP UDP 只在只在 IP IP 的数据报服务之上增加了的数据报服务之上增加了很少一很少一点
28、的功能点的功能,即,即端口的功能端口的功能和和差错检测差错检测的功能。的功能。虽然虽然 UDP UDP 用户数据报只能提供不可靠的交付,用户数据报只能提供不可靠的交付,但但 UDP UDP 在某些方面有其特殊的优点。在某些方面有其特殊的优点。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社UDP UDP 的的主要特点主要特点 UDP UDP是无连接的是无连接的,即发送数据之前不需要建立连,即发送数据之前不需要建立连接。接。 UDPUDP使用尽最大努力交付使用尽最大努力交付,即不保证可靠交付,即不保证可靠交付,同时也不使用拥塞控制。同时也不使用拥塞控制。 UDPUDP是面
29、向报文的是面向报文的, ,应用层交给应用层交给UDPUDP多长的报文,多长的报文,UDPUDP就照样发送,即一次发送一个报文。就照样发送,即一次发送一个报文。 UDPUDP没有拥塞控制没有拥塞控制、所以网络出现的拥塞不会使、所以网络出现的拥塞不会使源主机的发送速率降低。源主机的发送速率降低。 UDPUDP支持一对一支持一对一、一对多和多对多的交互通信。、一对多和多对多的交互通信。 UDPUDP的首部开销小的首部开销小,只有,只有 8 8 个字节。个字节。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社UDP UDP 是面向报文的是面向报文的 IP 数据报的数据部分IP
30、首部IP 层UDP 首部UDP 用户数据报的数据部分传输层应用层报文应用层 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.3.2 UDP9.3.2 UDP数据报的首部格式数据报的首部格式伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社UDP UDP 基于端口的分用基于端口的分用 IP 层UDP 数据报到达端口 2端口 3端口 1UDP 分用 李太君李太君 林元乖林元乖 等编著
31、等编著 清华大学清华大学出版社出版社伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是两个字节。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报在计算检验和时,临时把“伪首部”和
32、 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.49.4TCPTCP协议协议TCP/IPTCP/IP的网络层提供的是一种面向无连接的网络层提供的是一种面向无连接的的IPIP数据报服务,但传输层的数据报服务,但传输层的TCPTCP旨在旨在向向TCP/IPTCP/IP的应用层提供的是一种端到端的面向连接的的应用层提供的是一种端到端的面向连接的可可靠的数据流传输服务靠的数据流传输服务。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.4.19.4.1TCPTCP最主要的特点最主要的特点
33、TCP TCP 是是面向连接面向连接的传输层协议。的传输层协议。 每一条每一条TCPTCP连接连接只能有两个端点只能有两个端点(endpoint)(endpoint),每一条,每一条 TCP TCP 连接只能是点连接只能是点对点的(一对一)。对点的(一对一)。 TCP TCP 提供提供可靠交付可靠交付的服务。的服务。 TCP TCP 提供提供全双工全双工通信。通信。面向字节流。面向字节流。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社7 68HTCP TCP 面向流的概念面向流的概念 发送 TCP 报文段发送方接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程
34、12150181716151419202145131211 H10 9 H加上 TCP 首部构成 TCP 报文段TCPTCP字节流字节流H表示 TCP 报文段的首部x表示序号为 x 的数据字节TCP 连接 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.4.29.4.2TCPTCP报文段的首部报文段的首部TCPTCP虽然是面向字节流的,但虽然是面向字节流的,但TCPTCP传送的数传送的数据单元却是据单元却是报文段报文段(SegmentSegment),),TCPTCP通过报文通过报文段的交互来建立连接、传输数据、发出确认、段的交互来建立连接、传输数据、发出确认、进行差
35、错控制、流量控制及关闭连接。进行差错控制、流量控制及关闭连接。报文段分为两部分,即报文段分为两部分,即首部首部和和数据数据两部分。两部分。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20 字节的固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FIN32 位SYNRSTPSHACKURG位 0 8 16 24 31填 充TCP 数据部分TCP 首部TCP 报文段IP 数据部分IP 首部发送在前 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部
36、目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充源端口和目的端口字段各占 2 字节。端口是传输层与应用层的服务接口。传输层的复用和分用功能都要通过端口才能实现。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充序号字段占 4 字节。TCP
37、连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充确认号字段占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项
38、 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充数据偏移(即首部长度)占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充保留字段占 6
39、位,保留为今后使用,但目前应置为 0。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充紧急 URG 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源
40、端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充确认 ACK 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充推送 PSH (PuSH) 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存
41、都填满了后再向上交付。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充复位 RST (ReSeT) 当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可
42、 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充同步 SYN 同步 SYN = 1 表示这是一个连接请求或连接接受报文。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充终止 FIN (FINis) 用来释放一个连接。FIN 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。 李
43、太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充窗口字段窗口字段 占占 2 字节,用来让对方设置发送窗口的字节,用来让对方设置发送窗口的依据,单位为字节。依据,单位为字节。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号
44、保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充检验和 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充紧急指针字段 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。 李太君
45、李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充选项字段 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。” MSS (Maximum Segment Size)是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。 李太
46、君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社课件制作人:谢希仁其他选项其他选项窗口扩大选项 占 3 字节,其中有一个字节表示移位值 S。新的窗口值等于TCP 首部中的窗口位数增大到(16 + S),相当于把窗口值向左移动 S 位后获得实际的窗口大小。时间戳选项占10 字节,其中最主要的字段时间戳值字段(4 字节)和时间戳回送回答字段(4 字节)。选择确认选项 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSY
47、NRSTPSHACKURG位 0 8 16 24 31填 充填充字段 这是为了使整个首部长度是 4 字节的整数倍。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.4.39.4.3可靠传输的原理可靠传输的原理 TCPTCP发送的报文段是交给发送的报文段是交给IPIP层传送的。但层传送的。但IPIP层只能提供尽最大努力服务,即层只能提供尽最大努力服务,即TCPTCP下面的网络下面的网络所提供的是不可靠的传输。所以,所提供的是不可靠的传输。所以,TCPTCP必须采用必须采用适当的措施才能使得两个传输层之间的通信变适当的措施才能使得两个传输层之间的通信变得可靠。得可靠。 李
48、太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社理想的传输条件理想的传输条件 传输信道不产生差错。传输信道不产生差错。 不不管管发发送送方方以以多多快快的的速速度度发发送送数数据据,接接收方总是来得及处理收到的数据。收方总是来得及处理收到的数据。在在这这样样的的理理想想传传输输条条件件下下,不不需需要要采采取取任任何措施就能够实现可靠传输。何措施就能够实现可靠传输。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社1 1、停止等待协议、停止等待协议 “停停止止等等待待”就就是是每每发发送送完完一一个个分分组组就就停停止止发发送送,等等待待对对方方的的确
49、确认认,在在收收到到确确认认后后再再发发送下一个分组。送下一个分组。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社 无差错情况无差错情况 A发送分组M1,发完就暂停发送,等待B的确认。B收到了M1就向A发送确认。A在收到了对M1的确认后,就再发送下一个分组M2。同样,在收到B对M2的确认后,再发送M3。 A发送 M1确认 M1B发送 M2发送 M3确认 M2确认 M3tt 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社 出现差错出现差错 B接收M1时检测出了差错,就丢弃M1,其他什么也不做(不通知A收到有差错的分组)。也可能是M1在传输过程中丢
50、失了,这时B当然什么都不知道。在这两种情况下,B都不会发送任何信息。可靠传输协议是这样设计的:A只要超过了一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,所以重传前面发送过的分组。 A发送 M1B超时重传 M1发送 M2确认 M1丢弃有差错的报文tt 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社请注意请注意在发送完一个分组后,必须暂时保留已发送的分在发送完一个分组后,必须暂时保留已发送的分组的副本。组的副本。分组和确认分组都必须进行编号。分组和确认分组都必须进行编号。超时计时器的重传时间应当比数据在分组传输的超时计时器的重传时间应当比数据在分组传输的平均往返时间
51、更长一些。平均往返时间更长一些。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社 确认丢失和确认迟到确认丢失和确认迟到 B B所所发发送送的的对对M2M2的的确确认认丢丢失失了了。A A在在设设定定的的超超时时重重传传时时间间内内没没有有收收到到确确认认,但但并并无无法法知知道道是是自自己己发发送送的的分分组组出出错错、丢丢失失,或或者者是是B B发发送送的的确确认认丢丢失失了了。所所以以,A A在在超超时时计计时时器器到到期期后后就就要要重重传传M2M2。现现在在应应注注意意B B的的动动作作,假假设设B B又又收收到了重传的分组到了重传的分组M2M2。这时应采取两个
52、行动。这时应采取两个行动。第第一一,丢丢弃弃这这个个重重复复的的分分组组M2M2,不不向向上上层层交付。交付。第第二二,向向A A发发送送确确认认。不不能能认认为为已已经经发发送送过过确确认认就就不不再再发发送送,因因为为A A之之所所以以重重传传M2M2就就表表示示A A没有收到对没有收到对M2M2的确认。的确认。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社 确认丢失和确认迟到确认丢失和确认迟到 A发送 M1B超时重传 M1发送 M2丢弃重复的 M1重传确认 M1(a) 确认丢失确认 M1A发送 M1B超时重传 M1发送 M2丢弃重复的 M1重传确认M1(b) 确
53、认迟到确认 M1收下迟到的确认但什么也不做tttt 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社可靠通信的实现可靠通信的实现使用上述的确认和重传机制,我们就可以使用上述的确认和重传机制,我们就可以在不在不可靠的传输网络上实现可靠的通信。可靠的传输网络上实现可靠的通信。这种可靠传输协议常称为这种可靠传输协议常称为自动重传请求自动重传请求ARQARQ (Automatic Repeat (Automatic Repeat reQuestreQuest) )。ARQ ARQ 表明重传的请求是表明重传的请求是自动自动进行的。接收方不进行的。接收方不需要请求发送方重传某个出错的
54、分组需要请求发送方重传某个出错的分组 。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社(4)(4)信道利用率信道利用率 停止等待协议的优点是简单,但缺点是信道利用率太低。TDRTTATD + RTT + TAB分组确认tt分组确认 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社信道的利用率信道的利用率 U U 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社流水线传输流水线传输 发送方可发送方可连续发送连续发送多个分组,不必每发完一个分多个分组,不必每发完一个分组就停顿下来等待对方的确认。组就停顿下来等待对方的确认。由于信
55、道上一直有数据不间断地传送,这种传输由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。方式可获得很高的信道利用率。 B分组ttAACK 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社2 2、连续、连续ARQARQ协议协议当当使使用用流流水水线线传传输输时时,要要使使用用到到连连续续ARQARQ协协议和滑动窗口协议。议和滑动窗口协议。123456789101112(a) 发送方维持发送窗口(发送窗口是 5)发送窗口(b) 收到一个确认后发送窗口向前滑动向前123456789101112发送窗口 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学
56、出版社出版社累积确认累积确认 接收方一般采用接收方一般采用累积确认累积确认的方式。即不必对收的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:后一个分组发送确认,这样就表示:到这个分到这个分组为止的所有分组都已正确收到了组为止的所有分组都已正确收到了。累积确认有的优点是:容易实现,即使确认丢累积确认有的优点是:容易实现,即使确认丢失也不必重传。缺点是:不能向发送方反映出失也不必重传。缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。接收方已经正确收到的所有分组的信息。 李太君李太君 林元乖林元乖 等编著
57、等编著 清华大学清华大学出版社出版社Go-back-NGo-back-N(回退回退 N N) 如果发送方发送了前如果发送方发送了前 5 5 个分组,而中间的第个分组,而中间的第 3 3 个分组丢失了。这时接收方只能对前两个分个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。下落,而只好把后面的三个分组都再重传一次。这就叫做这就叫做 Go-back-NGo-back-N(回退回退 N N),表示需要再表示需要再退回来重传已发送过的退回来重传已发送过的 N N 个分组。个分组。可见当通信线
58、路质量不好时,连续可见当通信线路质量不好时,连续 ARQ ARQ 协议协议会带来负面的影响。会带来负面的影响。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社3 3、滑动窗口协议、滑动窗口协议 TCPTCP的滑动窗口是以字节为单位的的滑动窗口是以字节为单位的 前移不允许发送已发送并收到确认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 56B 期望收到的序号前沿后沿前移收缩根据 B 给出的窗口值A 构造
59、出自己的发送窗口 TCP 标准强烈不赞成发送窗口前沿向后收缩 不允许发送已发送并收到确认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已发送但未收到确认56P1P2P3不允许接收已发送确认并交付主机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 发
60、送了 11 个字节的数据 P3 P1 = A 的发送窗口(又称为通知窗口)P2 P1 = 已发送但尚未收到确认的字节数P3 P2 = 允许发送但尚未发送的字节数(又称为可用窗口) 允许发送但尚未发送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已发送并收到确认不允许发送已发送但未收到确认56P1P2P3允许接收B 的接收窗口向前滑动26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
61、 45 46 47 48 49 50 51 52 53 54 55已发送确认并交付主机不允许接收56未按序收到A 收到新的确认号,发送窗口向前滑动 先存下,等待缺少的数据的到达不允许发送已发送并收到确认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已发送但未收到确认56P1P2P3A 的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.4.49.4
62、.4TCPTCP的连接管理的连接管理TCPTCP是一种是一种面向连接的传输层协面向连接的传输层协议,在数据议,在数据传输之前必须首先建立连接,在传输完成后释传输之前必须首先建立连接,在传输完成后释放连接。放连接。TCPTCP连接包括连接包括建立连接建立连接、数据传输数据传输和和释放连释放连接接三个过程。三个过程。TCPTCP通过通过TCPTCP端口提供连接服务端口提供连接服务,最后通过,最后通过连接服务来接收和发送数据。连接服务来接收和发送数据。TCPTCP连接的申请、连接的申请、打开和关闭必须遵守打开和关闭必须遵守TCPTCP协议的规定协议的规定 李太君李太君 林元乖林元乖 等编著等编著 清
63、华大学清华大学出版社出版社TCPTCP连接建立过程中要解决以下连接建立过程中要解决以下三个问题三个问题 要使每一方能够确知对方的存在。要使每一方能够确知对方的存在。 要允许双方协商一些参数(如最大窗口要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选值、是否使用窗口扩大选项和时间戳选项以项以及服务质量等)。及服务质量等)。 能够对传输实体资源(如缓存大小、连能够对传输实体资源(如缓存大小、连接表中的项目等)进行分配。接表中的项目等)进行分配。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社1 1、建立连接、建立连接TCPTCP协议使用三次握手方法来建立
64、连接。连协议使用三次握手方法来建立连接。连接可以由任何一方发起,也可以由双方同时发接可以由任何一方发起,也可以由双方同时发起。一旦一台主机上的起。一旦一台主机上的TCPTCP软件已经主动发起连软件已经主动发起连接请求,运行在另一台主机上的接请求,运行在另一台主机上的TCPTCP软件就被动软件就被动地等待握手。地等待握手。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社客户服务器方式客户服务器方式 TCP TCP 连接的建立都是采用客户服务器方式。连接的建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做主动发起连接建立的应用进程叫做客户客户(client)(cli
65、ent)。被动等待连接建立的应用进程叫做被动等待连接建立的应用进程叫做服务器服务器(server)(server)。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社用三次握手建立用三次握手建立 TCP TCP 连接连接 SYN = 1, seq = xCLOSEDCLOSED主动打开被动打开AB客户服务器A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。1、建立连接 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社SYN = 1, seq = xCL
66、OSEDCLOSED主动打开被动打开AB客户服务器SYN = 1, ACK = 1, seq = y, ack= x 1 B 的 TCP 收到连接请求报文段后,如同意,则 发回确认。 B 在确认报文段中应使 SYN = 1,使 ACK = 1, 其确认号ack = x 1,自己选择的序号 seq = y。用三次握手建立用三次握手建立 TCP TCP 连接连接 1、建立连接 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社SYN = 1, seq = xACK = 1, seq = x + 1, ack = y 1CLOSEDCLOSED主动打开被动打开AB客户服务器SYN
67、 = 1, ACK = 1, seq = y, ack= x 1 A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y 1。 A 的 TCP 通知上层应用进程,连接已经建立。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社SYN = 1, seq = xACK = 1, seq = x + 1, ack = y 1CLOSEDCLOSED数据传送主动打开被动打开AB客户服务器SYN = 1, ACK = 1, seq = y, ack= x 1 B 的 TCP 收到主机 A 的确认后,也通知其上层 应用进程:TCP 连接已经建立。 李太君李太
68、君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社SYN-SENTESTAB-LISHEDSYN-RCVDLISTENESTAB-LISHEDSYN = 1, seq = xACK = 1, seq = x + 1, ack = y 1CLOSEDCLOSED数据传送主动打开被动打开AB客户服务器SYN = 1, ACK = 1, seq = y, ack= x 1用三次握手建立用三次握手建立 TCP TCP 连接连接 1、建立连接 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社2 2、传送数据、传送数据位于位于TCPTCPIPIP分层模型的较上层的应用程序传
69、输数据分层模型的较上层的应用程序传输数据流给流给TCPTCP。TCPTCP接收到字节流并且把它们接收到字节流并且把它们分解成段分解成段。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社 主机A使用滑动窗口发送全部的四个数据段到主机B。这是第一步。不幸的是,只有段l03、105和106成功地到达了生机B, 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社 因为段103和104是连续的,所以主机B返回一个确认给主机A,通知主机A它只成功地接收到了第103段,在它的确认中主机B使用它期待得到的下一个序列号作为确认,给出序列号104。 李太君李太君 林元乖
70、林元乖 等编著等编著 清华大学清华大学出版社出版社 主机A接到主机B的报文后,重新发送段104、105和106。虽然主机B已经成功地收到了段105和106,但是根据协议规定,也必须重新发送。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社 当主机2成功地收到这些段以后,主机B返回一个确认给主机A,并根据序列号把它们重组成原来的数流,把它传输到高层应用程序。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社FIN = 1, seq = uCLOSED主动关闭数据传送ESTAB-LISHEDESTAB-LISHEDAB客户服务器CLOSED3 3、释放
71、连接、释放连接 数据传输结束后,通信的双方都可释放连接。 现在 A 的应用进程先向其 TCP 发出连接释放 报文段,并停止再发送数据,主动关闭 TCP 连接。 A 把连接释放报文段首部的 FIN = 1,其序号 seq = u,等待 B 的确认。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社FIN = 1, seq = uACK = 1, seq = v, ack= u 1主动关闭数据传送通知应用进程ESTAB-LISHEDESTAB-LISHEDAB客户服务器 B 发出确认,确认号 ack = u 1, 而这个报文段自己的序号 seq = v。 TCP 服务器进程通
72、知高层应用进程。 从 A 到 B 这个方向的连接就释放了,TCP 连接 处于半关闭状态。B 若发送数据,A 仍要接收。3 3、释放连接、释放连接 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社FIN = 1, seq = uACK = 1, seq = v, ack= u 1FIN = 1, ACK = 1, seq = w, ack= u 1主动关闭被动关闭数据传送通知应用进程ESTAB-LISHEDESTAB-LISHEDAB客户服务器数据传送 若 B 已经没有要向 A 发送的数据, 其应用进程就通知 TCP 释放连接。 3 3、释放连接、释放连接 李太君李太君 林
73、元乖林元乖 等编著等编著 清华大学清华大学出版社出版社FIN = 1, seq = uACK = 1, seq = v, ack= u 1FIN = 1, ACK = 1, seq = w, ack= u 1主动关闭被动关闭数据传送通知应用进程ESTAB-LISHEDESTAB-LISHEDAB客户服务器数据传送 A 收到连接释放报文段后,必须发出确认。 ACK = 1, seq = u + 1, ack = w 13 3、释放连接、释放连接 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社A A 必须等待必须等待 2MSL 2MSL 的时间的时间第一,为了保证第一,为了
74、保证 A A 发送的最后一个发送的最后一个 ACK ACK 报文报文段能够到达段能够到达 B B。第二,防止第二,防止 “已失效的连接请求报文段已失效的连接请求报文段”出出现在本连接中。现在本连接中。A A 在发送完最后一个在发送完最后一个 ACK ACK 报报文段后,再经过时间文段后,再经过时间 2MSL2MSL,就可以使本连接,就可以使本连接持续的时间内所产生的所有报文段,都从网络持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。出现这种旧的连接请求报文段。 李太君李太君 林元乖林元乖 等编著
75、等编著 清华大学清华大学出版社出版社9.4.59.4.5TCPTCP的流量控制的流量控制一般说来,我们总是希望数据传输得更快一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。方就可能来不及接收,这就会造成数据的丢失。流量控制流量控制(flow control)(flow control)就是让发送方的就是让发送方的发送速率不要太快,既要让接收方来得及接收,发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。也不要使网络发生拥塞。利用滑动窗口机制可以很方便地在利用滑动窗口机制可
76、以很方便地在 TCP TCP 连连接上实现流量控制。接上实现流量控制。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社seq = 1, DATAseq = 201, DATAseq = 401, DATAseq = 301, DATAseq = 101, DATAseq = 201, DATAseq = 501, DATAACK = 1, ack = 201, rwnd = 300ACK = 1, ack = 601, rwnd = 0ACK = 1, ack = 501, rwnd = 100AB允许 A 发送序号 201 至 500 共 300 字节A 发送了序号
77、101 至 200,还能发送 200 字节A 发送了序号 301 至 400,还能再发送 100 字节新数据A 发送了序号 1 至 100,还能发送 300 字节A 发送了序号 401 至 500,不能再发送新数据了A 超时重传旧的数据,但不能发送新的数据允许 A 发送序号 501 至 600 共 100 字节A 发送了序号 501 至 600,不能再发送了不允许 A 再发送(到序号 600 为止的数据都收到了)丢失!A 向 B 发送数据。在连接建立时,B 告诉 A:“我的接收窗口 rwnd = 400(字节)”。流量控制举例流量控制举例 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华
78、大学出版社出版社持续计时器持续计时器(persistence timer)(persistence timer)TCP TCP 为每一个连接设有一个为每一个连接设有一个持续计时器持续计时器。只要只要 TCP TCP 连接的一方收到对方的连接的一方收到对方的零窗口零窗口通知,通知,就启动持续计时器。就启动持续计时器。若持续计时器设置的时间到期,就发送一个零若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带窗口探测报文段(仅携带 1 1 字节的数据),字节的数据),而对方就在确认这个探测报文段时给出了现在而对方就在确认这个探测报文段时给出了现在的窗口值。的窗口值。若窗口仍然是零,则收到
79、这个报文段的一方就若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。重新设置持续计时器。若窗口不是零,则死锁的僵局就可以打破了若窗口不是零,则死锁的僵局就可以打破了。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社必须考虑传输效率必须考虑传输效率可以用不同的机制来控制可以用不同的机制来控制 TCP TCP 报文段的发送报文段的发送时机时机: :第一种机制是第一种机制是 TCP TCP 维持一个变量,它等于最维持一个变量,它等于最大报文段长度大报文段长度 MSSMSS。只要缓存中存放的数据达。只要缓存中存放的数据达到到 MSS MSS 字节时,就组装成一个字节时
80、,就组装成一个 TCP TCP 报文段发报文段发送出去。送出去。第二种机制是由发送方的应用进程指明要求发第二种机制是由发送方的应用进程指明要求发送报文段,即送报文段,即 TCP TCP 支持的推送支持的推送(push)(push)操作。操作。第三种机制是发送方的一个计时器期限到了,第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但这时就把当前已有的缓存数据装入报文段(但长度不能超过长度不能超过 MSSMSS)发送出去。)发送出去。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.4.69.4.6TCPTCP的拥塞控制的拥塞控制当一个网络面
81、对的负载超过了它的处理能当一个网络面对的负载超过了它的处理能力时,拥塞就会发生。针对拥塞的真正解决方力时,拥塞就会发生。针对拥塞的真正解决方案是减慢数据率。案是减慢数据率。理论上,通过使用一条从物理学中套用过理论上,通过使用一条从物理学中套用过来的法则:分组守恒法则,拥塞现象就可以得来的法则:分组守恒法则,拥塞现象就可以得到控制。它的基本思想是,只有当一个老的分到控制。它的基本思想是,只有当一个老的分组离开(即被递交)之后才允许向网络注入一组离开(即被递交)之后才允许向网络注入一个新的分组。个新的分组。TCPTCP企图通过动态地维护窗口的大企图通过动态地维护窗口的大小来实现这个目标。小来实现这
82、个目标。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社用水压来说明这个问题用水压来说明这个问题 图9-26 (a)快速的网络向小容量的接收方传输数据(b)慢速的网络向大容量的接收方传输数据 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.4.69.4.6TCPTCP的拥塞控制的拥塞控制n发送方维持一个叫做发送方维持一个叫做拥塞窗口拥塞窗口 cwndcwnd (congestion window)(congestion window)的状态变量。拥塞窗口的的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变大小取决于网络的拥塞程度,并
83、且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。化。发送方让自己的发送窗口等于拥塞窗口。如再考虑到接收方的接收能力,则发送窗口还如再考虑到接收方的接收能力,则发送窗口还可能小于拥塞窗口。可能小于拥塞窗口。n发送方控制拥塞窗口的发送方控制拥塞窗口的原则原则是:只要网络没是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的拥塞窗口就减小一些,以减少注入到网络中的分组数。分组数。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大
84、学出版社出版社发送方又如何知道网络发生了拥塞呢?发送方又如何知道网络发生了拥塞呢? 当当网网络络发发生生拥拥塞塞时时,路路由由器器就就要要丢丢弃弃分分组组。所所以以只只要要发发送送方方没没有有按按时时收收到到应应当当到到达达的的确确认认报报文文,就就可可以以猜猜想想网网络络可可能能出出现现了了拥拥塞塞。现现在在通通信信线线路路的的传传输输质质量量一一般般都都很很好好,因因传传输输出出差差错错而而丢丢弃弃分分组组的的概概率率是是很很小小的的(远小于(远小于1%1%)。)。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社1 1、慢开始算法、慢开始算法 n慢开始算法的原理:慢
85、开始算法的原理:n在在主主机机刚刚刚刚开开始始发发送送报报文文段段时时可可先先设设置置拥拥塞塞窗窗口口 cwndcwnd = = 1 1,即即设设置置为为一一个个最最大大报报文文段段 MSS MSS 的数值。的数值。n在在每每收收到到一一个个对对新新的的报报文文段段的的确确认认后后,将将拥拥塞窗口加塞窗口加 1 1,即增加一个,即增加一个 MSS MSS 的数值。的数值。n用用这这样样的的方方法法逐逐步步增增大大发发送送端端的的拥拥塞塞窗窗口口 cwndcwnd,可以使分组注入到网络的速率更加合理可以使分组注入到网络的速率更加合理发送方接收方发送 M1 确认 M1发送 M2M3 确认 M2M3
86、 发送 M4M7 确认 M4M7 cwnd = 1 cwnd = 2 cwnd = 4 发送 M8M15cwnd = 8 tt发送方每收到一个对新报文段的确认(重传的不算在内)就使 cwnd 加 1。 轮次 1轮次 2轮次 3 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社传输轮次传输轮次( (transmission round)transmission round)使用慢开始算法后,每经过一个使用慢开始算法后,每经过一个传输轮次传输轮次,拥,拥塞窗口塞窗口 cwndcwnd 就加倍。就加倍。 一个传输轮次所经历的时间其实就是往返时间一个传输轮次所经历的时间其实就是往
87、返时间 RTTRTT。“传输轮次传输轮次”更加强调:把拥塞窗口更加强调:把拥塞窗口 cwndcwnd 所所允许发送的报文段都连续发送出去,并收到了允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。对已发送的最后一个字节的确认。例如,拥塞窗口例如,拥塞窗口 cwndcwnd = 4 = 4,这时的往返时间这时的往返时间 RTT RTT 就是发送方连续发送就是发送方连续发送 4 4 个报文段,并收个报文段,并收到这到这 4 4 个报文段的确认,总共经历的时间。个报文段的确认,总共经历的时间。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社设置慢开始门限状
88、态变量设置慢开始门限状态变量ssthreshssthresh慢开始门限慢开始门限 ssthreshssthresh 的用法如下:的用法如下:当当 cwndcwnd ssthreshssthresh 时,停止使用慢开始算时,停止使用慢开始算法而改用拥塞避免算法。法而改用拥塞避免算法。当当 cwndcwnd = = ssthreshssthresh 时,既可使用慢开始算时,既可使用慢开始算法,也可使用拥塞避免算法。法,也可使用拥塞避免算法。拥塞避免算法的思路是让拥塞窗口拥塞避免算法的思路是让拥塞窗口 cwndcwnd 缓慢缓慢地增大,即每经过一个往返时间地增大,即每经过一个往返时间 RTT RTT
89、 就把发就把发送方的拥塞窗口送方的拥塞窗口 cwndcwnd 加加 1 1,而不是加倍,使,而不是加倍,使拥塞窗口拥塞窗口 cwndcwnd 按线性规律缓慢增长。按线性规律缓慢增长。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社2 2、拥塞避免算法拥塞避免算法 拥拥塞塞避避免免算算法法的的思思路路是是:在在慢慢开开始始算算法法发发生生一一次次超超时时,ssthreshssthresh值值被被设设置置为为当当前前拥拥塞塞窗窗口口的的一一半半,从从这这个个点点开开始始让让拥拥塞塞窗窗口口cwndcwnd 缓缓慢慢地地线线性性增增大大。即即每每经经过过一一个个往往返返时时间
90、间 RTT RTT 就就把把发发送送方方的的拥拥塞塞窗窗口口cwndcwnd 加加1 1,而而不不是是加加倍倍,使使拥拥塞塞窗窗口口cwndcwnd按按线线性性规规律律缓缓慢慢增增长长,比比慢慢开开始始算法的拥塞窗口增长速率缓慢得多。算法的拥塞窗口增长速率缓慢得多。2216慢开始和拥塞避免算法的实现举例慢开始和拥塞避免算法的实现举例 当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用字节而使用报文段。慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。“乘法减小”24681012141618200048122024拥塞窗口 cwnd新的 ssthres
91、h 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例慢开始和拥塞避免算法的实现举例 发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。2216“乘法减小”24681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例慢开始和拥塞避
92、免算法的实现举例 在执行慢开始算法时,拥塞窗口 cwnd 的初始值为 1,发送第一个报文段 M0。 2216“乘法减小”24681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例慢开始和拥塞避免算法的实现举例 发送端每收到一个确认 ,就把 cwnd 加 1。于是发送端可以接着发送 M1 和 M2 两个报文段。 2216“乘法减小”24681012141618200048122024拥塞窗口 cwnd新的 ssthresh
93、值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例慢开始和拥塞避免算法的实现举例 接收端共发回两个确认。发送端每收到一个对新报文段的确认,就把发送端的 cwnd 加 1。现在 cwnd 从 2 增大到 4,并可接着发送后面的 4 个报文段。 2216“乘法减小”24681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例慢开始
94、和拥塞避免算法的实现举例 发送端每收到一个对新报文段的确认,就把发送端的拥塞窗口加 1,因此拥塞窗口 cwnd 随着传输轮次按指数规律增长。 2216“乘法减小”24681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例慢开始和拥塞避免算法的实现举例 当拥塞窗口 cwnd 增长到慢开始门限值 ssthresh 时(即当 cwnd = 16 时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。 2216“乘法减小”2
95、4681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次2216“乘法减小”24681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例慢开始和拥塞避免算法的实现举例 假定拥塞窗口的数值增长到 24 时,网络出现超时,表明网络拥塞了。 传输轮次2216“乘法减小”24681012
96、141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例慢开始和拥塞避免算法的实现举例 更新后的 ssthresh 值变为 12(即发送窗口数值 24 的一半),拥塞窗口再重新设置为 1,并执行慢开始算法。 传输轮次2216“乘法减小”24681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值网络拥塞指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”慢开始
97、和拥塞避免算法的实现举例慢开始和拥塞避免算法的实现举例 当 cwnd = 12 时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个 MSS 的大小。 传输轮次 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社乘法减小乘法减小( (multiplicative decrease)multiplicative decrease) “乘乘法法减减小小“是是指指不不论论在在慢慢开开始始阶阶段段还还是是拥拥塞塞避避免免阶阶段段,只只要要出出现现一一次次超超时时(即即出出现现一一次次网网络络拥拥塞塞),就就把把慢慢开开始始门门限限值值 ssthreshss
98、thresh 设设置置为为当当前前的拥塞窗口值乘以的拥塞窗口值乘以 0.50.5。当当网网络络频频繁繁出出现现拥拥塞塞时时,ssthreshssthresh 值值就就下下降降得得很快,以大大减少注入到网络中的分组数。很快,以大大减少注入到网络中的分组数。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社加法增大加法增大( (additive increase)additive increase) “加加法法增增大大”是是指指执执行行拥拥塞塞避避免免算算法法后后,在在收收到到对对所所有有报报文文段段的的确确认认后后(即即经经过过一一个个往往返返时时间间),就就把把拥拥塞塞窗
99、窗口口 cwndcwnd增增加加一一个个 MSS MSS 大大小小,使使拥拥塞塞窗窗口口缓缓慢慢增增大大,以以防防止网络过早出现拥塞。止网络过早出现拥塞。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社3.3. 快重传和快恢复快重传和快恢复快快重重传传算算法法首首先先要要求求接接收收方方每每收收到到一一个个失失序序的的报报文文段段后后就就立立即即发发出出重重复复确确认认。这这样样做做可可以以让让发发送送方方及及早早知知道道有有报报文文段段没没有有到到达接收方。达接收方。 发发送送方方只只要要一一连连收收到到三三个个重重复复确确认认就就应应当当立即重传对方尚未收到的报文段
100、。立即重传对方尚未收到的报文段。 不不难难看看出出,快快重重传传并并非非取取消消重重传传计计时时器器,而而是是在在某某些些情情况况下下可可更更早早地地重重传传丢丢失失的的报报文段。文段。 快重传举例快重传举例发送方接收方发送 M1 确认 M1t 确认 M2 发送 M2发送 M3发送 M4 ?发送 M5发送 M6 重复确认 M2 立即重传 M3 重复确认 M2 重复确认 M2 t发送 M7收到三个连续的对 M2 的重复确认立即重传 M3丢失 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社快恢复算法快恢复算法 (1) (1) 当发送端收到连续三个重复的确认时,就执当发送端收
101、到连续三个重复的确认时,就执行行“乘法减小乘法减小”算法,把慢开始门限算法,把慢开始门限 ssthreshssthresh 减半。但接下去不执行慢开始算法。减半。但接下去不执行慢开始算法。 (2)(2)由于发送方现在认为网络很可能没有发生拥由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口塞,因此现在不执行慢开始算法,即拥塞窗口 cwndcwnd 现在不设置为现在不设置为 1 1,而是设置为慢开始门,而是设置为慢开始门限限 ssthreshssthresh 减半后的数值,然后开始执行拥减半后的数值,然后开始执行拥塞避免算法(塞避免算法(“加法增大加法增大”),使拥塞
102、窗口缓),使拥塞窗口缓慢地线性增大。慢地线性增大。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社24从连续收到三个重复的确认转入拥塞避免从连续收到三个重复的确认转入拥塞避免 2468101214161820220048121620传输轮次拥塞窗口 cwnd收到 3 个重复的确认执行快重传算法慢开始“乘法减小”拥塞避免“加法增大”TCP Reno版本TCP Tahoe 版本(已废弃不用)ssthresh 的初始值拥塞避免“加法增大”新的 ssthresh 值慢开始快恢复 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社9.4.79.4.7TCPTC
103、P维持的时钟与维持的时钟与TCPTCP超时重传机制超时重传机制 TCPTCP使使用用多多个个定定时时器器(至至少少从从概概念念上上来来讲讲是是定定时时器器)来来完完成成它它的的工工作作。其其中中最最重重要要的的是是重重传传定定时时器器。当当TCPTCP实实体体发发送送一一个个数数据据段段的的时时候候,它它同同时时也也启启动动一一个个重重传传定定时时器器。如如果果在在定定时时器器过过期期之之前前该该数数据据段段被被确确认认的的话话,则则定定时时器器被被停停止止。另另一一方方面面,如如果果在在确确认认到到来来之之前前定定时时器器先先到到期期,则则数数据据段段被被重重传传(并并且且该该定定时时器器又
104、又被被重重新启动)。新启动)。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社超时间隔应该为多长?超时间隔应该为多长?解解决决的的方方案案是是使使用用一一个个高高度度动动态态的的算算法法,它它根根据据网网络络性性能能的的连连续续测测量量情情况况,不不断断地地调调整整超超 时时 间间 隔隔 。 TCPTCP通通 常常 采采 用用 的的 算算 法法 是是Jacobson(1988)Jacobson(1988)算算法法,其其工工作作原原理理是是:对对于于每每一一个个连连接接,TCPTCP维维护护一一个个变变量量RTTRTT,它它代代表表了了到到达达连连接接目目标标端端的的往往
105、返返时时间间的的当当前前最最佳佳估估计计值值。当当一一个个数数据据段段被被发发送送出出去去的的时时候候,TCPTCP启启动动一一个个定定时时器器,该该定定时时器器有有两两个个作作用用,一一是是看看需需要要多多长长时时间间该该数数据据段段被被确确认认;二二是是如如果果时时间间太太长长的的话,则触发重传动作。话,则触发重传动作。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社加权平均往返时间加权平均往返时间TCP TCP 保留了保留了 RTT RTT 的一个的一个加权平均往返时间加权平均往返时间 RTTRTTS S(这又称为这又称为平滑的往返时间平滑的往返时间)。)。第一次
106、测量到第一次测量到 RTT RTT 样本时,样本时,RTTRTTS S 值就取为所测量值就取为所测量到的到的 RTT RTT 样本值。以后每测量到一个新的样本值。以后每测量到一个新的 RTT RTT 样本,就按下式重新计算一次样本,就按下式重新计算一次 RTTRTTS S:式中,式中,0 0 1 1。若。若 很接近于零,表示很接近于零,表示 RTT RTT 值值更新较慢。若选择更新较慢。若选择 接近于接近于 1 1,则表示,则表示 RTT RTT 值值更新较快。更新较快。RFC 2988 RFC 2988 推荐的推荐的 值为值为 1/81/8,即,即 0.1250.125。 新的新的 RTTR
107、TTS S (1 (1 ) ) ( (旧的旧的 RTTRTTS S) ) ( (新的新的 RTT RTT 样本样本) ) 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社超时重传时间超时重传时间 RTO RTO ( (RetransmissionTimeRetransmissionTime-Out)-Out)RTO RTO 应略大于上面得出的加权平均往返时间应略大于上面得出的加权平均往返时间 RTTRTTS S。RFC 2988 RFC 2988 建议使用下式计算建议使用下式计算 RTORTO:RTTRTTD D 是是 RTT RTT 的偏差的加权平均值的偏差的加权平均值
108、。RFC 2988 RFC 2988 建议这样计算建议这样计算 RTTRTTD D。第一次测量时,第一次测量时,RTTRTTD D 值取为测量到的值取为测量到的 RTT RTT 样本值的一半。在以后的样本值的一半。在以后的测量中,则使用下式计算加权平均的测量中,则使用下式计算加权平均的 RTTRTTD D: 是个小于是个小于 1 1 的系数,其推荐值是的系数,其推荐值是 1/4 1/4,即,即 0.25 0.25。 RTO RTO RTT RTTS S + 4 + 4 RTT RTTD D 新的新的 RTTRTTD D = (1 = (1 ) ) ( (旧的旧的RTTRTTD D) ) + +
109、 RTTRTTS S 新的新的 RTT RTT 样本样本 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社往返时间 RTT?往返时间的测量相当复杂往返时间的测量相当复杂 TCP TCP 报文段报文段 1 1 没有收到确认。重传(即报文段没有收到确认。重传(即报文段 2 2)后,收到了确认报文段)后,收到了确认报文段 ACKACK。如何判定此确认报文段是对原来的报文段如何判定此确认报文段是对原来的报文段 1 1 的的确认,还是对重传的报文段确认,还是对重传的报文段 2 2 的确认?的确认? 发送一个TCP 报文段超时重传TCP 报文段收到 ACK时间12往返时间 RTT?是
110、对哪一个报文段的确认? 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社KarnKarn 算法算法 在计算平均往返时间在计算平均往返时间 RTT RTT 时,只要报文时,只要报文段重传了,就不采用其往返时间样本。段重传了,就不采用其往返时间样本。这样得出的加权平均平均往返时间这样得出的加权平均平均往返时间 RTTRTTS S 和超时重传时间和超时重传时间 RTO RTO 就较准确。就较准确。 李太君李太君 林元乖林元乖 等编著等编著 清华大学清华大学出版社出版社报文段每重传一次,就把报文段每重传一次,就把 RTO RTO 增大一些:增大一些:新的新的 RTO RTO ( (旧的旧的 RTO) RTO) 系数系数 的典型值是的典型值是 2 2 。当不再发生报文段的重传时,才根据报文段的往返当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延时延更新平均往返时延 RTT RTT 和超时重传时间和超时重传时间 RTO RTO 的数值。的数值。实践证明,这种策略较为合理。实践证明,这种策略较为合理。 修正的修正的 KarnKarn 算法算法