版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章运输层计算机网络技术及应用(第2版)第8章运输层计算机网络技术及应用(第2版)18.1传输层概述运输层是整个网络体系结构中的关键层次之一,其根本任务是为两个主机中的应用进程提供通信服务。在传输层中共有两个协议,分别是TCP协议与UDP协议,TCP协议的控制机制非常复杂,从而保证了应用进程之间的可靠数据传输。8.1传输层概述运输层是整个网络体系结构中的关键层次之一,其28.1.1传输层的设计问题传输层的最高目标是向其用户(一般是指应用层的进程,即运行着的应用程序),提供有效、可靠且价格合理的服务。为了达到这一目标,传输层利用了网络层所提供的服务。传输层完成这一工作的硬件和软件称为传输实体(transportentity)。传输实体可能在操作系统内核中,或在一个单独的用户进程内,也可能是包含在网络应用的程序库中,或是位于网络接口卡上。网络层、传输层和应用层的逻辑关系如图8-1所示。8.1.1传输层的设计问题传输层的最高目标是向其用户(一般是3图8-1网络层、传输层和应用层的逻辑关系图8-1网络层、传输层和应用层的逻辑关系4传输层协议通常具有几种责任。一种责任就是创建进程到进程的通信,通常使用端口号来完成这种功能。另一种责任是在传输层提供控制机制,比如差错控制、流量控制及拥塞控制等,UDP协议提供很简单的控制机制,而TCP却要复杂很多,如使用确认分组、超时和重传来完成差错控制,使用滑动窗口协议完成流量控制等。另外,传输层还应当负责为进程建立连接机制,这些进程应当能够向传输层的发送数据流。传输层在发送站的责任应当是和接收站建立连接,把数据流分割成可传输的单元,把它们编号,然后逐个发送他们。传输层在接收端的责任应当是等待属于同一个进程的所有不同单元的到达,检查并传递那些没有差错的单元,并把它们作为一个流,交付给接收进程。当整个流发送完毕后,传输层应当关闭这个连接。传输层协议通常具有几种责任。一种责任就是创建进程到进程的通信5运输层的任务是为两个主机中的应用进程提供通信服务。这与网络层中的IP协议有什么区别呢?IP协议是负责计算机级的通信,换句话说,是提供主机到主机的通信服务。作为网络层协议,IP协议只能将报文交付给目的计算机。但是,这是一种不完整的交付。这个报文还必须送交到正确的进程。这正是传输层协议所要做的事。运输层的任务是为两个主机中的应用进程提供通信服务。这与网络层6图8-2给出了IP协议与运输层协议作用范围的区别。图8-2给出了IP协议与运输层协议作用范围的区别。7另外,除了在作用范围上有所区别,传输层还比网络层提供更可靠的传输服务。分组丢失、数据残缺均会被传输层检测到并采取相应的补救措施。另外,除了在作用范围上有所区别,传输层还比网络层提供更可靠的88.1.2端口现在的操作系统都支持多用户、多任务的运行环境。一个计算机在同一时间可运行多个进程。在网络上,主机是用IP地址来定义的。要定义主机上的某一个进程,便需要第二个标识符,叫做端口号。8.1.2端口现在的操作系统都支持多用户、多任务的运行环境9端口是个非常重要的概念,因为应用层的各种进程是通过相应的端口与运输实体进行交互的。因此在运输协议数据单元的首部中都要写入源端口号和目的端口号。当运输层收到IP层交上来的数据,就要根据其目的端口号来决定应当通过哪一个端口上交给目的应用进程。在TCP/IP协议族中,端口号由16位二进制数表示,换算为十进制,则是0-65536之间的整数。端口号只有本地意义,即端口号只是为标志本计算机应用层中的各进程,不同计算机的相同端口号是没有联系的。端口是个非常重要的概念,因为应用层的各种进程是通过相应的端口10端口号分为两类。一类是由因特网指派名字和号码公司ICANN负责分配给一些常用的应用层程序固定使用的熟知端口(well-knownport),其数据一般为0-1023,表8-1中便列出了部分常见的熟知端口。“熟知”就表示这些端口号是TCP/IP体系确定并公布的,因而是所有用户进程都知道的。当一种新的应用程序出现时,必须为它指派一个熟知端口,否则其他的应用进程都无法和它进行交互。在应用层中的各种不同的服务器进程不断地检测分配给它们的熟知端口,以便发现是否有某个客户进程要和它通信。另一类是一般端口,用来随时分配给请求通信的客户进程,一般来说,客户进程所使用的端口号都是临时产生的,通信完成后便释放,所以又称短暂端口号。端口号分为两类。一类是由因特网指派名字和号码公司ICANN负11表8-1常见的熟知端口协议端口说明FTP21文件传输协议TELNET23远程登录协议SMTP25简单邮件传输协议DNS53域名解析协议DHCP67动态主机配置协议TFTP69快速文件传输协议HTTP80超文本传输协议SNMP161简单网络管理协议表8-1常见的熟知端口协议端口说明FTP21文件传输协议T12为了在通信时能确定唯一主机的唯一进程,就必须把端口号和主机的IP地址结合起来一起使用,称为套接字地址(socketaddress),或直接称为SOCKET。在实际通信过程中,我们需要一对套接字地址:客户套接字地址和服务器套接字地址,客户套接字地址惟一定义了客户进程,而服务器套接字唯一地定义了服务器进程。这四种信息分别是IP首部与运输协议数据单元首部中的一部分。为了在通信时能确定唯一主机的唯一进程,就必须把端口号和主机的13图8-3套接字的组成图8-3套接字的组成148.3用户数据报协议UDP8.3.1UDP概述用户数据报协议UDP是传输层协议之一,其实现功能较为简单,但由于其灵活、开销小等特点,使得它更适合某些应用。UDP提供无连接的服务。这表示UDP发送出的每一个用户数据报都是独立的数据报。用户数据报并不进行编号,也没有建立连接和释放连接的过程,每一个用户数据报可以走不同的路径。8.3用户数据报协议UDP8.3.1UDP概述15UDP是一个不可靠的传输层协议。它没有流量控制,因而当到来的报文太多时,接收端可能溢出。除检验和外,UDP也没有差错控制机制。这表示发送端并不知道报文是丢失了还是重复地交付了。当接收端使用检验和并检测出差错时,就悄悄地将这个用户数据报丢掉。缺少流量控制和差错控制就表示使用UDP的进程必须要提供这些机制。UDP是一个不可靠的传输层协议。它没有流量控制,因而当到来的168.3.2UDP用户数据报UDP分组叫做用户数据报,有8个字节的固定首部。图8-4给出了用户数据报的格式。8.3.2UDP用户数据报UDP分组叫做用户数据报,有817在用户数据报首部中的字段有以下几个:源端口号:这是在源主机上运行的进程所使用的端口号。有16位长,这就是表示端口号的范围为0-65535。若源主机是客户端(当客户进程发送请求时),则在大多数情况下,这个端口是短暂端口号;若源主机是服务器端,则在大多数情况下这个端口号是熟知端口号。目的端口号:这是在目的主机上运行的进程使用的端口号。也是16位长。若目的主机是客户端(当客户进程发送请求时),则在大多数情况下,这个端口是短暂端口号;反之,若目的主机是服务器端,则在大多数情况下这个端口号是熟知端口号。在用户数据报首部中的字段有以下几个:源端口号:这是在源主机上18总长度:是用户数据报的总长度,即首部加上数据后的总长度,也是16位长。这表示总长度最长为65535字节,但最小长度不是0字节,而是8字节,它指出用户数据报只有首部而无数据。检验和:这个字段用来检验整个用户数据报出现的差错总长度:是用户数据报的总长度,即首部加上数据后的总长度,也是19用户数据报数据部分则是从应用层继承下来的,数据的长度可从0到65507(即65535-20-8)字节(20字节的IP首部和8字节的UDP首部)用户数据报数据部分则是从应用层继承下来的,数据的长度可从0到20UDP用户数据首部中检验和的计算机方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP用户数据报真正的首部。伪首部共六个字段:源IP地址、目的IP地址、全0(为补偶数个字节用)、协议号、UDP长度,大部分字段都是从IP数据报首部中提取出来的。只是在计算检验和时,临时和UDP用户数据报连接在一起,得到一个过渡的UDP用户数据报。检验和就是按照这个过渡的UDP用户数据报来计算的。伪首部的存在仅为了计算机检验和。UDP用户数据首部中检验和的计算机方法有些特殊。在计算检验21UDP计算检验和是将首部和数据部分一起检验。在发送端,首先是先将全零放入检验和字段。再将伪首部以及UDP用户数据报看成是由许多16bit的字串接起来。若UDP用户数据报的数据部分不是偶数个字节,则要填入一个全零字节(但此字节并不发送)。然后按二进制反码计算出这些16bit字的和。将此和的二进制反码定入检验和字段后,发送此UDP用户数据报。在接收端,将收到的UDP用户数据报连同伪首部(以及可能的填充全零字节)一起,按二进制反码求这些16bit字的和。当无差错时其结果应为全1。否则就表明有差错出现,接收端就应将此UDP用户数据报丢弃。UDP计算检验和是将首部和数据部分一起检验。在发送端,首先是228.4传输控制协议TCP8.4.1TCP概述与UDP不同,TCP是一种面向流的协议。在UDP中,进行把一块数据发送给UDP以便进行传递。UDP在这块数据上添加自己的首部,这就构成了数据报,然后再把它传递给IP来传输。这个进程可以一连传递好几个块数据给UDP,但UDP对每一块数据都是独立对待,而并不考虑它们之间的任何联系。8.4传输控制协议TCP8.4.1TCP概述23TCP则允许发送进程以字节流的形式来传递数据,而接收进程也把数据作为字节流来接收。TCP创建了一种环境,它使得两个进程好像被一个假想的“管道”所连接,而这个管道在Internet上传送两个进程的数据,发送进程产生字节流,而接收进程消耗字节流。由于发送进程和接收进程产生和消耗数据的速度并不一样,因此TCP需要缓存来存储数据。在每一个方向上都有缓存,即发送缓存和接收缓存。另外,除了用缓存来处理这种速度的差异,在发送数据前还需要一种重要的方法,即将字节流分割为报文段(Segment)。报文段是TCP处理的最小数据单元。报文段的长度可以是不等的。TCP则允许发送进程以字节流的形式来传递数据,而接收进程也把24TCP发送与接收数据过程的示意图如图8-5所示。图8-5TCP发送与接收数据过程TCP发送与接收数据过程的示意图如图8-5所示。图8-5T25TCP提供全双工服务,即数据可在同时间双向流动,每一个TCP都有发送缓存和接收缓存,而两个方向都可以发送报文段。TCP是面向连接协议,它有连接建立、数据传输、连接释放三个过程。TCP是可靠的传输协议,它使用确认机制来检查数据是否安全和完整地到达。TCP提供全双工服务,即数据可在同时间双向流动,每一个TCP268.4.2TCP报文段TCP报文段同样由首部和数据两部分组成。但其首部要比UDP复杂的多,其首部前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N为整数)。因此,TCP首部长度在20-60字节之间。8.4.2TCP报文段TCP报文段同样由首部和数据两部分组27图8-6TCP报文段格式图8-6TCP报文段格式28源端口和目的端口字段:各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。序号字段:占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。确认号字段:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。数据偏移:占4bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位不是字节而是32bit字(4字节为计算单位)。源端口和目的端口字段:各占2字节。端口是运输层与应用层的29保留字段:占6bit,保留为今后使用,但目前应置为0。紧急比特URG:当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。确认比特ACK:只有当ACK1时确认号字段才有效。当ACK0时,确认号无效。推送比特PSH(PuSH):接收TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。保留字段:占6bit,保留为今后使用,但目前应置为0。30复位比特RST(ReSeT):当RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。同步比特SYN:同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。终止比特FIN(FINal):用来释放一个连接。当FIN1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。窗口字段:占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。复位比特RST(ReSeT):当RST1时,表31检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。紧急指针字段:占16bit。紧急指针指出:在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。选项字段:长度可变。TCP只规定了一种选项,即最大报文段长度MSS(MaximumSegmentSize)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”填充字段:这是为了使整个首部长度是4字节的整数倍。检验和:占2字节。检验和字段检验的范围包括首部和数据这两328.4.3TCP的可靠性TCP是一种可靠的传输协议。其可靠性体现在它可保证数据按序、无丢失、无重复的到达目的端。TCP报文段首部的数据编号与确认字段为这种可靠传输提供了保障。TCP将所要传送的整个报文看成一个个字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。8.4.3TCP的可靠性TCP是一种可靠的传输协议。其可靠33接收站点在收到发送方发来的数据后依据序号重新组装所收到的报文段。为什么要依靠序号来重组报文段呢?因为在一个高速链路与低速链路并存的网络上,可能会出现高速链路上的报文段比低速链路上的报文段提前到达的情况,此时就必须依靠序列号来重组报文段,以保证数据可以按序上交应用进程。这就是序列号的作用之一。接收站点在收到发送方发来的数据后依据序号重新组装所收到的报文34TCP的确认是对接收到的数据的最高序号(即收到的数据中的最后一个序号)进行确认。但返回的确认序号ACK是已收到的数据的最高序号再加1,该确认号既表示对已收数据的确认,同时表示期望下次收到的第一个数据字节的序号。TCP的确认是对接收到的数据的最高序号(即收到的数据中的最后35图8-7显示了TCP报文段传输时SEQ和ACK所扮演的角色。图8-7显示了TCP报文段传输时SEQ和ACK所扮演的角色。36在实际通信中,存在着超时和重传两种现象。如果在传输过程中丢失了某个序号的报文段,导致发送端在给定的时间段内得不到相应的确认序号,那么就确认该报文段已被丢失并要求重传。已发送的TCP报文段会被保存在发送端的缓冲区中,直到发送端接收到确认序号才会消除缓冲区中的这个报文段。这种机制称为肯定确认和重新传输(PositiveAcknowledgementandRetransmission,PAR),它是许多通信协议用来确保可信度的一种技术,工作过程如图8-8所示。在实际通信中,存在着超时和重传两种现象。如果在传输过程中丢失37图8-8超时和重传过程中序号与确认号的作用图8-8超时和重传过程中序号与确认号的作用38序号的另一个作用是消除网络中的重复包(同步复制)。例如在网络阻塞时,发送端迟迟没有收到接收端发来的对于某个报文段的ACK信息,它可能会认为这个序号的报文段丢失了。于是它会重新发送这一报文段,这种情况将会导致接收端在网络恢复正常后收到两个同样序号的报文段,此时接收端会自动丢弃重复的报文段。序号和确认号为TCP提供了一种纠错机制,提高了TCP的可靠性。序号的另一个作用是消除网络中的重复包(同步复制)。例如在网络398.4.4TCP连接管理TCP是面向连接的协议。面向连接的协议在源端和目的端之间建立一条虚路径。属于一个报文的所有报文段都沿着这条虚路径发送。在TCP通信中,整个过程分为三个阶段:连接建立、数据传送和连接释放。8.4.4TCP连接管理TCP是面向连接的协议。面向连接的401.建立连接TCP以全双工方式传送数据。当两个机器中的两个TCP进程建立连接后,它们应当都能够同时向对方发送报文段。主动发起连接建立的应用进程叫做客户方,而被动等待连接建立的应用进程叫做服务器方。在连接建立过程中要解决以下三个问题:(1)要使每一方能够确知对方的存在。(2)要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。(3)能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。1.建立连接TCP以全双工方式传送数据。当两个机器中的两个T41连接建立采用的这种过程叫做三次握手(又叫三向握手),如图8-9所示。连接建立采用的这种过程叫做三次握手(又叫三向握手),如图8-422.释放连接传输数据的双方中的任何一方都可以关闭连接。当一个方向的连接被终止时,另外一方还可继续向对方发送数据。因此,要在两个方向都关闭连接就需要四个动作,被释放连接的过程被称为四向握手。2.释放连接传输数据的双方中的任何一方都可以关闭连接。当一个43图8-10释放连接过程中的“四向握手”图8-10释放连接过程中的“四向握手”448.4.5滑动窗口与流量控制利用滑动窗口进行流量控制的方法在数据链路层协议中就采用过。为了提高报文段的传输效率,TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。在TCP报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。发送窗口在连接建立时由双方商定。但在通信过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值。8.4.5滑动窗口与流量控制利用滑动窗口进行流量控制的方法在45滑动窗口允许发送方在收到接收方的确认信息之前发送多个数据段。窗口大小决定了在收到确认信息之前,一次可以传送的数据段的最大数目。窗口越大,主机一次可以传输的数据段就越多。当主机发送完窗口允许的最大数量的数据段后,就必须等待确认信息。在接收到确认信息后才可以再发送下面的数据段。例如,当窗口大小为1时,则发送完1个数据段后,必须经过确认才可以发送下一个数据段;当窗口大小等于3时,发送方可以一次发送3个数据段,再等待对方的确认信息,每收到一个数据段的确认信息,窗口便可向前滑动一个报文段的位置,当然,接收方也可采用接收到多个连续的报文段,再一次性发送对最后一个接收报文段的确认信息的策略,从而节省确认信息的开销。正如前所说,窗口的大小并非一成不变的,接收端可根据自己的资源情况,动态地调整发送方的发送窗口大小。滑动窗口允许发送方在收到接收方的确认信息之前发送多个数据段。46大小可变的滑动窗口应用如图8-11所示。图8-11大小可变的滑动窗口在通信中的应用大小可变的滑动窗口应用如图8-11所示。图8-11大小可变47第8章运输层计算机网络技术及应用(第2版)第8章运输层计算机网络技术及应用(第2版)488.1传输层概述运输层是整个网络体系结构中的关键层次之一,其根本任务是为两个主机中的应用进程提供通信服务。在传输层中共有两个协议,分别是TCP协议与UDP协议,TCP协议的控制机制非常复杂,从而保证了应用进程之间的可靠数据传输。8.1传输层概述运输层是整个网络体系结构中的关键层次之一,其498.1.1传输层的设计问题传输层的最高目标是向其用户(一般是指应用层的进程,即运行着的应用程序),提供有效、可靠且价格合理的服务。为了达到这一目标,传输层利用了网络层所提供的服务。传输层完成这一工作的硬件和软件称为传输实体(transportentity)。传输实体可能在操作系统内核中,或在一个单独的用户进程内,也可能是包含在网络应用的程序库中,或是位于网络接口卡上。网络层、传输层和应用层的逻辑关系如图8-1所示。8.1.1传输层的设计问题传输层的最高目标是向其用户(一般是50图8-1网络层、传输层和应用层的逻辑关系图8-1网络层、传输层和应用层的逻辑关系51传输层协议通常具有几种责任。一种责任就是创建进程到进程的通信,通常使用端口号来完成这种功能。另一种责任是在传输层提供控制机制,比如差错控制、流量控制及拥塞控制等,UDP协议提供很简单的控制机制,而TCP却要复杂很多,如使用确认分组、超时和重传来完成差错控制,使用滑动窗口协议完成流量控制等。另外,传输层还应当负责为进程建立连接机制,这些进程应当能够向传输层的发送数据流。传输层在发送站的责任应当是和接收站建立连接,把数据流分割成可传输的单元,把它们编号,然后逐个发送他们。传输层在接收端的责任应当是等待属于同一个进程的所有不同单元的到达,检查并传递那些没有差错的单元,并把它们作为一个流,交付给接收进程。当整个流发送完毕后,传输层应当关闭这个连接。传输层协议通常具有几种责任。一种责任就是创建进程到进程的通信52运输层的任务是为两个主机中的应用进程提供通信服务。这与网络层中的IP协议有什么区别呢?IP协议是负责计算机级的通信,换句话说,是提供主机到主机的通信服务。作为网络层协议,IP协议只能将报文交付给目的计算机。但是,这是一种不完整的交付。这个报文还必须送交到正确的进程。这正是传输层协议所要做的事。运输层的任务是为两个主机中的应用进程提供通信服务。这与网络层53图8-2给出了IP协议与运输层协议作用范围的区别。图8-2给出了IP协议与运输层协议作用范围的区别。54另外,除了在作用范围上有所区别,传输层还比网络层提供更可靠的传输服务。分组丢失、数据残缺均会被传输层检测到并采取相应的补救措施。另外,除了在作用范围上有所区别,传输层还比网络层提供更可靠的558.1.2端口现在的操作系统都支持多用户、多任务的运行环境。一个计算机在同一时间可运行多个进程。在网络上,主机是用IP地址来定义的。要定义主机上的某一个进程,便需要第二个标识符,叫做端口号。8.1.2端口现在的操作系统都支持多用户、多任务的运行环境56端口是个非常重要的概念,因为应用层的各种进程是通过相应的端口与运输实体进行交互的。因此在运输协议数据单元的首部中都要写入源端口号和目的端口号。当运输层收到IP层交上来的数据,就要根据其目的端口号来决定应当通过哪一个端口上交给目的应用进程。在TCP/IP协议族中,端口号由16位二进制数表示,换算为十进制,则是0-65536之间的整数。端口号只有本地意义,即端口号只是为标志本计算机应用层中的各进程,不同计算机的相同端口号是没有联系的。端口是个非常重要的概念,因为应用层的各种进程是通过相应的端口57端口号分为两类。一类是由因特网指派名字和号码公司ICANN负责分配给一些常用的应用层程序固定使用的熟知端口(well-knownport),其数据一般为0-1023,表8-1中便列出了部分常见的熟知端口。“熟知”就表示这些端口号是TCP/IP体系确定并公布的,因而是所有用户进程都知道的。当一种新的应用程序出现时,必须为它指派一个熟知端口,否则其他的应用进程都无法和它进行交互。在应用层中的各种不同的服务器进程不断地检测分配给它们的熟知端口,以便发现是否有某个客户进程要和它通信。另一类是一般端口,用来随时分配给请求通信的客户进程,一般来说,客户进程所使用的端口号都是临时产生的,通信完成后便释放,所以又称短暂端口号。端口号分为两类。一类是由因特网指派名字和号码公司ICANN负58表8-1常见的熟知端口协议端口说明FTP21文件传输协议TELNET23远程登录协议SMTP25简单邮件传输协议DNS53域名解析协议DHCP67动态主机配置协议TFTP69快速文件传输协议HTTP80超文本传输协议SNMP161简单网络管理协议表8-1常见的熟知端口协议端口说明FTP21文件传输协议T59为了在通信时能确定唯一主机的唯一进程,就必须把端口号和主机的IP地址结合起来一起使用,称为套接字地址(socketaddress),或直接称为SOCKET。在实际通信过程中,我们需要一对套接字地址:客户套接字地址和服务器套接字地址,客户套接字地址惟一定义了客户进程,而服务器套接字唯一地定义了服务器进程。这四种信息分别是IP首部与运输协议数据单元首部中的一部分。为了在通信时能确定唯一主机的唯一进程,就必须把端口号和主机的60图8-3套接字的组成图8-3套接字的组成618.3用户数据报协议UDP8.3.1UDP概述用户数据报协议UDP是传输层协议之一,其实现功能较为简单,但由于其灵活、开销小等特点,使得它更适合某些应用。UDP提供无连接的服务。这表示UDP发送出的每一个用户数据报都是独立的数据报。用户数据报并不进行编号,也没有建立连接和释放连接的过程,每一个用户数据报可以走不同的路径。8.3用户数据报协议UDP8.3.1UDP概述62UDP是一个不可靠的传输层协议。它没有流量控制,因而当到来的报文太多时,接收端可能溢出。除检验和外,UDP也没有差错控制机制。这表示发送端并不知道报文是丢失了还是重复地交付了。当接收端使用检验和并检测出差错时,就悄悄地将这个用户数据报丢掉。缺少流量控制和差错控制就表示使用UDP的进程必须要提供这些机制。UDP是一个不可靠的传输层协议。它没有流量控制,因而当到来的638.3.2UDP用户数据报UDP分组叫做用户数据报,有8个字节的固定首部。图8-4给出了用户数据报的格式。8.3.2UDP用户数据报UDP分组叫做用户数据报,有864在用户数据报首部中的字段有以下几个:源端口号:这是在源主机上运行的进程所使用的端口号。有16位长,这就是表示端口号的范围为0-65535。若源主机是客户端(当客户进程发送请求时),则在大多数情况下,这个端口是短暂端口号;若源主机是服务器端,则在大多数情况下这个端口号是熟知端口号。目的端口号:这是在目的主机上运行的进程使用的端口号。也是16位长。若目的主机是客户端(当客户进程发送请求时),则在大多数情况下,这个端口是短暂端口号;反之,若目的主机是服务器端,则在大多数情况下这个端口号是熟知端口号。在用户数据报首部中的字段有以下几个:源端口号:这是在源主机上65总长度:是用户数据报的总长度,即首部加上数据后的总长度,也是16位长。这表示总长度最长为65535字节,但最小长度不是0字节,而是8字节,它指出用户数据报只有首部而无数据。检验和:这个字段用来检验整个用户数据报出现的差错总长度:是用户数据报的总长度,即首部加上数据后的总长度,也是66用户数据报数据部分则是从应用层继承下来的,数据的长度可从0到65507(即65535-20-8)字节(20字节的IP首部和8字节的UDP首部)用户数据报数据部分则是从应用层继承下来的,数据的长度可从0到67UDP用户数据首部中检验和的计算机方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP用户数据报真正的首部。伪首部共六个字段:源IP地址、目的IP地址、全0(为补偶数个字节用)、协议号、UDP长度,大部分字段都是从IP数据报首部中提取出来的。只是在计算检验和时,临时和UDP用户数据报连接在一起,得到一个过渡的UDP用户数据报。检验和就是按照这个过渡的UDP用户数据报来计算的。伪首部的存在仅为了计算机检验和。UDP用户数据首部中检验和的计算机方法有些特殊。在计算检验68UDP计算检验和是将首部和数据部分一起检验。在发送端,首先是先将全零放入检验和字段。再将伪首部以及UDP用户数据报看成是由许多16bit的字串接起来。若UDP用户数据报的数据部分不是偶数个字节,则要填入一个全零字节(但此字节并不发送)。然后按二进制反码计算出这些16bit字的和。将此和的二进制反码定入检验和字段后,发送此UDP用户数据报。在接收端,将收到的UDP用户数据报连同伪首部(以及可能的填充全零字节)一起,按二进制反码求这些16bit字的和。当无差错时其结果应为全1。否则就表明有差错出现,接收端就应将此UDP用户数据报丢弃。UDP计算检验和是将首部和数据部分一起检验。在发送端,首先是698.4传输控制协议TCP8.4.1TCP概述与UDP不同,TCP是一种面向流的协议。在UDP中,进行把一块数据发送给UDP以便进行传递。UDP在这块数据上添加自己的首部,这就构成了数据报,然后再把它传递给IP来传输。这个进程可以一连传递好几个块数据给UDP,但UDP对每一块数据都是独立对待,而并不考虑它们之间的任何联系。8.4传输控制协议TCP8.4.1TCP概述70TCP则允许发送进程以字节流的形式来传递数据,而接收进程也把数据作为字节流来接收。TCP创建了一种环境,它使得两个进程好像被一个假想的“管道”所连接,而这个管道在Internet上传送两个进程的数据,发送进程产生字节流,而接收进程消耗字节流。由于发送进程和接收进程产生和消耗数据的速度并不一样,因此TCP需要缓存来存储数据。在每一个方向上都有缓存,即发送缓存和接收缓存。另外,除了用缓存来处理这种速度的差异,在发送数据前还需要一种重要的方法,即将字节流分割为报文段(Segment)。报文段是TCP处理的最小数据单元。报文段的长度可以是不等的。TCP则允许发送进程以字节流的形式来传递数据,而接收进程也把71TCP发送与接收数据过程的示意图如图8-5所示。图8-5TCP发送与接收数据过程TCP发送与接收数据过程的示意图如图8-5所示。图8-5T72TCP提供全双工服务,即数据可在同时间双向流动,每一个TCP都有发送缓存和接收缓存,而两个方向都可以发送报文段。TCP是面向连接协议,它有连接建立、数据传输、连接释放三个过程。TCP是可靠的传输协议,它使用确认机制来检查数据是否安全和完整地到达。TCP提供全双工服务,即数据可在同时间双向流动,每一个TCP738.4.2TCP报文段TCP报文段同样由首部和数据两部分组成。但其首部要比UDP复杂的多,其首部前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N为整数)。因此,TCP首部长度在20-60字节之间。8.4.2TCP报文段TCP报文段同样由首部和数据两部分组74图8-6TCP报文段格式图8-6TCP报文段格式75源端口和目的端口字段:各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。序号字段:占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。确认号字段:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。数据偏移:占4bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位不是字节而是32bit字(4字节为计算单位)。源端口和目的端口字段:各占2字节。端口是运输层与应用层的76保留字段:占6bit,保留为今后使用,但目前应置为0。紧急比特URG:当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。确认比特ACK:只有当ACK1时确认号字段才有效。当ACK0时,确认号无效。推送比特PSH(PuSH):接收TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。保留字段:占6bit,保留为今后使用,但目前应置为0。77复位比特RST(ReSeT):当RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。同步比特SYN:同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。终止比特FIN(FINal):用来释放一个连接。当FIN1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。窗口字段:占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。复位比特RST(ReSeT):当RST1时,表78检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。紧急指针字段:占16bit。紧急指针指出:在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。选项字段:长度可变。TCP只规定了一种选项,即最大报文段长度MSS(MaximumSegmentSize)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”填充字段:这是为了使整个首部长度是4字节的整数倍。检验和:占2字节。检验和字段检验的范围包括首部和数据这两798.4.3TCP的可靠性TCP是一种可靠的传输协议。其可靠性体现在它可保证数据按序、无丢失、无重复的到达目的端。TCP报文段首部的数据编号与确认字段为这种可靠传输提供了保障。TCP将所要传送的整个报文看成一个个字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。8.4.3TCP的可靠性TCP是一种可靠的传输协议。其可靠80接收站点在收到发送方发来的数据后依据序号重新组装所收到的报文段。为什么要依靠序号来重组报文段呢?因为在一个高速链路与低速链路并存的网络上,可能会出现高速链路上的报文段比低速链路上的报文段提前到达的情况,此时就必须依靠序列号来重组报文段,以保证数据可以按序上交应用进程。这就是序列号的作用之一。接收站点在收到发送方发来的数据后依据序号重新组装所收到的报文81TCP的确认是对接收到的数据的最高序号(即收到的数据中的最后一个序号)进行确认。但返回的确认序号ACK是已收到的数据的最高序号再加1,该确认号既表示对已收数据的确认,同时表示期望下次收到的第一个数据字节的序号。TCP的确认是对接收到的数据的最高序号(即收到的数据中的最后82图8-7显示了TCP报文段传输时SEQ和ACK所扮演的角色。图8-7显示了TCP报文段传输时SEQ和ACK所扮演的角色。83在实际通信中,存在着超时和重传两种现象。如果在传输过程中丢失了某个序号的报文段,导致发送端在给定的时间段内得不到相应的确认序号,那么就确认该报文段已被丢失并要求重传。已发送的TCP报文段会被保存在发送端的缓冲区中,直到发送端接收到确认序号才会消除缓冲区中的这个报文段。这种机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高二上学期数学教学计划大全2篇
- 婚宴女方父母婚礼致辞(3篇)
- 长城导游词(35篇)
- 监理资料员年度工作总结
- 领导力开发心得体会
- 满月酒庆典上的讲话稿(35篇)
- 读《三国演义》阅读心得体会(32篇)
- 相交线与平行线(题型归纳)(原卷版+解析)
- 26.4 解直角三角形的应用 同步练习
- 2024保育员(高级)复审考试题库(含答案)
- 2023年旅行社经营管理教案
- 体育与健康 五禽戏(2022年秋2021级)学习通课后章节答案期末考试题库2023年
- Unit 5 Dinners ready A Lets spell(说课稿)人教PEP版英语四年级上册
- 艺术设计专业人才需求报告
- 中医医疗技术手册目录(普及版)
- 解码国家安全知到章节答案智慧树2023年国际关系学院
- 三年级家长会PPT语文教师用
- 乔治华盛顿介绍George Washington
- 脚内侧传球说课PPT
- 2023年湖南化工职业技术学院单招职业适应性测试题库及答案解析
- 检查工作纪律及注意事项
评论
0/150
提交评论