传输层课件讲义整理_第1页
传输层课件讲义整理_第2页
传输层课件讲义整理_第3页
传输层课件讲义整理_第4页
传输层课件讲义整理_第5页
已阅读5页,还剩183页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机网络1中科院研究生院授课教师:鲁士文2003.12.11计算机网络1中科院研究生

第六章传输层学习要点传输层的功能TCP/IP体系中的传输层协议2中科院研究生院授课教师:鲁士文2003.12.11第六章传输层学习要点2中科院研究生院授课教师:鲁第六章传输层6.1OSI传输协议6.2Internet传输协议 6.2.1 TCP的基本概念6.2.2 TCP报文段的格式

6.2.3 TCP连接的建立、拆除和重置

6.2.4 TCP拥塞控制 6.2.5Internet传输协议UDP

6.2.6Internet关于端口号的约定

3中科院研究生院授课教师:鲁士文2003.12.11第六章传输层6.1OSI传输协议3中科院研究生院为什么需要运输层1、在一个网络连接上复用多对进程的通信。2、解决多互连的通信子网的通信协议的差异和提供的服务功能的不同。3、解决网络层及下两层自身不能解决的传输错误。4中科院研究生院授课教师:鲁士文2003.12.11为什么需要运输层1、在一个网络连接上复用多对进程的通信。4中运输层与上下层之间的关系

5中科院研究生院授课教师:鲁士文2003.12.11运输层与上下层之间的关系5中科院研究生院授课教师:鲁士第六章传输层在OSI参考模型中,传输层的职责是在两个不同系统的进程之间提供一种交换数据的可靠机制,由于传输层仅关心会话实体之间的数据传输,所有它的协议都具有端到端的意义。某些用户应用程序需要绝对保证所有的协议数据单元都被安全地投递到目的地,而且一个会话实体可以请求一定质量的服务,一旦传输层提供具有这种质量的传输连接,它就必须维持这种连接。在传输层不能再维持所提供质量的情况下,它必须把这一事实明确地通知会话实体。也许,想像传输层的最好方法是把它看成一种安全保护罩,不管下面的基础网络发生什么事件,它都要负责照料传输的数据。

6中科院研究生院授课教师:鲁士文2003.12.11第六章传输层在OSI参考模型中,传输层的职责是在两个不同第六章传输层传输层还执行许多其它功能。它的主要作用之一是为更高层协议屏蔽下层操作的细节。确实,用户可以完全不了解支持用户活动的物理网络,因为有传输层在用户和网络之间提供透明的接口。传输层使得高层协议不用操心如何去获得所需级别的网络服务。传输层的目标是在源端机和目的地机之间提供性能可靠、价格合理的数据传输,而与当前实际使用的网络无关,任何用户进程或应用程序可以直接访问传输服务,而不必经过会话层和表示层,实际上,Internet的传输层协议就是以这种方式工作的。7中科院研究生院授课教师:鲁士文2003.12.11第六章传输层传输层还执行许多其它功能。它的主要作用之一是第六章传输层传输服务有两大类:面向连接的传输服务和无连接的传输服务。面向连接的传输服务与面向连接的网络服务十分相似,两者都向用户提供连接的建立、维护和释放。无连接的传输服务与无连接的网络服务也十分相似。在这里,我们不禁要问:“既然传输服务与网络服务如此相似,为什么还要把它们划分为两层呢?”这是一个微妙而又关键的问题。事实上。网络层是通信子网的一个组成部分,假如网络服务质量不可靠,频繁地丢失分组,网络层系统崩溃或不停地发出网络重置,试想将会发生什么样的情况呢?

8中科院研究生院授课教师:鲁士文2003.12.11第六章传输层传输服务有两大类:面向连接的传输服务和无连接第六章传输层因为用户不能对通信子网加以控制,故无法采用更好的通信处理机来解决网络层服务质量低劣的问题,更不可能通过改进数据链路层纠错能力来改善低层的条件。解决这一问题的唯一可行办法就是在网络层上面增加一层即传输层。传输层的存在使得传输服务比网络服务更可靠,分组的丢失、残缺甚至网络重置都可以被传输层检测到,并采取相应的补救措施。而且,由于传输服务独立于网络服务,故可以采用一个标准的原语集提供传输服务。而网络服务则因不同的网络可能有很大的差异。因为传输服务是标准的,所以用传输服务原语编写的应用程序就能广泛地适用于各种网络。9中科院研究生院授课教师:鲁士文2003.12.11第六章传输层因为用户不能对通信子网加以控制,故无法采用更6.1OSI传输协议如果下层的网络很可靠,那么用于完成数据传送的传输层协议就不需要做太多工作。如果下层的网络是不可靠的,那么就要使用稍微复杂一点的传输协议机制。为提供面向连接的传输服务,ISO定义了5类传输协议。它还定义了一个无连接的传输协议,尽管没有一个OSI应用协议使用无连接传输服务。我们首先考察面向连接的传输服务COTS(Connection-OrientedTransportService)。有意设计得很简单的COTS可使用户得到一个易于使用的、可靠的传输服务。另一方面,用来提供COTS的传输协议都很复杂,因为它们要能应付不可靠的网络。面向连接的传输服务仅含有4个服务元素:T-CONNECT,T-DATA,T-EXPEDITED-DATA和T-DISCONNECT。传输服务TS的用户使用T-CONNECT与其对等实体建立全双工的传输连接。在传输连接建立期间,两个TS用户和传输服务提供者可以协商服务质量QOS参数和快速数据选项。10中科院研究生院授课教师:鲁士文200OSI传输协议如果下层的网络很可靠,那么用于完成6.1OSI传输协议有两个数据传输服务元素:T_DATA和T_EXPEDITED_DATA。T_DATA服务元素为非证实型,但它们能在TS用户间可靠地传递数据。如果发生传输故障,传输服务提供者将会向用户通知故障。没有证实肯定也就没有同步,但不一定不可靠。从传输用户的观点来看,传输服务不会产生错误。对实际的网络来说,传送数据时当然会有错误产生,但是,在不可靠的网络之上为用户提供一个可靠的服务正是传输层要达到的目标。传输层实体接受从网络层来的数据确认和N_RESET服务原语,并由传输层纠正产生的错误。当一个网络连接重置时,传输层可以再另建一个新的网络连接,并从原网络连接中断处开始继续执行。如果快速数据选项被选择,那么T_EXPEDITED_DATA服务元素就用来传递快速数据。实现者常常约定一次最多可携带10个字节的快速数据。11中科院研究生院授课教师:鲁士文200OSI传输协议有两个数据传输服务元素:T_DAT6.1OSI传输协议在连接建立后,TS用户或传输服务提供者都可以使用T_DISCONNECT服务元素释放连接。一旦调用该服务,传递中的任何TSDU(传输服务数据单元)或ETSDU(快速传输服务数据单元)都可能丢失。因此,T_DISCONNECT具有破坏性,它可由传输服务提供者或被呼用户用于拒绝连接。COTS服务定义非常简单。COTS仅是一个抽象的定义,而不是一个接口规范。接口规范中含有本地的处理原语和通信原语,例如,它可能包括TS用户使用什么手段联结到TSAP(传输服务访问点),TS用户怎样检测从网络层进入事件的到来等原语。

12中科院研究生院授课教师:鲁士文200OSI传输协议在连接建立后,TS用户或传输服务提6.1OSI传输协议下面我们再考察一下无连接传输服务CLTS(ConnectionlessTransportService)。CLTS仅提供一个服务元素T_UNIT_DATA。T_UNIT_DATA有4个参数:源传输地址,目的地传输地址,TS用户数据和QOS。因为没有连接建立阶段,TS用户不可能和其服务提供者协商QOS。在这种服务方式中,无法保证可靠的数据传输,需要靠上层进行适当的差错恢复。图6-1(a)和(b)分别列出了OSI面向连接的传输服务原语和OSI无连接传输服务原语。其中的参数含义如下:callee:被呼方传输地址(TSAP)caller:

呼方传输实体使用的传输地址(TSAP)exp_wanted:

表明是否要发送加速数据的布尔标志。QOS:希望的服务质量。User_data:传输的大于等于零个字节的数据,这些数据不受检查。Reason:事件发生的原因。Responder:连接到的目标方的传输地址。13中科院研究生院授课教师:鲁士文200OSI传输协议下面我们再考察一下无连接传输服务C6.1OSI传输协议

14中科院研究生院授课教师:鲁士文200OSI传输协议14中科院研究生院授课教师6.1OSI传输协议网络服务和传输服务一个重要的区别是它们的服务对象不同。网络服务为传输层实体所用,这些传输层实体通常是操作系统的一部分,或者装在一个特殊的硬件板或芯片上,几乎没有用户自己书写传输层实体,因此很少有用户或应用程序能直接看到网络服务。相反,很多用户并不使用会话层和表示层,他们直接看到传输层原语。正如我们早先提到的那样,Internet网甚至根本就没有会话层和表示层,因此,所有使用网络的应用程序都与传输原语接口(这些传输原语虽然与OSI的传输原语不同,但大致相似)。为了说明这一点,可以考虑用UNIX的管道连接起来的进程,这些进程认为它们之间的连接是完美的,它们并不想知道有关数据确认、N_RESET服务原语、网络拥塞或者任何类似的细节问题。它们想要的仅是一个完美的连接。进程A从管道的一端放入数据,进程B从另一端将数据取出,这就是面向连接的传输服务的全部意义——将不完善的网络服务隐蔽起来,使得用户进程能假定存在着一个可靠的无错的比特流传送。15中科院研究生院授课教师:鲁士文200OSI传输协议网络服务和传输服务一个重要的区别是6.1OSI传输协议图6-2示出了OSI各种传输层服务原语之间的关系。在该图的8个分图中,一个传输用户在双线的左边,另一个在双线的右边,传输服务提供者(即传输层本身)则在双线之间。时序是从上到下,顶上的事件要比底下的事件先发生。图6-2(a)说明正常的连接建立过程。图中用了4个原语。一个传输实体执行一个称为T_CONNECT·request的原语,表示它想和这个服务原语中指定的传输服务访问点(TSAP)地址相连的传输用户建立连接。T_CONNECT·request服务原语导致在目的地端产生T_CONNECT.indication服务原语。与目的端的TSAP地址相连的传送用户收到这一indication原语后,如图6-2(a)所示,既可以发出T_CONNECT.response服务原语来表示接受它,也可以如图6-2(b)所示,发出T_DISCONNECT.request来拒绝它。接受的结果返回到连接发起端为T_CONNECT.confirm服务原语。拒绝的结果为T_DISCONNECT·indication服务原语。16中科院研究生院授课教师:鲁士文200OSI传输协议图6-2示出了OSI各种传输层服务6.1OSI传输协议

17中科院研究生院授课教师:鲁士文200OSI传输协议17中科院研究生院授课教师6.1OSI传输协议当试图建立连接时,另外一种情况也可能发生,如图6-2(c)所示,这是在传输服务提供者本身拒绝建立连接的情况下发生的。这也许是由于传输层用户的过错(如T_CONNECT.request原语中的无效参数),或者是由于传输提供者的原因(如,传输服务提供者的内部表空间已使用完)。在这种情况下,网络中并没有传送任何东西,所以远端实体对此失败了的建立连接请求一无所知。18中科院研究生院授课教师:鲁士文200OSI传输协议当试图建立连接时,另外一种情况也可6.1OSI传输协议

19中科院研究生院授课教师:鲁士文200OSI传输协议19中科院研究生院授课教师6.1OSI传输协议从图6-2(d)至12-2(f)我们可以看到连接释放的3种方式。正常的方式是连接的一方发出一个T_DISCONNECT.request原语,而连接的另一方则收到T_DISCONNECT.indication。无论是连接的建立方或者响应方都可以率先发起释放连接。当连接的双方同时发出T_DISCONNECT.request原语时,双方无需收到断连指示,连接即可释放。20中科院研究生院授课教师:鲁士文200OSI传输协议从图6-2(d)至12-2(f)我6.1OSI传输协议

21中科院研究生院授课教师:鲁士文200OSI传输协议21中科院研究生院授课教师6.1OSI传输协议最后,如图6-2(f)所示,传输服务提供者可以通过向连接的双方直接发送T_DISCONNECT.indication原语而终止连接。从某种程度上讲,最后这种情况有点类似于网络层发送N_RESET.indication原语的情况。显然,一个设计良好的传输服务提供者不应该轻易地发T_DISCONNECT.indication原语,只有在没有其它措施可用的情况下才这样做。例如,在下层网络崩溃而对不断发出的通信请求置若罔闻时,传输服务提供者除了断开所有连接外别无选择。如果会话层对这一情况未采取任何预防措施,那么就必须将出错信息报告给最高层,并且可能要求人工干预,以再次尝试不成功的命令。

22中科院研究生院授课教师:鲁士文200OSI传输协议最后,如图6-2(f)所示,传输服6.1OSI传输协议图6-2中的最后两个图显示了普通数据和加速数据的传输过程。两种情况下都没有显式的数据确认或指示送回给数据发送者。传输层使用同网络层一样的队列模型,数据通常按顺序递交。但是,传输层加速数据服务元素T_EXPEDITED_DATA都可以比已在队列中的其它数据更先一步传送。这一服务元素通常仅用于传送BREAKDEL或中断键等信息,这些信息是用户为了中断当前程序的执行而从终端上输入的。假如没有加速数据,那么试想一下,如果一个用户从远地通过传输连接与主机相连的远程终端上启动一个程序,然后在等待此程序终止之前输入一行,这时会产生什么样情况。如果程序进入无限循环而用户键入的是中断字符BREAK,那么,此BREAK信息将被加到队列的末尾,直到运行的进程终止,并且在此BREAK信息之前的队列项被取走之后它才能递交给主机。这就造成了死循环。而使用了加速数据请求之后,不管队列中有什么数据,此BREAK中断信息均可立即递交给主机。

23中科院研究生院授课教师:鲁士文200OSI传输协议图6-2中的最后两个图显示了普通数6.1OSI传输协议

24中科院研究生院授课教师:鲁士文200OSI传输协议24中科院研究生院授课教师6.1OSI传输协议ISO定义了5类面向连接的传输协议,从简单的到最复杂的都有。在连接建立时,TE(传输实体)在主呼TS用户请求的QOS基础上,协商所使用的传输协议。当用户和一些简单的网络实现打交道时,就可以使用一些复杂的传输协议,以便能提供更优质的服务。5类传输协议的定义与网络服务的类型有关。ISO定义了3种类型的网络服务。

25中科院研究生院授课教师:鲁士文200OSI传输协议ISO定义了5类面向连接的传输协议6.1OSI传输协议

-----3种类型的网络服务(1)A型网络服务:A型网络服务本质上很完善,其分组丢失、重复或窜改的概率可以忽略不计。N_RESET很少使用,从而可以忽略。A型服务仅需要尽可能简单的传输协议,提供A型服务的公用广域网几乎没有,但一些小范围的局部网络(如单位内部的面向连接的SNA或DECnet网络层)提供的服务却相当接近A型服务。(2)B型网络服务:B型网络服务提供的网络连接具有可接受的残留差错率和不可接受的被告知的故障率。残留差错是指未纠正的而且是网络服务提供者没有检测到的差错,被告知的故障是指网络层检测到的并通知TE予以纠正的故障。可告知的故障例子有:内部拥挤,硬件问题,软件故障等。它需要传输协议建立新的网络连接和重新同步。也就是说,B型网络服务具有完美的分组递交,但有N_RESET指示存在。公共X.25网提供的服务属于B型网络服务。26中科院研究生院授课教师:鲁士文200OSI传输协议

-----3种类型的网络服务(6.1OSI传输协议

-----3种类型的网络服务(3)C型网络服务:C型网络服务相当不可靠,具有不可接受的残留差错率和不可接受的被告知故障率的网络连接。即使发生了数据丢失、重复、失序或被篡改等事件,这种网络也不可能检测到差错。因此,驻留在C型网络服务之上的传输协议是最为复杂的。提供单纯的无连接(数报报)服务的广域网、无线电分组交换网和很多互连网(如IP)均属此类。

27中科院研究生院授课教师:鲁士文200OSI传输协议

-----3种类型的网络服务(6.1OSI传输协议

--5类传输协议基于3种类型的网络服务,ISO定义了5类运输协议:·0类:简单类·1类:基本差错恢复类·2类:多路复用类·3类:差错恢复与多路复用类·4类:差错检测与恢复类

0类和2类用于A型网络,1类和3类用于B型网络,4类用于C型网络。

28中科院研究生院授课教师:鲁士文200OSI传输协议

--5类传输6.1OSI传输协议

--5类传输协议(1)TP0:由CCITT为智能用户电报终端研制的0类协议,提供了最简单的协议机制,以支持A型网络。它为一个传输连接建立一个网络连接,要求并假定网络连接不会出错。依靠下面网络层对数据的正确传送,传输协议不再进行排序和流控。它只提供建立和释放连接的机制。29中科院研究生院授课教师:鲁士文200OSI传输协议

--5类传6.1OSI传输协议

--5类传输协议(2)TP1:为能在X.25网络(B类)高层上运行设计的1类协议,提供了具有最小服务的连接,即从网络可通告的故障中恢复的能力。1类除包括从N_RESET中恢复的功能外与0类相似。如果一个给定的传输连接使用的网络连接受到N_RESET的影响,那么传输连接两端的两个传输实体就进行一次重新同步,然后从中断处开始继续运行。为了进行重新同步,它们必须跟踪数据的顺序号,而这在0类中是不需要的。除了从N-RESET中恢复的能力以外,1类传输协议在网络提供的功能之上不再提供任何错误控制或流控制。

30中科院研究生院授课教师:鲁士文200OSI传输协议

--5类传6.1OSI传输协议

--5类传输协议(3)TP2:2类传输协议也是为使用可靠的网络(A型)而设计的。它基本上是对0类的增强,允许多路复用(几个传输连接使用同一条网络连接)。它与0类不同,在其协议中允许两个或多个传输连接向同一个网络连接发送数据。当存在着许多个传输连接时,每个连接的流量都相对较小;当通信公司对每个打开的网络连接的连接时间收费很高时,这一特性很有用处。例如,3个全是飞机预售票终端的办公室里,本地主机的每个终端都有一个独立的传输层连接与远程计算机交互,这时可以把所有传输连接都复用到一条网络连接上,以减少网络开销。为实现复用,2类协议提供了直接的(显式)流量控制手段。这是因为,借助于网络层的间接(隐式)流量控制不可能控制参与复用的多个传输连接中的每一个数据流。

31中科院研究生院授课教师:鲁士文200OSI传输协议

--5类传6.1OSI传输协议

--5类传输协议(4)TP3:3类传输协议基本上是1类和2类的组合。它允许多路复用,提供从N_RESET中恢复功能,也使用显式流量控制。它用于支持B型网络。

(5)TP4:4类传输协议是针对C型网络服务设计的。它反映了对传输不可靠的担心,并且相信莫尔非(Murphy)定律:如果什么事可能出错则一定会出错。为此,该协议必须能处理分组的丢失、重复、残损分组、N-RESET和网络抛给它的任何错误。不用说,4类协议要比其它几类协议复杂得多,它类似于Internet的TCP。

32中科院研究生院授课教师:鲁士文200OSI传输协议

--5类传6.2Internet传输协议Internet在IP层之上使用了两个传输协议:一个是传输控制协议TCP,它是面向连接的;另一个是用户数据报协议UDP,它是无连接的(参见图6-3)33中科院研究生院授课教师:鲁士文200Internet传输协议Internet在IP层之6.2.1 TCP的基本概念TCP并不对高层协议的数据产生影响。它对待来自高层的协议数据就像它们是不间断的数据“流”一样。因此,对这些数据的所有处理工作都是由高层协议进行的。但是,TCP仍试图将这些数据“流”分隔成一些不连续的单元,以便以独立的报文段形式进行发送和接收。TCP被用于在各种网络上提供有序可靠数据传输能力的虚电路服务。TCP在不可靠的分组传输子网上(这种子网随时都有可能出现数据丢失、损坏、重复传送、延迟和错序)提供可靠的进程间的通信机制。为取得可靠传送,TCP必须检测分组丢失,收不到确认时自动重传,以及诸如处理延迟的重复数据报的问题等许多操作。34中科院研究生院授课教师:鲁士文200.1 TCP的基本概念TCP并不对高层协议的数据产生6.2.1TCP的基本概念由于TCP具有独立于特定网络的特性,故它有一个关于它的报文段长度(65K字节)的规定。TCP之间彼此能发送小于这一最大长度的段。假如对等的两个TCP实体之间交换的段长度较大,大多数IP层都会将这些报文段划分成小的分段,以满足实际网络对它的最大物理分组长度的要求。实际上,大多数TCP软件在处理它的段长度时,总是很好地进行选择,使得它恰好满足实际网络的要求。TCP是面向字节流的。当两个应用程序转移大量数据时,我们把数据看成字节流。流投递服务将源机器上发送方交给它的字节序列不加改变地在目的机器上传给接收方。TCP为它的高层协议数据“流”中的每一字节都分配一个顺序号。在与对等的TCP交换报文段时,TCP给这些段附加的控制信息包括该段中第1个字节的顺序号以及该段中所有数据字节的个数。这样就使得接收端TCP能将这些段还原成一个不间断的数据“流”送给它自己的高层协议。35中科院研究生院授课教师:鲁士文200.1TCP的基本概念由于TCP具有独立于特定网络的特6.2.1TCP的基本概念当需要重传一系列报文段时,TCP可以方便地对数据进行重新封装。例如,它能将传送的两个较小的段合并成一个较大的段。这种情况往往出现在广域网中。为了提高线路通信效率,往往需要传输的段尽可能大一些,从而降低报文段头部信息相对于用户数据的比例。这样做的同时也增加了TCP协议的复杂性,因为接收方必须处理一些这样的段:在重复报文段的情况下既包含以前曾接收到的信息,也包含一些新的信息。36中科院研究生院授课教师:鲁士文200.1TCP的基本概念当需要重传一系列报文段时,TCP6.2.1TCP的基本概念图6-4示出了从发送方的高层协议通过TCP到达接收方的高层协议数据传输的完整过程。

37中科院研究生院授课教师:鲁士文200.1TCP的基本概念图6-4示出了从发送方的高层协6.2.1TCP的基本概念现将该图说明如下:(1)发送方的高层协议发出一个数据“流”给它的TCP实体进行传输。(2)TCP将此数据流分成段。可能提供的传输措施包括:全双工的定时重传,顺序传递,安全性指定和优先级指定,流量控制,错误检测等。然后将这段交给IP。(3)IP对这些报文段执行它的服务过程,包括创建IP分组、数据报分割等,并在数据报通过数据链路层和物理层后经过网络传给接收方的IP。(4)接收方的IP在可能采取检验和重组分段的工作后,将数据报变成段的形式送给接收方的TCP。(5)接收方的TCP完成它自己的服务,将报文段恢复成它原来的数据“流”形式,送给接收方的高层协议。38中科院研究生院授课教师:鲁士文200.1TCP的基本概念现将该图说明如下:38中科院研究6.2.1TCP的基本概念

---TCP服务为了使你对TCP的功能可以有一个较为清晰的概念,下面我们先对过程(2)中叙述的TCP服务作简要说明。*全双工——一个TCP的连接支持两个通信的高层协议之间同时的双向数据传递。*定时——当系统的条件不能按用户定义的超时参数及时传递数据时,TCP通知自己的高层协议,告诉它服务失败。高层协议随后可能会中止该连接或采取其它一些措施。*排序——TCP按照发送方高层协议提供的同样的数据顺序,将数据送给接收方的高层协议。39中科院研究生院授课教师:鲁士文200.1TCP的基本概念

6.2.1TCP的基本概念*标记——TCP在建立连接时,相互之间协商由高层协议提出的安全性和优先级要求。当高层协议未对此作出规定时,TCP按缺省值进行处理。TCP建立连接的一个必要条件,就是由互相通信的高层协议所提供的安全性部分的信息能够互相匹配起来。每个TCP段中都指定有经协商后的安全性的值。假如在连接期间出现了安全性的值不匹配情况,TCP将中断该连接。*流量控制——TCP在其连接的通信过程中,能够调整流量,以防止内部的TCP数据传递出现拥挤,从而导致服务质量下降和出错。*错误控制——TCP能在它的检验和所允许的范围内保证数据的无差错传递。40中科院研究生院授课教师:鲁士文200.1TCP的基本概念*标记——TCP在建立连接时,相6.2.1TCP的基本概念所有的网络通信都可以看作是进程之间的通信。进程在调用TCP时,通过作为参数的数据缓冲区将数据送出。TCP从该数据缓冲区取出数据并分成段,然后调用IP模块,将这些段依次送往目标站点的TCP。接收方TCP在收到的段中将数据取出,装入供接收用的缓冲区,并通知接收方的用户。发送方TCP在段中插入了为保证可靠传输而必须的控制信息,所以接收方在收到段时要将这些控制信息除去,取出真正的数据。

41中科院研究生院授课教师:鲁士文200.1TCP的基本概念所有的网络通信都可以看作是进程之6.2.1TCP的基本概念TCP一般是作为操作系统内部的一个模块安装的。TCP的用户接口,是通过对TCP连接的OPEN、CLOSE,数据的SEND、RECEIVE或调用连接的状态信息来实现的。实际上,它们与文件的打开、关闭、写入、读出十分相似。在TCP的调用接口中,作为参数必须指定地址(端口号)、服务类型、优先级、安全性的值及其它控制信息等。TCP与实际网络的接口亦与普通的设备驱动模块一样。但是,TCP不能直接调用设备驱动模块,一般是通过IP模块来调用设备驱动模块。42中科院研究生院授课教师:鲁士文200.1TCP的基本概念TCP一般是作为操作系统内部的一6.2.1TCP的基本概念在TCP的连接中,数据“流”必须以正确的顺序送达对方。TCP的可靠性是通过顺序编号和ACK来实现的。前面我们已经提到过,数据“流”上的各字节都有自己的编号,各段第1个数据的顺序编号和该段一起传送,我们称它为段顺序编号。而且,在送回的ACK信息中,含有指示下一个应该发送的顺序编号。TCP在开始传送一个段时,为准备重传而首先将该段插入到发送队列之中,同时启动时钟。其后,如果收到了该段的ACK信息,就将该段从队列中删去。如果在时钟规定的时间内ACK未返回,那么就再次送出这一个段。TCP中的ACK应答并不保证数据已到达对方的用户进程,它仅仅是对TCP模块收到信息的确认。43中科院研究生院授课教师:鲁士文200.1TCP的基本概念在TCP的连接中,数据“流”必须6.2.1TCP的基本概念为控制流量,TCP模块间通信采用了窗口机制。这里,窗口是接收方接收字节数量能力的表示。在ACK应答信息中,TCP把ACK加上接收方允许接收数据范围的信息回送给发送方。发送方除非以后又收到来自接收方的最大数据允许接收范围信息,否则总是使用由接收方提供的这一范围发送数据。TCP为实现多路复用使用了端口号。因为端口号是在各个TCP实体上独立使用的,因此从网络整体看来,端口号并非具有唯一性的标识符。构造套接号后,网络上具有唯一性的IP地址和端口号结合在一起,才构成唯一能识别的标识符。44中科院研究生院授课教师:鲁士文200.1TCP的基本概念为控制流量,TCP模块间通信采用6.2.1TCP的基本概念一个TCP连接由通信双方的套接号确定。而且,套接号为通信双方的输入和输出所用,因而是全双工的。从TCP的规定来看,端口与任何进程可自由进行连接,这是实现TCP的各操作系统环境自己的事情。不过还是有一些基本的约定。例如,对一些公共的服务统一规定使用固定的端口号,称为周知口。规范指定,小于256的端口号用于周知口,其余的编号留给操作系统分配,用于其它任意程序。45中科院研究生院授课教师:鲁士文200.1TCP的基本概念一个TCP连接由通信双方的套接号6.2.1TCP的基本概念在调用TCP的OPEN来建立连接时,应将自己的端口号和对方的套接号作为参数指定。TCP模块返回为标识这条连接在本地使用的名字。为了使用已连接好的套接号,必须保存一些相关的信息。为此,构造一个称之为传输控制块(TCB)的数据区,并将本地使用的标识该连接的名字作为指向这个TCB数据区的指针。此外,在OPEN中还需指定连接是主动进行的还是被动进行的。在被动的OPEN请求中,进程不能从自己发起连接,只能接受外来的连接请求。对于被动的OPEN而言,必须能接受来自任何进程的连接请求。在这种情况下,由于不必指明对方的套接号,故将目标方套接号这一参数域全部置成0。这样的用法只能在被动的OPEN请求中使用。这种被动OPEN请求,可以用于形成为接收来自各方用户请求而提供服务的套接号。当然,在采用被动OPEN请求的情形下,即使指定了对方的套接号,也没有什么关系。46中科院研究生院授课教师:鲁士文200.1TCP的基本概念在调用TCP的OPEN来建立连接6.2.1TCP的基本概念在网络虚拟终端Telnet服务器和文件传送、远程作业访问等般应用服务的情况下,往往需要预先定义一些端口号。在UNIX4BSD中,服务和端口号的对应关系可以从/etc/services文件中以对照表的形式查到。执行被动OPEN的进程等待来自主动OPEN的请求,而且即使双方同时使用主动的OPEN进行连接,也能保证最终连接顺利建成。这种连接的灵活性,在一些非同步的分布式环境中十分有用。

47中科院研究生院授课教师:鲁士文200.1TCP的基本概念在网络虚拟终端Telnet服务器6.2.1TCP的基本概念在已经建立起来的连接上的数据传输,可以看成是字节“流”的运动。发送方用户每当用SEND函数发送数据时,为了使它尽快到达接收方,可以使用PUSH标志。对于发送方的TCP来说,当它接收到PUSH标志时,就立即将其发送队列中准备发送的数据全部发出。对于接收方的TCP来说,一旦收到PUSH信号,它就不再等待后续到来的数据,而直接转向接收数据的接收进程。写入一个TCP报文段中的数据是一次或多次SEND调用的结果。PUSH的功能和TCP/用户接口间交换数据的缓冲区的使用有关。假如收到了PUSH标志,TCP模块就不管该数据区是否装满,立即将数据发送出去。相反,未收到PUSH标志时,只有在用户缓冲区已用完的情况下,才会向接收方发送数据。

48中科院研究生院授课教师:鲁士文200.1TCP的基本概念在已经建立起来的连接上的数据传输6.2.1TCP的基本概念PUSH标志迫使TCP尽快将数据发送出去,而不必等待后续数据的到来。一个使用PUSH的典型例子是:假如有一台虚终端,它以网络上另一台主机作为其服务器,则该终端一般会在每一行输入回车换行时发送PUSH标志。从而与服务器取得联系。TCP还定义了通知接收方有紧急数据到达的服务。但是,对接收到的紧急数据如何进行处理,在TCP中并没有规定。一般推荐接收方尽快作出处理。

49中科院研究生院授课教师:鲁士文200.1TCP的基本概念PUSH标志迫使TCP尽快将数据6.2.2 TCP报文段的格式

TCP软件在两台计算机之间传输的数据单元称为报文段。报文段交换涉及到建立连接、传输数据、发送确认、通知窗口尺寸,直到关闭连接。由于TCP使用捎带技巧,一个从机器A传往机器B的确认可能跟从机器A发给机器B的数据在同一个报文段中传输,但这个确认的对象是从机器B到机器A的数据。图6-5示出TCP报文段(segment)的格式,前面是TCP头,后面是数据。报文段既可以用来建立连接,也可以运载数据和应答。

50中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式TCP软件在两台计算机之间6.2.2 TCP报文段的格式

51中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式51中科院研究生院6.2.2 TCP报文段的格式每个报文段分为两部分,前面是TCP头,后面是数据。在TCP头中的SOURCEPORT(源端口)段和DESTINATIONPORT(目标端口)段各包含一个TCP的端口号,分别标识连接两端的两个应用程序。而SEQUENCENUMBER(序列号)标识本报文段中的数据在发送者字节流中的位置。ACKNOWLEDGEMENTNUMBER(确认号)标识本报文段的源发方下一个期待接收的字节的编号。注意,序列号是指与本数据报文段同向流动的数据流,而确认号是指与本数据报文段反向流动的数据流。

52中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式每个报文段分为两部分,前面是6.2.2 TCP报文段的格式偏移(offset)段包含一个整数,指明报文段头的长度,单位是32位。需要这个段是因为为头中的任选项段长度可变,视包括哪些选项而定。因此,这个TCP报头的长度随所选的选项而变化。标有保留(RESERVED)的段为6位,留给将来使用。有的报文段只载送应答,而另外的报文段载送数据。还有的报文段请求建立或关断一条连接。TCP软件使用标有编码位的6位段确定报文段的目的与内容。这6位解释报文段头中的其它段(见表6-1)53中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式偏移(offset)段包含一6.2.2 TCP报文段的格式

54中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式54中科院研究生院授6.2.2 TCP报文段的格式TCP软件每次发送一个报文段时,通过在窗口段中指定它的缓冲区大小通告它愿意接收多少数据。该段包含一个网络标准字节顺序表示的32位无符号整数。窗口通告给出了稍带机制的又一个例子,因为它们伴随所有的TCP报文段,既包括那些运载数据的报文段,也包括那些仅运载应答确认的报文段。

55中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式TCP软件每次发送一个报文段6.2.2 TCP报文段的格式尽管TCP是面向流的协议,但有时候处在连接的一端的程序也需要立即发送带外数据,而不用等待连接的另一端上的程序消耗完数数据流中正传输的数据。例如,当使用TCP进行远程登录会话时,用户可能决定发送一个键盘序列,去中断或终止在另一端的程序。当远方机器上的程序运行不正确时常常需要这样的信号。发送这样的信号就不能等待另一端的程序读取完已经处在TCP流中的所有字节,否则你就不可能中断已经停止读取输入的程序。

56中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式尽管TCP是面向流的协议,但6.2.2 TCP报文段的格式为了提供带外信令,TCP允许发送者把数据指定成是紧急的,意味着接收程序应被尽可能快地通知紧急数据到达,而不管紧急数据处在流中什么位置。当发现紧急数据时,接收方的TCP便通知与连接相关的应用程序进入“紧急”方式。在所有紧急数据都被消耗完毕之后,TCP又告诉应用程序返回正常运行方式。当在一个报文段中发送紧急数据时用以标志紧急数据的机制由CODE段中的URG位和紧急指针段组成。当URG位置1时,紧急指针(URGENTPOINTER)指出窗口中紧急数据结束的位置。紧急指针的值是从序列号段值开始算起的数据段中的正偏移。将紧急指针值与序列号相加就得到最后一个紧急数据字节的编号。

57中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式为了提供带外信令,TCP允许6.2.2 TCP报文段的格式TCP头中的任选项(OPTIONS)段用以处理其它各种情况。目前被正式使用的任选项可用于定义通信过程中最大报文段长,它只能在连接之时使用。任选项可分成两种类型:①仅表示任选项类型的1个字节的任选项。②表示任选项类型的1个字节、表示任选项长度的1个字节及实际的任选项内容等三部分构成的任选项。任选项的长度指任选项真正内容的字节数,加上表示任选项种类的1个字节及表示任选项长度的1个字节。任选项的长度是可变的,我们只要求它以字节为单位,因此有可能不一定是32位的整数倍。在不是32位的整数倍的情况下,为使任选项长度成为32位整数倍,可在表示任选项的结束的任选项后面填充一些位(PADDING)来满足要求。

58中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式TCP头中的任选项(OPTI6.2.2 TCP报文段的格式

----任选项在所有TCP软件的实现中,都应该支持所有的任选项。目前使用的任选项定义有:

(1)

任选项结束内容:00000000类型:0表示任选项结束。在任选项结束位置与TCP包头结束位置不一致时使用。

59中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式

----6.2.2 TCP报文段的格式

----任选项(2)

NOP内容:00000001类型:1该任选项可出现在任选项域中的任何位置,为使任选项为32位的整数倍,可利用它来填充。(3)最大段长度内容:0000001000000100<2字节表示的最大 段长度>类型:2;长度:460中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式

----6.2.2 TCP报文段的格式TCP头中的CHECKSUM(检验和)用于头和数据中的所有16位字。检验和也覆盖了在概念上附加在TCP包头前的伪头,该伪头(参见图6-6)含有源地址、目标地址、协议标识符和TCP段长。61中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式TCP头中的CHECKSUM6.2.2 TCP报文段的格式在伪头内,标有发送方IP地址和接收方IP地址的段分别包含报源互连网地址和报宿互连网地址。这两个地址在发送TCP报文段时都要用到。协议标识符段包含IP分组的协议类型码,对于TCP是6(对于UDP应该是17),标明TCP长度的段含有报文段长度(不包括伪头)。为了计算检验和,TCP把伪头加到TCP报文段上,再对全部内容(包括伪头,TCP报文段头及用户数据)求出16位的反码之和,检验和的初始值设成0,然后每两个字节为1个单位相加,若相加的结果有进位,那么将和加1。如此反复,直到全部内容都相加完为止。将最后的和值对1求补,即取二进制反码,便得到16位的检验和。62中科院研究生院授课教师:鲁士文200.2 TCP报文段的格式在伪头内,标有发送方IP地址6.2.3 TCP连接的建立、拆除和重置要建立一条连接,TCP要使用3次握手动作,如图6-7所示,进行连接建立的TCP双方通过交换3个报文段来同步顺序号。握手中的第1个报文段可以被识别,因为它在其CODE段中有SYN位置1。第2个报文段将SYN位和ACK位都置成1,表明它应答第1个SYN同时继续握手过程,最后一个握手报文段仅仅是一个应答,只是用以通知目的地双方一致认为连接已经建立。通常,一台机器上的TCP软件被动地等待握手,另一台机器上的TCP软件发起连接过程。握手过程设计得很周到,使得即使在双方机器试图同时启动连接的情况下也能正常工作。因此,连接的建立可以从任一端起始或者从两端同时启动。一旦连接建成了,数据就可以同等地在两个方向上流动。这里没有主或从的区别。63中科院研究生院授课教师:鲁士文200.3 TCP连接的建立、拆除和重置要建立一条连接,TC6.2.3 TCP连接的建立、拆除和重置

64中科院研究生院授课教师:鲁士文200.3 TCP连接的建立、拆除和重置64中科院研究生6.2.3 TCP连接的建立、拆除和重置3次握手对于在连接的两端之间的正确同步既是必要的,也是充分的。由于TCP是建立在一种非可靠的分组投递服务基础上,因此信息可能被丢失、延迟、重复或投递无序。TCP协议必须使用一种超时机制重发丢失的请求。如果重复的请求到达时连接仍在建立过程中,或者如果重传的请求被延迟,直到连接被建立、使用和终止之后才到达,那么都会引起故障。3次握手过程(再加上一条连接建立后TCP就忽略要求再建立这条连接的多余请求这一规则)正是为了解决这类问题而建立的。

65中科院研究生院授课教师:鲁士文200.3 TCP连接的建立、拆除和重置3次握手对于在连接的6.2.3 TCP连接的建立、拆除和重置3次握手完成两个重要功能。既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商。这个序列号在握手过程中被发送与确认。每个机器选择一个初始顺序编号,这个编号在要发送的数据流中用来标识字节。顺序号不需要从1开始。当然双方都同意一个初始号是重要的,这样在确认中所使用的字节编号与数据段中使用的字节编号就一致了。

66中科院研究生院授课教师:鲁士文200.3 TCP连接的建立、拆除和重置3次握手完成两个重要6.2.3 TCP连接的建立、拆除和重置为了弄明白机器怎样在仅仅3个报文段之后就可商定2个数据流的顺序编号,我们不妨回想一下,每个数据段中既包含一个序列编号段,又包含一个确认编号段。发起握手动作的计算机,比如A,把它的起始序号x放到3次握手中第1个SYN报文段的序列号域中,第2个计算机,比如称作B,收到这个SYN,记录下这个顺序号。B计算机还在回答中在序列号域内给出自己的序列号以及一个确认,表明它期待字节号x+1。在握手的最后一个报文段中,A确认从B收到了直接y的全部字节。在所有情况下,确认都遵从使用所期望的下一个字节号这一约定(商定为x+1和y+1)

。67中科院研究生院授课教师:鲁士文200.3 TCP连接的建立、拆除和重置为了弄明白机器怎样在6.2.3 TCP连接的建立、拆除和重置我们已经叙述了一般情况下TCP是如何通过交换含最少量信息的报文段来执行3次握手的。正是因为这样的协议设计,握手报文段中随同初始序列号发送数据是可能的。在这些情况下,TCP软件一定要保持数据,直到握手完成。一旦建立了连接,TCP软件就可以释放所保持的数据,并把这些数据迅速传递给正在等待的应用程序。使用TCP进行通信的两个程序可以使用CLOSE(关断)操作从容地终止对话。在内部,TCP使用一种修改的3次握手关断连接。

68中科院研究生院授课教师:鲁士文200.3 TCP连接的建立、拆除和重置我们已经叙述了一般情6.2.3 TCP连接的建立、拆除和重置TCP连接是全双工的,因为我们把种连接看成包含两个独立的流传送,每个方向上一个。当一个应用程序告诉TCP它没有更多的数据要发送时,TCP将关闭在一个方向上的连接。正在发送的TCP为了关掉一条连接上的方向的那一半,把剩余数据发送完毕,等待接收方对它应答,然后发送一个FIN位置1的报文段,接收方TCP确认这个FIN报文段,并通知自己这一边的应用程序没有更多的数据可提供(例如,使用操作系统的文件结束机制)。一旦一条连接关掉一个方向,TCP便拒绝再接受这个方向上的数据。同时,数据可以继续在相反方向上流动,直到发送方关掉那个方向的连接为止。当然,即便是连接已经关断了,确认还是继续流回到发送端。当两个方向都已关断时,在每一端点上的TCP软件便删除各自的连接记录。69中科院研究生院授课教师:鲁士文200.3 TCP连接的建立、拆除和重置TCP连接是全双工的6.2.3 TCP连接的建立、拆除和重置关断连接的详细情况比上面叙述的还要复杂一些,因为TCP是使用一种修改的3次握手去关断连接,图6-8示出了这个关断过程。

70中科院研究生院授课教师:鲁士文200.3 TCP连接的建立、拆除和重置关断连接的详细情况比6.2.3 TCP连接的建立、拆除和重置用以建立和关断连接的3次握手之间的差别发生在机器接收到初始的FIN报文段之后,TCP不是立即产生第2个FIN报文段,而是发送一个应答(ACK),然后关断连接的请求通知应用程序。将请求通知应用程序并获得响应可能需要相当长的时间(例如,可能涉及到与人的交互作用)。上述确认防止在等待期间重发初始的FIN报文段。最后,当应用程序指示TCP完全关断连接时,TCP发送第二个FIN报文段,并且源场点以第二个报文段即ACK应答。通常,应用程序在用完一条连接时就使用关断操作把连接关掉。因此,关断连接可以看成是正常使用的一部分,就像关闭文件那样。71中科院研究生院授课教师:鲁士文200.3 TCP连接的建立、拆除和重置用以建立和关断连接的6.2.3 TCP连接的建立、拆除和重置有时候,非正常条件的出现会迫使应用程序或网络软件断开一条连接。TCP为这样的非正常断连提供了一个重置设施。为重置一条连接,一侧发送一个报文段,将其CODE段中的RST位置1,以此来启动一次终止过程。另一侧立即使连接非正常中止,以此来响应重置报文段。TCP还通知应用程序发生了重置。重置是一种立即的非正常中止,这就意味着在两方向上的传递都立即停止,像缓冲区这样的资源也被释放。72中科院研究生院授课教师:鲁士文200.3 TCP连接的建立、拆除和重置有时候,非正常条件的6.2.4 TCP拥塞控制TCP使用滑动窗口协议做端到端的流控制。该协议的实现是让接收方在它的应答中指定它在未来愿意接收的字节数量。通告的窗口保证接收方缓冲区将永远不会溢出,因为发送方发送的数据不会超过在其通告窗口中指定的数量。然而,通告窗口不能防止在中间路由器上的缓冲区产生溢出,也就是说不能防止拥塞的发生。当路由器在其缓冲区中必须处理太多的分组时,路由器就会变得过载。因为IP不提供任何控制拥塞的机制,所以它依靠高层检测拥塞和采取应对措施。也可以使用TCP窗口机制来控制在网络中的拥塞。73中科院研究生院授课教师:鲁士文200.4 TCP拥塞控制TCP使用滑动窗口协议做端到端的6.2.4 TCP拥塞控制TCP拥塞控制的基本思想是让每个发送方仅发送正确数量的数据,保持网络资源被利用但又不会被过载。如果发送方抢占资源,发送太多的分组,网络将经历拥塞。在另一方面,如果TCP发送方太保守,网络又会得不到充分利用。TCP在不会引起网络拥塞的条件下,其发送方可以发送的最大字节数量是用另一个称作拥塞窗口的窗口指定的。为了避免网络拥塞和接收方缓冲区溢出,TCP发送方在任一时间可以发送的最大数据量是通告窗口和拥塞窗口中的最小值。74中科院研究生院授课教师:鲁士文200.4 TCP拥塞控制TCP拥塞控制的基本思想是让每个6.2.4 TCP拥塞控制TCP拥塞控制算法根据网络状态动态地调节拥塞窗口。TCP拥塞控制算法的操作可以划分成三个阶段。第一阶段在算法启动或重启动时运行,并且假定管道是空的。该技术被称作慢启动,其执行是首先把拥塞窗口设置成一个最大尺寸的段。每当发送方接收到来自接收方的一个应答时,发送方把拥塞窗口增加一个段。在发出第一个段之后,如果发送方在超时之前接收到应答,发送方就把拥塞窗口增加到两个段。如果这两个段被应答,拥塞窗口增加到四个段,等等。在这一阶段拥塞窗口呈指数增长。指数增长的原因是慢启动需要尽快充满空的管道。名字“慢启动”也许是一个误称,因为该算法暴跳得很快。75中科院研究生院授课教师:鲁士文200.4 TCP拥塞控制TCP拥塞控制算法根据网络状态动6.2.4 TCP拥塞控制慢启动不会长久地增加拥塞窗口,因为管道最终将被充满。特别地,当拥塞窗口达到一个称作拥塞门槛的指定值时,慢启动停止。拥塞门槛起初被设置成65535字节。在这一点上拥塞避免阶段取而代之。这一阶段假定管道的运行接近被充分利用。该算法减少增长速率是明智的,因为这样做将不会过量超出。特别地,在拥塞避免期间线性地,而不是指数地,增加拥塞窗口。其实现是对于每一往返时间增加拥塞窗口一个段。76中科院研究生院授课教师:鲁士文200.4 TCP拥塞控制慢启动不会长久地增加拥塞窗口,因6.2.4 TCP拥塞控制显然,拥塞窗口不可以无限制地增加。当TCP检测到网络拥塞的时候拥塞窗口停止增加。该算法现在进入第三阶段。在这一点上,首先把拥塞门槛设置成当前窗口尺寸(拥塞窗口和通告窗口中的最小值,但至少两个段)的一半。接着把拥塞窗口设置成一个最大尺寸的段。然后再使用这种慢启动技术重新启动。77中科院研究生院授课教师:鲁士文200.4 TCP拥塞控制显然,拥塞窗口不可以无限制地增加6.2.4 TCP拥塞控制TCP如何检测网络拥塞呢?当由于段丢失在超时期满之前应答没有到达时,TCP就假定在网络中发生了拥塞。该算法所做的基本假定是由于拥塞而不是由于差错引起丢失。这一假定在有线网络中相当有效,在这里传输错误引起的段丢失百分比一般较低(小于1%)。TCP在接到重复ACK时也认为发生了拥塞,重复ACK由段的重新排序或段丢失引起。TCP对重复ACK的反应跟前述一样把拥塞门槛减少到当前窗口大小的一半。然而,此时不把拥塞窗口置成1。如果拥塞窗口小于新的拥塞门槛,那么拥塞窗口按照慢启动的公式增加。否则拥塞窗口按照拥塞避免的方式增加。78中科院研究生院授课教师:鲁士文200.4 TCP拥塞控制TCP如何检测网络拥塞呢?当由于6.2.4 TCP拥塞控制总之,TCP的拥塞窗口随时间进展呈动态特性。作为示例,起初,慢启动急剧上升,直至到达拥塞门槛(比如说,16个段)。然后拥塞避免阶段线性地增加窗口,直至发生超时时,表明网络拥塞了。此时,把拥塞门槛置成10段,把拥塞窗口置成1段。然后算法再次慢启动。79中科院研究生院授课教师:鲁士文200.4 TCP拥塞控制总之,TCP的拥塞窗口随时间进展6.2.5Internet传输协议UDPUDP(UserDatagramProtocol)采取无连接的方式提供高层协议间的事务处理服务,允许它们互相发送数据报。也就是说,UDP是在计算机上规定用户以数据报方式进行通信的协议。UDP与IP的差别在于,IP对于系统管理的网络软件可以使用,一般用户无法直接使用,而UDP是普通用户可直接使用的,故称为用户数据报协议。UDP必须在IP上运行,即它的下层协议是以IP作为前提的。既然UDP是一种无连接的数据报投递服务,它就不保证可靠投递。它跟远方的UDP实体不建立端到端的连接。而只是将数据报送上网络,或者从网上接收数据报。UDP根据端口(Port)号对若干个应用程序进行多路复用,并能利用检验和检查数据的完整性。

80中科院研究生院授课教师:鲁士文200.5Internet传输协议UDPUDP(User6.2.5Internet传输协议UDP与传输控制协议TCP类似,一台计算机上的应用程序和UDP的接口是UDP端口。这些端口用从0开始的数字编号,每种应用程序都在属于它的固定端口上等待来自其它计算机的客户的服务请求。例如SNMP(简单网络管理协议)服务方(又称代理)总是在161号端口上等待远方客户的服务请求。一台计算机只能有一个SNMP代理程序,因为SNMP服务方只能使用161这一个端口号。这个端口号是人们约定好的,它只能为SNMP服务方利用。当某台计算机的客户请求SNMP服务时,它就把请求发到备有这一服务的目标计算机的161号UDP端口。81中科院研究生院授课教师:鲁士文200.5Internet传输协议UDP与传输控制协议T6.2.5Internet传输协议UDPUDP保留应用程序定义的报文边界,它从不把两个应用报文组合在一起,也不把单个应用报文划分成几个部分。也就是说,当应用程序把一块数据交给UDP发送时,这块数据将作为独立的的单元到达对方的应用程序。例如,如果应用程序把5个报文交给本地UDP端口发送,那么接收方的应用程序就需要从接收方的UDP端口读5次,而且接收方收到的每个报文的大小都和发出的大小完全一样。

82中科院研究生院授课教师:鲁士文200.5Internet传输协议UDPUDP保留应用程6.2.5Internet传输协议UDP一个TCP/IP主机的UDP模块必须具备产生和验证UDP检验和的功能。一个应用程序使用服务时可以选择是否产生UDP检验和,缺省值是需要产生。当IP模块收到一个IP分组并且发现该分组的头部类型(type)段标明为UDP时,它就将其中的UDP数据报传给UDP模块。UDP模块接收由IP模块传来的UDP数据报,并检查UDP检验和。如果检验和是0,就表明发送方没有计算UDP检验和。如果检验和非0,并且检证的结果不正确,则UDP模块必须抛弃该数据报。如果检验和有效(或0),UDP模块就检查该数据报的目标端口号,如果其端口号与本地的一个应用程序被指定的端口号符合,就将数据报中的应用报文放入队列,让那个应用程序来读取。83中科院研究生院授课教师:鲁士文200.5Internet传输协议UDP一个TCP/IP6.2.5Internet传输协议UDP对UDP来说,不具备诸如接收保证和避免重复等有序投递功能,故对那些要求数据必须按顺序到达的应用程序,最好采用TCP;或者用户自己想办法解决顺序到达的问题。例如,TFTP(TrivialFileTransferProtocol)作为文件传送协议之一就在应用层做这方面的工作。UDP数据报的格式如图6-9所示。下面对各个域分别加以说明。

84中科院研究生院授课教师:鲁士文200.5Internet传输协议UDP对UDP来说,不6.2.5Internet传输协议UDP85中科院研究生院授课教师:鲁士文200.5Internet传输协议UDP85中科院研究生6.2.5Internet传输协议UDP(1)UDP源端口号发送端端口号是任选项。该端口号若被指定,当接收进程返回数据时,这些应用数据就不会被别人得到。不指定这个域时,将其值设置为0。(2)UDP目标端口号该端口号用以在等待数据报的进程之间进行多路分离,也就是具有作为接收主机内与特定应用进程相关联的地址的意义。(3)UDP报文长度表示数据报头及其后面数据的总长度。最小值是8字节,即UDP数据报头长度。86中科院研究生院授课教师:鲁士文200.5Internet传输协议UDP(1)UDP源6.2.5Internet传输协议UDP(4)检验和根据IP分组头中的信息作出伪数据报头,跟UDP数据报头和数据一起进行16位的检验和计算。对数据为奇数字节的情况,增加全0字节使其成为偶数字节后再行计算。检验和计算的方法与IP中所使用的相同。当检验和的结果为0时,将它的所有位都置成1(对1求补)。当检验和域的所有位都是0时,对接收方而言就不再具有检验和的意义,这在debug和高层协议认为检验和没有问题的情况下使用。伪报头假想是放在UDP报头前边的,其格式如图6-10所示(生成时间段置0)。

87中科院研究生院授课教师:鲁士文200.5Internet传输协议UDP(4)检验和876.2.5Internet传输协议UDP88中科院研究生院授课教师:鲁士文200.5Internet传输协议UDP88中科院研究生6.2.5Internet传输协议UDP使用伪报头的目的在于验证UDP数据报是否已到达它的正确报宿。领悟这个伪报头的关键是,要认识到正确报宿的组成包括互连网中一个唯一的计算机和这个计算机上唯一的协议端口。UDP报头本身只是确定了协议端口的编号。因而,为验证报宿,发送计算机的UDP要计算一个检验和,这个检验和包括了报宿主机的IP地址,也包括了UDP数据报。在最终目的地,UDP软件使用从运载UDP报文的IP分组头中得到的目标IP地址验证检验和。如果检验和一致,那么数据报确实到达所希望的报宿主机和这个主机内的正确协议口。89中科院研究生院授课教师:鲁士文200.5Internet传输协议UDP使用伪报头的目的6.2.5Internet传输协议UDP在伪报头内标有发送方IP地址和接收方IP地址的段内,分别包含报源

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论