《计算机网络与通信》课件-项目11 了解TCP、UDP协议_第1页
《计算机网络与通信》课件-项目11 了解TCP、UDP协议_第2页
《计算机网络与通信》课件-项目11 了解TCP、UDP协议_第3页
《计算机网络与通信》课件-项目11 了解TCP、UDP协议_第4页
《计算机网络与通信》课件-项目11 了解TCP、UDP协议_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

学习目标知识目标:UDP和TCP协议知识技能目标:能够分辨应用程序使用的是那个传输层协议素质目标:工程素质概述在DoD模型中,传输层位于网络层与应用层之间,主要的功能是负责应用程序之间的通讯。连接端口管理、流量控制、错误处理与数据重发都是传输层的工作。本章将介绍TCP/IP协议组合在传输层的两个协议:UDP与TCP,借此说明传输层的各项功能。11.1UDP信息包的结构和特性

11.1.1UDP信息包的结构UDP信息包是由UDP报头和UDP数据两部分所组成:UDP报头的结构11.1.2UDPUDP(UserDatagramProtocol)是一个相当常用的协议,仅提供连接端口(Port)处理的功能。UDP具有以下特性:1.UDP报头可记录信息包来源端与目的端的连接端口信息,让信息包能够正确地送达目的端的应用程序。2.无连接(Connectionless)的传送特性。UDP与IP虽然是在不同层运作,但都是以非连接式的方式来传送信息包。出于此特性,使得UDP的传送过程比较简单,但是相对地可靠性较差,在传送过程中若发生问题,UDP并不具有确认、重送等机制,而是必须靠上层(应用层)的协议来处理这些问题。使用UDP的应用程序,通常是基于以下的考虑:1.为了要降低对计算机资源的需求。以DNS服务为例,由于可能要面对大量客户端的询问,若是使用TCP可能会耗费许多计算机资源,因此使用资源需求较低的UDP。2.应用程序本身已提供数据完整性的检查机制,因此毋须依赖传输层的协议来执行此工作。此外,若应用程序传输的并非关键性的数据,例如:路由器会周期性地交换路由信息,若这次传送失败,下次仍有机会将信息重送。在这种情况下,也会使用UDP作为传输层的协议。3.要使用多点传送(Multicast)或广播传送(Broadcast)等一对多的传送方式时,必须使用UDP。这是因为使用面向连接(Connection-Oriented)传送方式的TCP,仅限于一对一的传送方式。11.1.3连接端口

UDP最重要的功能是管理连接端口。从先前介绍IP的章节中,我们已经知道IP的功能是要将信息包正确地传送至目的地。不过,当IP信息包送达目的地时,接下来便立即面临一个问题,计算机上可能同时执行多个应用程序,例如:用户同时打开IntemetExplorer与OutlookExpress,那么收到的IP信息包应该送至哪一个应用程序呢?UDP便是利用连接端口来解决上述的问题。连接端口的英文为Port,但它并非像是计算机并行口或串行口等实体的接头,而是属于一种逻辑上的概念。每一部使用TCP/IP的计算机,都会有许多连接端口,并使用编号以区分。应用程序若通过TCP/IP存取数据,就必须独占一个连接端口编号。因此,当主机收到IP信息包后,可以凭此连接端口号,判断要将信息包送给哪一个应用程序来处理。连接端口号与IP地址两者合起来称为SocketAddress(简称为Socket),可用来定义IP信息包最后送达的终点,亦即目的地应用程序。以现实生活为例,IP地址就如同某栋建筑物的地址,而连接端口号就如同建筑物内的房间或窗口的号码。假设您要去邮政总局联系业务,若只知道其地址为“雨花区韶山南路12号”,您只能找到该栋大楼。但是,邮政总局里面可能有许多个窗口,因此,只知道地址是不够的,您还必须知道要去哪个窗口办理。如果您能事先知道“雨花区韶山南路12号第8号窗口”这样的信息,便能迅速正确地找到要去的部门。IP地址与连接端口号也是同样的道理。一部计算机或许只有一个IP地址,但可能同时执行许多个应用程序。应用程序彼此之间以连接端口号来区分。当计算机收到IP信息包时,便可根据其连接端口号(记录在传输层协议的报头中)判断要交由哪个应用程序来处理。当然,每个信息包除了要记录目的端的连接端口号外,也会记录来源端的连接端口号,以便相互传递信息包。所有与连接端口相关的工作,都是由传输层的协议来负责。连接端口号为16Bits长度的数字,可从0至65535。按照IANA(IntemetAssignedNumbersAuthority)的规定,0-1023的连接端口号称为“Well-Known”(知名的)连接端口,主要给提供服务的应用程序使用。凡是在IANA登记有档案的应用程序,都会分配到一个介于0-1023之间的固定连接端口号。例如:DNS为53,代表DNS服务都应使用53的连接端口号。至于1024-65535的连接端口号则称为“Registered/Dynamic”(动态)连接端口,由客户端自行使用。例如:客户端使用IntemetExplorer连上网站时,系统会随机分配一个连接端口号供InternetExplore使用。表11-1常见的Well-Known连接端口协议连接端口号应用程序UDP53DNSUDP67BOOTPClientUDP68BOOTPServerUDP520RIPTCP19NNTPTCP20FTPDataTCP21FTPControlTCP23TelnetTCP25SMTPTCP80HTTP为什么服务器应用程序必须使用Well-Known连接端口,而客户端应用程序可使用Registered/Dynamic连接端口呢?这是因为在—般网络的应用中,两部计算机若要互传信息包,一开始都是由客户端主动送出信息包给服务器。换言之客户端必须在送出信息包前便知道服务器应用程序的连接端口号。因此服务器应用程序所使用的连接端口号势必遵循—套大家公认的规则,例如:Telnet服务应该固定使用编号为23的连接端口,Web服务应该固定使用编号为80的连接端口等。这些规则即形成了Well-Known的连接端口。至于客户端应用程序的连接端口号,由于服务器收到来自客户端的信息包后,从报头中便可得知客户端应用程序的连接端口号。因此,客户端应用程序不必像服务器样必须硬性规定连接端口号。11.2TCP报头及TCP的特性

11.2.1TCP信息包的结构TCP报头结构TCP报头结构如图11.4所示。其中主要字段的含义先简单例在下面,以后用到时再详细介绍其用途。

源端口:来源连接端口号,记录来源端主机(A)上层应用程序所用的TCP连接端口号。

目的端口:目的连接端口号,记录目的端主机(B)上层应用程序所用的TCP连接端口号。

顺序号:记录TCP数据的第1Byte在A→B传输通道字节流(BytesStream)中的位置。单位为Byte。

确认号:也称为响应序号,记录A→B传输通道中,已收到连续性数据在A→BBytesStream中的位置,单位为Byte。

标志位可用来通知对方报头中记录了哪些有用的信息。以下为TCP报头中常用的标志位。SYN:Synchronize(同步),代表序号字段记载的是初始序号ISN,换言之,此信息包为连接建立时第1或第2步骤的信息包。ACK:Acknowledge(响应),代表响应序号字段包含了确认的信息。FIN:Finish(完成),代表A→B已传送完毕。只有在中止连线的第2或第4步骤,才会设置此标志位。窗口大小:设置来源端的发送窗口的大小11.2.2TCP的特性TCP为传输层的协议,与UDP同样地具备处理连接端口的功能。除了连接端口功能外,更重要的是TCP提供了一种“可靠”的传送机制。所谓“可靠”的传输方式,大致上可以归纳出TCP具有以下几种特性:1.数据确认与重送当TCP来源端在传送数据时,通过与目的端的相互沟通,可以确认目的端已收到送出的数据。如果目的端未收到某一部分数据,来源端便可用重送的机制,重新传送该数据。2.流量控制由于软、硬件上的差异,每一部计算机处理数据的速度各不相同,因此TCP具有流量控制的功能,能够视情况调整数据传输的速度,尽量减少数据流失的状况。3.面向连接TCP为面向连接(Connection-Oriented)的通讯协议。所谓“面向连接”,是指应用程序利用TCP传输数据时,首先必须建立TCP连接,彼此协调必要的参数(用于上述数据重发与确认、流量控制等功能),然后以连接为基础来传送数据。11.3TCP传送机制

11.3.1确认与重发以下我们就利用一个简单的模型,解释如何以“确认与重发”的机制,可靠地传送信息包。假设A要传送信息包给B,通过下列步骤,A便可确认B已收到信息包:(1)A首先传送Packet1信息包给B,然后开始计时,并等待B的响应。(2)B收到Packet1信息包后,传送ACK1信息包给A。ACK1信息包的内容为“我已经收到Packet1信息包了”。(3)A如果在预定的时间内收到ACK1信息包,便可确认Packet1正常地到达目的地。接着即可传送Packet2信息包给B,然后开始计时,并等待B的响应。(4)B收到Packet2信息包后,传送ACK2信息包给A。ACK2信息包的内容为“我已经收到Packet2信息包了”(如图11.5)。至于在信息包传送的过程中若出现错误,例如:Packet2在传送途中失踪了,此时B便不会发出ACK2给A。A若在预定的时间内没有收到ACK2,即判定B未收到Packet2,因此便重新传送Packet2给B(见图11.6)。11.3.2滑动窗口技术

上述信息包传送的过程,虽然具有确认与重送的功能,但在性能方面却造成很大的问题。这是因为当A每传送出去一个信息包后,便只能耐心等,—直等到收到对应的ACK信息包后,才能传送下—个信息包。如果真的操作出这样的协议,在整个传送过程中,绝大部分时间势必都浪费在等待ACK信息包。为了解决这个问题,就有聪明人想出一种叫做“SlidingWindow”的技术。读者可以想象用一张中间挖空的厚纸板,挖空的部分即是所谓的Window,我们可从挖空的部分去查看来源端传送出去的信息包。接着仍旧以A为来源端、B为目的端,说明如何利用SlidingWindow的机制来传送信息包。在传送—开始时,A的SlidingWindow应该如图11.7所示。图11.7开始传送时,A的滑动窗口A首先将Window内看得见的所有信息包送出,也就是送出Packetl、Packet2和Packet3信息包,然后分别对这些信息包计时,并等候B响应。B收到信息包后,会按信息包编号送回对应的ACK信息包给A。例如,B收到Packet1,便会送回ACK1给A,假设一切正常,A首先会收到ACK1,接着便执行以下操作:(1)将Packet1标示为“完成”(见图11.8)。(2)将SlidingWindows往右滑动一格(如图11.9)(3)将新进入SlidingWindow的Packet4(位于窗口的最右边)送出。接下来当A收到ACK2与ACK3信息包时,仍重复上述步骤。整个过程如图11.10所示。通过SlidingWindow方式,A可以迅速送出多个信息包。相对于每送出一个信息包便等待响应ACK的信息,SlidingWindow显然具有较佳的传输效率。这个问题在项目1中就分析过。11.3.3发送与接收窗口

先前说明SlidingWindow所举的例子中,仅A具有SlidingWindow。不过,实际上TCP的来源端与目的端会有各自的SlidingWindow。为了方便区分,我们将来源端的SlidingWindow称为SendWindow(发送窗口),目的端的SlidingWindow称为ReceiveWindow(接收窗口)。我们仍旧以A为来源端、B为目的端,在传送—开始时,B的接收窗口应该如图11.12所示。假设B是以Packet3、Packet1、Packet2的顺序收到信息包,则B的ReceiveWindow会进行如下的操作:(1).B最先收到Packet3,这时候只要将Packet3标示为“收到”。由丁Packet3并非Window最左边的信息包,因此不必送出ACK,也不用移动ReceiveWindow(见图11-13)。(2)收到Packet1,这时候B除了将Packet1标示为“收到”外,因为Packet1为window最左边的信息,因此必须送出ACK1,并将接收窗口向右移动一格(如图11-14)(3)收到Packet2,这时候B除了将Packet2示为“收到”外,将接收窗口向右移动。因为Packet2后面的Packet3已标示为“收到”,因此会送出ACK2与ACK3,然后将接收窗口向右移动2格(如图11-15)。下图11-16总结发送与接收窗口在上述步骤中的变化。在接收窗口中,当信息包从窗口的最左边出去后,即已送出对应的ACK后,接着就应该交给上层应用程序了。不过,为了提高性能,B不会将这些信息包逐一转交给上层应用程序,而是先将它们放在缓冲区,缓冲区满了后再一次送给上层应用程序。11.3.4窗口大小与流量控制

TCP具有一项重要的功能,便是流量控制(FlowControl),TCP能够视情况需要随时调整数据传送速度。流量控制主要是靠滑动窗口的大小(称为WindowSize)来调整:当WindowSize变小时,流量会变慢;当WindowSize变大时,流量会变快,但是相对地,较大的WindowSize会耗费较多的计算机资源。在决定WindowSize时,必须衡量上述两种因素,从中取得平衡点。例如当计算机因为配备不够好,或太忙时,会尽量使用较小的Window来传输信息。那么,WindowSize是由谁来决定的呢?答案是目的端。以先前的例子来说,B根据本身的状况决定ReceiveWindow大小,然后将此信息放在ACK信息包中通知A,A再将发送窗口调整为相同的大小。11.3.6

温馨提示

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

评论

0/150

提交评论