1、8.1运输协议概述运输协议概述一、一、运输层在网络体系结运输层在网络体系结构中的地位构中的地位1、从面向通信和面向信息处理、从面向通信和面向信息处理来划分,则运输层属于面向来划分,则运输层属于面向通信的低层中的最高层。通信的低层中的最高层。 2、从网络功能和用户功能来划、从网络功能和用户功能来划分,则运输层又属于用户功分,则运输层又属于用户功能的高层中的最低层。能的高层中的最低层。 3、通信子网中无运输层,它只、通信子网中无运输层,它只存在于通信子网以外的主机存在于通信子网以外的主机中。中。应用层运输层网络层物理层数据链路层面向信息面向信息处理处理面向通信面向通信用户功能用户功能网络功能网络功
2、能8.1运输协议概述运输协议概述二、运输层的功能二、运输层的功能1、复用与分用:、复用与分用:两个主机进行通信实际上是两个主机中的两个主机进行通信实际上是两个主机中的应用进程应用进程互互相通信。相通信。IP协议虽然能把分组送到目的主机,但这个分组还停协议虽然能把分组送到目的主机,但这个分组还停留在主机的网络层而没有交付给主机中的应用进程。留在主机的网络层而没有交付给主机中的应用进程。因因IP地址是标志在因特网中的一个主机,而地址是标志在因特网中的一个主机,而不是标志不是标志主机中的应用进程主机中的应用进程。由于通信的两个端点是源主机和目的主机中的应用进由于通信的两个端点是源主机和目的主机中的应
3、用进程,因此应用进程之间的通信又称为程,因此应用进程之间的通信又称为端到端的通信端到端的通信。8.1运输协议概述运输协议概述在一个主机中经常有在一个主机中经常有多个应用进程多个应用进程同时分别和另一同时分别和另一个主机中的多个应用进程通信。个主机中的多个应用进程通信。如如,某用户在使用,某用户在使用浏览器查找某网站的信息时,其主机的应用层运行浏览器查找某网站的信息时,其主机的应用层运行浏览器客户进程。如果在浏览网页的同进,还要用浏览器客户进程。如果在浏览网页的同进,还要用电子邮件给网站发送反馈意见,则主机的应用层就电子邮件给网站发送反馈意见,则主机的应用层就还要运行电子邮件的客户进程。还要运行
4、电子邮件的客户进程。运输层一个很重要的功能就是运输层一个很重要的功能就是复用复用和和分用分用。应用层。应用层不同进程的报文通过不同的不同进程的报文通过不同的端口端口向下交到运输层,向下交到运输层,再往下就再往下就共用网络层提供的服务共用网络层提供的服务。当这些报文到达。当这些报文到达目的主机后,目的主机的运输层就使用其目的主机后,目的主机的运输层就使用其分用分用功能,功能,通过不同的通过不同的端口端口将报文分别交付到相应的进程。将报文分别交付到相应的进程。下图示出了这个过程。下图示出了这个过程。( )( )( )( )8.1运输协议概述运输协议概述AP1AP2LAN1AP3AP4WANLAN2
5、R1R2IP协议的作用范围协议的作用范围运输层协议运输层协议TCP和和UDP的作用范围的作用范围主机主机A主机主机B54321AP1AP2( )( )( )( )54321AP3AP4运输层提供应用进程间的逻辑通信运输层提供应用进程间的逻辑通信端口端口应用进程应用进程端口端口应用进程应用进程运输层为相互通信的应用进程提供了逻辑通信运输层为相互通信的应用进程提供了逻辑通信8.1运输协议概述运输协议概述运输层为应用进程之间提供端到端的逻辑通信,但运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信,如下图所示:网络层是为主机之间提供逻辑通信,如下图所示:因特网因特网IP协议的
6、作用范围协议的作用范围(提供主机之间的逻辑通信)(提供主机之间的逻辑通信)TCP和和UDP协议的作用范围协议的作用范围(提供进程之间的逻辑通信)(提供进程之间的逻辑通信)应用进程应用进程应用进程应用进程运输层协议和网络层协议的主要区别运输层协议和网络层协议的主要区别8.1运输协议概述运输协议概述2、运输层对收到的报文进行、运输层对收到的报文进行差错检测差错检测。在网络。在网络层,层,IP数据报首部中的检验和字段只检验首部数据报首部中的检验和字段只检验首部是否出现差错而不检查数据部分。是否出现差错而不检查数据部分。3、根据应用的不同,运输层需要有两种不同的、根据应用的不同,运输层需要有两种不同的
7、运输协议,即运输协议,即面向连接的面向连接的TCP和和无连接的无连接的UDP,而网络层无法同时实现这两种协议。而网络层无法同时实现这两种协议。三、运输层与其上下层之间的关系三、运输层与其上下层之间的关系8.1运输协议概述运输协议概述运输实体运输实体运输协议应用层应用层网络层网络层(或网际层)(或网际层)层接口层接口运输层运输层层接口层接口网络层服务网络层服务访问点访问点NSAP运输层服务运输层服务访问点访问点TSAP主机主机A运输服务用户运输服务用户(应用层实体)(应用层实体)主机主机A运输服务用户运输服务用户(应用层实体)(应用层实体)运输层中向应用层提供运输服务的是运输实体。使用运输服务的
8、是运输服务运输层中向应用层提供运输服务的是运输实体。使用运输服务的是运输服务用户(即各应用进程或应用层实体)。运输层中两个对等实体之间的通信遵用户(即各应用进程或应用层实体)。运输层中两个对等实体之间的通信遵循运输协议。运输协议保证了运输层能够向应用层提供运输服务。运输服务循运输协议。运输协议保证了运输层能够向应用层提供运输服务。运输服务也使用了下面网络层向上提供的网络服务也使用了下面网络层向上提供的网络服务8.1运输协议概述运输协议概述再次小结:再次小结:物理层使链路上能透明地传送比特流。物理层使链路上能透明地传送比特流。数据链路层使得各条链路能传送无差错的帧(按序、无丢失、数据链路层使得各
9、条链路能传送无差错的帧(按序、无丢失、不重复)。不重复)。网络层又提供路由选择、流量控制和网络互连的功能,使主网络层又提供路由选择、流量控制和网络互连的功能,使主机机A发送的分组能按照合理的路由到达主机发送的分组能按照合理的路由到达主机B。运输层提供端到端的可靠通信服务。所谓端到端即从进程到运输层提供端到端的可靠通信服务。所谓端到端即从进程到进程。进程。运输层向高层用户屏蔽了下面通信子网的细节,使高层用户运输层向高层用户屏蔽了下面通信子网的细节,使高层用户看不见实现通信功能的物理链路是什么,看不见数据链路采看不见实现通信功能的物理链路是什么,看不见数据链路采用的是什么规程,也看不见下面到底有几
10、个子网以及这些子用的是什么规程,也看不见下面到底有几个子网以及这些子网是怎样互连起来的,运输层使高层用户看见的就是好像在网是怎样互连起来的,运输层使高层用户看见的就是好像在两个运输层实体之间有一条两个运输层实体之间有一条端到端端到端的可靠的通信通路。的可靠的通信通路。8.2 TCP/IP体系中的运输层体系中的运输层一、一、TCP/IP体系运输层中的两个协议体系运输层中的两个协议1、用户数据报协议、用户数据报协议UDP(User Datagram Protocol)UDP提供无连接、不可靠的服务。在传送数据之前,不需要先建立提供无连接、不可靠的服务。在传送数据之前,不需要先建立连接。远地主机的运
11、输层在收到连接。远地主机的运输层在收到UDP数据报后,不需要给出任何数据报后,不需要给出任何应答。在某些情况下,这是一种最有效的工作方式。应答。在某些情况下,这是一种最有效的工作方式。TCPIP体体系中的应用服务,如系中的应用服务,如TFTP和和NFS就使用就使用UDP这种运输方式。这种运输方式。2、传输控制协议、传输控制协议TCP(Transmission Control Protocol)提供面向连接的服务。不提供广播或组播服务。由于提供面向连接的服务。不提供广播或组播服务。由于TCP要提供要提供可靠的运输服务,因此可靠的运输服务,因此TCP就不可避免地增加了许多的开销,如就不可避免地增加
12、了许多的开销,如应答、流量控制、定时器以及连接管理等。这不仅使协议数据单应答、流量控制、定时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。元的首部增大很多,还要占用许多的处理机资源。8.2 TCP/IP体系中的运输层体系中的运输层这两个协议都使用这两个协议都使用IP协议。也就是说,在发送数据时,这协议。也就是说,在发送数据时,这两个协议的协议数据单元两个协议的协议数据单元PDU,都作为下面,都作为下面IP数据报的数据报的数据。在接收数据时,数据。在接收数据时,IP数据报将首部去掉后,根据上数据报将首部去掉后,根据上层使用的是什么运输协议,把数据部分交给上面的层
13、使用的是什么运输协议,把数据部分交给上面的UDP或或TCP。8.2 TCP/IP体系中的运输层体系中的运输层二、端口二、端口UDP和和TCP都使用了端口(都使用了端口(port)进行寻址。端口是一个)进行寻址。端口是一个很重要的概念,因为在通信时,只有找到了端口,才能很重要的概念,因为在通信时,只有找到了端口,才能最后找到我们所要找的目的进程。最后找到我们所要找的目的进程。1、概念、概念:即运输层服务访问点:即运输层服务访问点TSAP,是,是UDP和和TCP用来用来同上层的应用进程进行通信的接口,应用层的各种进程同上层的应用进程进行通信的接口,应用层的各种进程是通过相应的商品与运输实体进行交互
14、的。是通过相应的商品与运输实体进行交互的。2。功能。功能:让应用层的各种应用进程都能将其数据通过端:让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,让运输层知道应当将其报文段中口向下交付给运输层,让运输层知道应当将其报文段中的数据向上通过端口交付给应用层的进程。因此,端口的数据向上通过端口交付给应用层的进程。因此,端口是用来标志应用层的进程的。如下图所示:是用来标志应用层的进程的。如下图所示:8.2 TCP/IP体系中的运输层体系中的运输层TCP报文段报文段端口端口发送方发送方应用进程应用进程TCP复用复用TCP复用复用IP复用复用UDP用户数据报用户数据报IP数据报数据报TCP报
15、文段报文段接收方接收方应用进程应用进程TCP分用分用TCP分用分用IP分用分用UDP用户数据报用户数据报端口端口IP数据报数据报应应用用层层运运输输层层网网络络层层由于使用了复用和分用技术,在运输层与网络层的交互中已看由于使用了复用和分用技术,在运输层与网络层的交互中已看不见各种应用进程,而只有不见各种应用进程,而只有TCP报文段或报文段或UDP用户数据报。用户数据报。8.2 TCP/IP体系中的运输层体系中的运输层3。端口的表示。端口的表示:用一个:用一个16位的端口号表示。但端口号只具位的端口号表示。但端口号只具有本地意义,它只标志本计算机中应用层中的各进程。有本地意义,它只标志本计算机中
16、应用层中的各进程。Internet中不同计算机的相同端口号是没有联系的。中不同计算机的相同端口号是没有联系的。4、端口的分类:、端口的分类:m熟知端口熟知端口:TCP/IP体系确定并公布,所有用户进程都熟体系确定并公布,所有用户进程都熟知的端口。数值为知的端口。数值为0-1023。当一种新的应用程序出现时,。当一种新的应用程序出现时,必须为它指派一个熟知端口,否则其它的应用进程就无法必须为它指派一个熟知端口,否则其它的应用进程就无法和它进行交互。在应用层中的各种不同的服务器进程不断和它进行交互。在应用层中的各种不同的服务器进程不断地检测分配给它们的熟知端口,以便发现是否有某个客户地检测分配给它
17、们的熟知端口,以便发现是否有某个客户进程要和它通信。常见的熟知端口如下:进程要和它通信。常见的熟知端口如下:m一般端口一般端口:用来随时分配给请求通信的客户进程。:用来随时分配给请求通信的客户进程。应用程序应用程序FTPTELNETSMTPDNSTFTPHTTPSNMPSNMP(trap)熟知端口熟知端口2123255369801611628.2 TCP/IP体系中的运输层体系中的运输层5、TCP使用使用“连接连接”(而不是(而不是“端口端口”)作为)作为最基本的抽象。一个连接由它的两个端点来标最基本的抽象。一个连接由它的两个端点来标识。这样的端点就叫做插口(识。这样的端点就叫做插口(sock
18、et),或套),或套按字。插口的概念并不复杂,但非常重要。插按字。插口的概念并不复杂,但非常重要。插口包括口包括IP地址(地址(32bit)和端口号码()和端口号码(16 bit),共),共48 bit。在整个。在整个Internet中,在运中,在运输层通信的一对插口必须是唯一的。输层通信的一对插口必须是唯一的。如一条连接的一对插口可以为:如一条连接的一对插口可以为:(131.6.3.13,500)和)和(130.42.85.15,25)其中,)其中,25表示表示SMTP。8.3用户数据报协议用户数据报协议UDP一、概述:一、概述:用户数据报协议用户数据报协议UDP只在只在IP的数据报服务之上
19、增加了很少一点的的数据报服务之上增加了很少一点的功能,这就是端口的功能和差错检测的功能功能,这就是端口的功能和差错检测的功能。虽然虽然UDP用户数据用户数据报只能提供不可靠的交付,但报只能提供不可靠的交付,但UDP在某些方面有其特殊的优点,在某些方面有其特殊的优点,如:如:1、发送数据之前不需要建立连接(发送结束无连接需释放),减少、发送数据之前不需要建立连接(发送结束无连接需释放),减少了开销和发送数据之前的时延。了开销和发送数据之前的时延。2、UDP不使用拥塞控制,也不保证可靠交付,因此主机不需要维持不使用拥塞控制,也不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态表。具有
20、许多参数的、复杂的连接状态表。3、UDP用户数据报只有用户数据报只有8个字节的首部开销,比个字节的首部开销,比TCP的的20个字节的个字节的首部要短。首部要短。4、由于、由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很多实时应用(如送速率降低。这对某些实时应用是很重要的。很多实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据。电话、实时视频会议等)要求源主机以恒定的速率发送数据。8.3用户数据报协议用户数据报协议UDP二、二、UDP与应用层之间端口的实现机制:报文队列与应用层之
21、间端口的实现机制:报文队列以应用层使用简单文件传送协议以应用层使用简单文件传送协议TFTP为例讨论。为例讨论。1、TFTP使用使用UDP传送报文,但传送报文,但TFTP服务器和服务器和TFTP客客户所使用的端口是不一样的。户所使用的端口是不一样的。2、TFTP服务器进程是一直在运行着,等待服务器进程是一直在运行着,等待TFTP客户进客户进程的服务请求。因此,服务器的端口必须使用熟知端程的服务请求。因此,服务器的端口必须使用熟知端口号。口号。TFTP服务器的熟知端口号是服务器的熟知端口号是69。在。在TFTP客户客户端,当进程启动时,就向操作系统请求一个临时的一端,当进程启动时,就向操作系统请求
22、一个临时的一般端口号,如,般端口号,如,5100。然后操作系统就为该进程创建。然后操作系统就为该进程创建两个队列:入队列和出队列。只要进程在执行,这两两个队列:入队列和出队列。只要进程在执行,这两个队列就一直存在。当进程终止时,入队列和出队列个队列就一直存在。当进程终止时,入队列和出队列及临时端口号就一起被撤消。如下图所示:及临时端口号就一起被撤消。如下图所示:8.3用户数据报协议用户数据报协议UDPUDP端口端口5100TFTP客户客户出队列出队列入队列入队列应应用用层层运运输输层层UDP端口端口69TFTP服务器服务器出队列出队列入队列入队列UDP用户数据报用户数据报3、客户进程将报文发送
23、到出队列中。、客户进程将报文发送到出队列中。UDP按队列中报文的先按队列中报文的先后顺序进行发送。在传送到后顺序进行发送。在传送到IP层之前要给报文加上层之前要给报文加上UDP首部,首部,其中的目的端口号是其中的目的端口号是TFTP的熟知端口的熟知端口69。然后。然后UDP数据报就数据报就传送给传送给IP层。层。8.3用户数据报协议用户数据报协议UDP4、客户端收到来自、客户端收到来自IP层的报文时,层的报文时,UDP先检查报文中的目的先检查报文中的目的端口号是否正确。若不正确,端口号是否正确。若不正确,UDP就丢弃该报文,并请就丢弃该报文,并请ICMP发送发送“端口不可达端口不可达”差错报文
24、给服务器端。若正确,差错报文给服务器端。若正确,UDP就就将收到的报文放在入队列的队尾,客户进程按报文到达的先将收到的报文放在入队列的队尾,客户进程按报文到达的先后顺序将其一一取走。后顺序将其一一取走。5、服务器在收到报文时,、服务器在收到报文时,UDP先检查到达的用户数据报的目先检查到达的用户数据报的目的端口号是否为的端口号是否为69。若是,将此用户数据报入进入队列队尾。若是,将此用户数据报入进入队列队尾。若不是,丢弃此报文。若不是,丢弃此报文。6、服务要回答客户的请求时,将要发送的报文传送到出队列,、服务要回答客户的请求时,将要发送的报文传送到出队列,并使用请求服务的报文的源端口号作为回答
25、报文的目的端口并使用请求服务的报文的源端口号作为回答报文的目的端口号。在添加上号。在添加上UDP首部后,将其传送给首部后,将其传送给IP层。层。8.3用户数据报协议用户数据报协议UDP三、三、UDP用户数据报的首部格式用户数据报的首部格式用户数据报用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,有两个字段:数据字段和首部字段。首部字段很简单,只有只有8个字节,由个字节,由4个字段组成,每个字段都是两个字节。各字段意个字段组成,每个字段都是两个字节。各字段意义如下:义如下:源端口字段,源端口号码源端口字段,源端口号码目的端口字段,目的端口号码目的端口字段,目的端口号码长度字段,长
26、度字段,UDP数据报的长度数据报的长度检验和字段,防止检验和字段,防止UDP数据报在传输中出错数据报在传输中出错源IP地址 目的IP地址UDP长度170伪首部源端口检验和长度目的端口首部数据首部数据字节44112字节122222UDP用户数据报IP数据报UDP数据报首部中检验和的计数据报首部中检验和的计算方法有些特殊。在计算检验算方法有些特殊。在计算检验和时在和时在UDP数据报之前要增加数据报之前要增加12个字节的伪首部。个字节的伪首部。“伪首部伪首部”是因为这种伪首部并不是是因为这种伪首部并不是UDP数据报真正的首部。只是在计数据报真正的首部。只是在计算检验和时,临时和算检验和时,临时和UD
27、P数据数据报连接在一起,得到一个新的报连接在一起,得到一个新的UDP数据报。检验和就是按照数据报。检验和就是按照这个新的这个新的UDP数据报来计算的。数据报来计算的。伪首部既不向下传送,也不向伪首部既不向下传送,也不向上递交。上递交。伪首部的第三个字段是全零,伪首部的第三个字段是全零,第四个字段是第四个字段是IP首部中的协议首部中的协议字段的值。对于字段的值。对于UDP,此协议,此协议字段值为字段值为17。第五个字段是。第五个字段是UDP数据报的长度。数据报的长度。8.4传输控制协议传输控制协议TCP一、概述一、概述1、TCP是是TCPIP体系中的运输层协议,是面向连接的,体系中的运输层协议,
28、是面向连接的,因而可提供可靠的、按序传送数据的服务。因而可提供可靠的、按序传送数据的服务。TCP提供的连提供的连接是双向的,即全双工的。接是双向的,即全双工的。2、TCP发送报文段的大致过程发送报文段的大致过程(1)TCP的通信是全双工的,因此的通信是全双工的,因此TCP连接的任何一方(不连接的任何一方(不论是客户端还是服务器)都能够发送和接收数据。论是客户端还是服务器)都能够发送和接收数据。(2)发送端的应用进程按照自己产生数据的规律,不断地)发送端的应用进程按照自己产生数据的规律,不断地将数据块陆续写入到将数据块陆续写入到TCP的发送缓存中。的发送缓存中。(3)TCP从发送缓存中取出一定数
29、量的数据,将其组成从发送缓存中取出一定数量的数据,将其组成TCP报文段逐个传送给报文段逐个传送给IP层,然后发送出去。如下图:层,然后发送出去。如下图:8.4传输控制协议传输控制协议TCP发送端发送端TCP发送缓存发送缓存向发送缓存向发送缓存写入数据块写入数据块端口端口应用进程应用进程接收端接收端TCP接收缓存接收缓存从接收缓存从接收缓存读取数据块读取数据块端口端口应用进程应用进程报文段报文段报文段报文段报文段报文段(4)接收端从)接收端从IP层收到层收到TCP报文段后,先将其暂存在接收缓报文段后,先将其暂存在接收缓存中,然后让接收端应用进程从接收缓存中将数据块逐个读取。存中,然后让接收端应用
30、进程从接收缓存中将数据块逐个读取。8.4传输控制协议传输控制协议TCP二、二、TCP报文段的首部报文段的首部一个一个TCPTCP报文共分报文共分为首部为首部和和数据数据两个部分(见下页图)。两个部分(见下页图)。TCPTCP的全部功能都体现在它首部中各字段的作用。的全部功能都体现在它首部中各字段的作用。首部的首部的前前2020个字节个字节是固定的,后面有是固定的,后面有4N4N字节字节是根据需要而是根据需要而增加的选项(增加的选项(N N为整数)。因此为整数)。因此TCPTCP首部的首部的最小长度最小长度是是2020字节。字节。首部固定部分各字段意义如下:首部固定部分各字段意义如下:源端口和目
31、的端口源端口和目的端口各占各占2 2个字节。端口是运输层与应用层个字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口都能实现。的服务接口。运输层的复用和分用功能都要通过端口都能实现。序号序号占占4 4字节。字节。TCPTCP是面向数据流的。是面向数据流的。TCPTCP传送的报文可看传送的报文可看成为连续的数据流。成为连续的数据流。TCPTCP把在一个把在一个TCPTCP连接中传送的数据流中连接中传送的数据流中8.4传输控制协议传输控制协议TCP数据偏移数据偏移保留保留URGACKPSHRSTSYNFIN窗口窗口紧紧 急急 指指 针针检验和检验和源源 端端 口口目目 的的
32、端端 口口确认号确认号序号序号选选 项项 (长(长 度度 可可 变变 )填填 充充TCP首部首部20字节的字节的固定首部固定首部比特比特08162431TCP首部首部TCP数据部分数据部分IP首部首部IP数据部分数据部分TCP报文段报文段发送在前发送在前8.4传输控制协议传输控制协议TCP的每一个字节都编上一个序号。整个数据的起始序号在连接建的每一个字节都编上一个序号。整个数据的起始序号在连接建立时设置。首部中的序号字段的值则指的是本报文段所发送的立时设置。首部中的序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。如,一报文段的序号字段的值是数据的第一个字节的序号。如,一报文段的序号
33、字段的值是301,而携带的数据共有,而携带的数据共有100字节。这就表明:本报文段的数字节。这就表明:本报文段的数据的最后一个字节的序号应当是据的最后一个字节的序号应当是400。下一个报文段的数据序。下一个报文段的数据序号应当从号应当从401开始,因而下一个报文段的序号字段值应为开始,因而下一个报文段的序号字段值应为401。确认号确认号占占4字节,是期望收到对方的下一个报文段的数据的字节,是期望收到对方的下一个报文段的数据的第一个字节的序号,也就是期望收到的下一个报文段首部的序第一个字节的序号,也就是期望收到的下一个报文段首部的序号字段的值。如,号字段的值。如,A正确收到了正确收到了B发送过来
34、的一个报文段,其序发送过来的一个报文段,其序号字段的值是号字段的值是501,而数据长度是,而数据长度是200字节,表明字节,表明A已正确收到已正确收到了了B发送的序号在发送的序号在501到到700之间的数据。因此,之间的数据。因此,A期望收到期望收到B的下一个报文段的首部中的序号字段应为的下一个报文段的首部中的序号字段应为701,于是,于是A在发送在发送给给B的响应报文段中将首部中的确认号置为的响应报文段中将首部中的确认号置为701。8.4传输控制协议传输控制协议TCP数据偏移数据偏移占占4位,指出位,指出TCP报文段的数据起始片距离报文段的数据起始片距离TCP报报文段的起始处有多远。实际上就
35、是文段的起始处有多远。实际上就是TCP报文段首部的长度。注报文段首部的长度。注意:其单位不是字节而是意:其单位不是字节而是32位字(即以位字(即以4字节长的字为计算单字节长的字为计算单位)。位)。4位能够表示的最大十进制数字是位能够表示的最大十进制数字是15,故数据偏移的最,故数据偏移的最大值是大值是60字节,这也是字节,这也是TCP首部的最大长度。首部的最大长度。保留保留占占6位,保留为今后使用,目前置为位,保留为今后使用,目前置为0。下面下面6个比特个比特是说明本报文段性质的是说明本报文段性质的控制控制比特,意义如下:比特,意义如下:紧急比特紧急比特URG(URGent)当)当URG=1时
36、,表明紧急指针字时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。如,当于高优先级的数据),而不要按原来的排队顺序来传送。如,已经发送了很长的一个程序要在远地的主机上运行。但后来发已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消该程序的运行。因此用户从键盘发出现了一些问题,需要取消该程序的运行。因此用户从键盘发出8.4传输控制协议传输控制协议TCP中断命令(中断命令(Control+C)。如果不使用紧急数据,则这两个字符。如果不使用紧急数据
37、,则这两个字符将存储在接收将存储在接收TCP缓存的末尾。只有所有的数据被处理完毕后缓存的末尾。只有所有的数据被处理完毕后才被交付到应用进程。这样就浪费了许多时间。才被交付到应用进程。这样就浪费了许多时间。当使用紧急比特并将当使用紧急比特并将URG置置1时,发送应用进程就告诉发送时,发送应用进程就告诉发送TCP这两个字符是紧急数据。于是发送这两个字符是紧急数据。于是发送TCP就将这两个字符插就将这两个字符插入到报文段的数据的最前面,其余的数据都是普通数据。这时入到报文段的数据的最前面,其余的数据都是普通数据。这时要与首部中第要与首部中第5个个32位字中的一半位字中的一半“紧急指针紧急指针”字段配
38、合使用。字段配合使用。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接收方知道紧急数据共有多少个字节。紧急数据到达接收端使接收方知道紧急数据共有多少个字节。紧急数据到达接收端后,当所有紧急数据都被处理完时,后,当所有紧急数据都被处理完时,TCP就告诉应用程序恢复就告诉应用程序恢复到正常操作。即使窗口为到正常操作。即使窗口为0时也可发送紧急数据。时也可发送紧急数据。确认比特确认比特ACK只有当只有当ACK=1时确认号字段才有效。当时确认号字段才有效。当ACK=0时,确认号无效。时,确认号无效。8.4传输控制协议传输控制协议TCP
39、推送比特推送比特PSH(PuSH)当两个应用进程进行交互式的通信当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。此时,收到对方的响应。此时,TCP就可以使用推送操作。这时,发就可以使用推送操作。这时,发送端送端TCP将推送比特将推送比特PSH置置1,并立即创建一个报文段发送出去。,并立即创建一个报文段发送出去。接收接收TCP收到推送比特置收到推送比特置1的报文段,就尽快地交付给接收应用的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。进程,而不再等到整个缓存都填
40、满了后再向上交付。复位比特复位比特RST(ReSeT) 当当RST=1时,表明时,表明TCP连接中出现连接中出现严重差错(如主机崩溃或其它原因),必须释放连接,然后再严重差错(如主机崩溃或其它原因),必须释放连接,然后再重新建立运输连接。复位比特还用来拒绝一个非法的报文段或重新建立运输连接。复位比特还用来拒绝一个非法的报文段或拒绝打开一个连接。拒绝打开一个连接。同步比特同步比特SYN在连接建立时用来同步序号。当在连接建立时用来同步序号。当SYN=1而而ACK=0时,表明这是一个连接请求报文段。对方若同意建立时,表明这是一个连接请求报文段。对方若同意建立8.4传输控制协议传输控制协议TCP连接,
41、则应在响应的报文段中使连接,则应在响应的报文段中使SYN=1和和ACK=1。因此,同步。因此,同步比特比特SYN置为置为1,就表示这是一个连接请求或连接接受报文。,就表示这是一个连接请求或连接接受报文。终止比特终止比特FIN用来释放一个连接。当用来释放一个连接。当FIN=1时,表明此报文时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。段的发送端的数据已发送完毕,并要求释放运输连接。窗口窗口占占2字节。用来控制对方发送的数据量,单位为字节。字节。用来控制对方发送的数据量,单位为字节。通过这个报文段告诉对方,通过这个报文段告诉对方,“在没有收到我的确认时,你能发在没有收到我的确认时,
42、你能发送的数据的字节数至多是此窗口的大小。送的数据的字节数至多是此窗口的大小。”检验和检验和占占2字节。检验的范围包括字节。检验的范围包括首部首部和和数据数据这两部分。其这两部分。其方法和方法和UDP一样。一样。选项选项长度可变。长度可变。TCP只规定了一种选项,即只规定了一种选项,即最大报文段长度最大报文段长度MSS。MSS告诉对方告诉对方TCP:”我的缓存所能接收的报文段的我的缓存所能接收的报文段的数数据字段据字段的最大长度是的最大长度是MSS个字节。个字节。“8.4传输控制协议传输控制协议TCP三、编号与确认三、编号与确认 1、TCP的编号的编号:TCP不是按传送的报文段来编号。不是按传
43、送的报文段来编号。TCP将将所要传送的整个报文(这可能包括许多个报文段)看成所要传送的整个报文(这可能包括许多个报文段)看成是一个个字节组成的数据流,然后对每一个字节编一个是一个个字节组成的数据流,然后对每一个字节编一个序号。在连接建立时,双方要商定初始序号。序号。在连接建立时,双方要商定初始序号。TCP就将就将每一次所传送的报文段中的第一个数据字节的序号,放每一次所传送的报文段中的第一个数据字节的序号,放在在TCP首部的序号字段中。首部的序号字段中。2、TCP的确认的确认:TCP的确认是对接收到的数据的最高序号的确认是对接收到的数据的最高序号(即收到的数据流中的最后一个序号)表示确认。但返(
44、即收到的数据流中的最后一个序号)表示确认。但返回的确认序号是已收到的数据的最高序号加回的确认序号是已收到的数据的最高序号加1。也就是说,。也就是说,确认序号表示期望下次收到的第一个数据字节的序号。确认序号表示期望下次收到的第一个数据字节的序号。8.4传输控制协议传输控制协议TCPq由于由于TCP能提供全双工通信,因此通信中的每能提供全双工通信,因此通信中的每一方都不必专门发送确认报文段,而可以在传一方都不必专门发送确认报文段,而可以在传送数据时顺便把确认信息捎带传送。送数据时顺便把确认信息捎带传送。q若发送方在规定的设置时间内没有收到确认,若发送方在规定的设置时间内没有收到确认,就要将未被确认
45、的报文段重新发送。接收方若就要将未被确认的报文段重新发送。接收方若收到有差错的报文段,则丢弃此报文段而并不收到有差错的报文段,则丢弃此报文段而并不发送否认后息。着收到重复的报文段,也要将发送否认后息。着收到重复的报文段,也要将其丢弃,但要发回(或捎带发回)确认信息。其丢弃,但要发回(或捎带发回)确认信息。这与数据链路层的情况相似。这与数据链路层的情况相似。8.4传输控制协议传输控制协议TCP四、四、TCP的流量控制的流量控制1、控制方式:采用可变发送窗口的方式进行流量控制。、控制方式:采用可变发送窗口的方式进行流量控制。2、窗口大小的单位:字节、窗口大小的单位:字节3、控制方法:发送窗口在连接
46、建立时由双方商定。但在通、控制方法:发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地信的过程中,接收端可根据自己的资源情况,随时动态地调整自己的接收窗口(可增大或减小),然后告诉对方,调整自己的接收窗口(可增大或减小),然后告诉对方,使对方的发送窗口和自己的接收窗口一致。这种由接收端使对方的发送窗口和自己的接收窗口一致。这种由接收端控制发送端的做法,在计算机网络中经常使用。控制发送端的做法,在计算机网络中经常使用。4、流量控制例:、流量控制例:设主机设主机A向主机向主机B发送数据,双方商定的窗口值是发送数据,双方商定的窗口值是400,也就,也就是发送端不
47、需要收到接收端的确认就可以发送出是发送端不需要收到接收端的确认就可以发送出400字节字节的数据。再设每一个报文段发送的数据。再设每一个报文段发送100字节的数据(用从字节的数据(用从A到到B的箭头表示),并且序号的初始值为的箭头表示),并且序号的初始值为1(见图中第一个(见图中第一个箭头上的箭头上的SEQ1),则可能通信过程如下:),则可能通信过程如下:8.4传输控制协议传输控制协议TCP主机主机A主机主机BA还能发送还能发送300字节字节A还能发送还能发送200字节字节允许允许A再发送再发送300字节字节A还能发送还能发送200字节字节A还能发送还能发送100字节字节A超时超时重发,但不能再
48、发送重发,但不能再发送允许允许A再发送再发送200字节字节A还能发送还能发送100字节字节不不允许允许A再发送再发送SEQ=1SEQ=101SEQ=201ACK=201,Win=300SEQ=301SEQ=401SEQ=201ACK=1,win200SEQ=501ACK=601,win=0丢失丢失B进行了三次进行了三次流控,第一次流控,第一次将窗口减为将窗口减为300字节,第字节,第2次减为次减为200字节,后减到字节,后减到0,这种暂停,这种暂停状态将持续到状态将持续到B重新发送一重新发送一个新的窗口值个新的窗口值为止。为止。8.4传输控制协议传输控制协议TCP五、五、TCP的运输连接管理的
49、运输连接管理1、连接建立过程中要解决的问题:、连接建立过程中要解决的问题:TCP是面向连接的协议。是面向连接的协议。运输连接是用来传送运输连接是用来传送TCP报文的。报文的。TCP的运输连接的建的运输连接的建立释放是每一次面向连接的通信中必不可少的过程。因立释放是每一次面向连接的通信中必不可少的过程。因此,运输连接就有三个阶段,即:连接建立、数据传送此,运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。释放都能正常地进行。在连接建立过程中要解决以下三个问题:在连接建立过程中要解决以下三
50、个问题:(1)要使每一方都能够确知对方的存在;)要使每一方都能够确知对方的存在;(2)要允许双方协商一些参数(如最大报文段长度,最大)要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。窗口大小,服务质量等)。(3)能够对运输实体资源(如缓存大小、连接表中的项目)能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。等)进行分配。8.4传输控制协议传输控制协议TCP2、TCP连接的建立过程连接的建立过程TCP的连接和建立都是采用客户服务器方式。主动的连接和建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户,而被动等待连接发起连接建立的应用进程叫做客户,而被动