03网络协议第三讲(网络协议分析及编程-用TCP-IP进行网际互联-课件).ppt
文本预览下载声明
传输层协议分析 第10章 UDP:用户数据报 10.1 引言 用户数据报协议提供应用程序之间的无连接通信。它允许某个机器上的一个程序向其他机器上的一个或多个程序发送数据报并接收响应信息。本章讨论UDP的实现过程,主要集中讲述UDP如何利用协议端口号来识别通信的端点。它讨论了两种解决协议端口号绑定问题的方法,并给出其中一种方法的实现细节。最后,本章描述了UDP伪首部,并详述了计算UDP校验和的过程是如何使用伪首部的。 10.2 UDP端口和多路分解处理 理论上,使用UDP的通信非常简单。协议标准规定应用程序使用一个称为协议端口号的抽象模型来识别通信的端点。当机器A中的应用程序与机器B中的一个应用程序通信时,这两个应用程序都必须从自己的本地操作系统中获取一个UDP端口号。两端在通信时都必须使用协议端口号。使用协议端口号(而不是系统提供的标识符,如进程、任务或作业标识符)的优点是保持了协议与特定系统之间的独立性,并允许不同类型的计算机系统应用程序之间互相通信。 虽然UDP协议端口号的设计思想看起来直截了当,但在实现时有两种基本的方法。两种方法都与协议标准一致,但它们为应用程序提供的接口稍有不同。下一节将描述客户和服务器如何使用UDP,并说明了两种方法是如何互相兼容的。 10.2.1 成对通信使用的端口 如图所示,有些应用程序使用UDP来进行成对通信。要做到这一点,两个应用程序各自从本地操作系统中获取UDP端口号,并且他们利用这对端口号交换UDP报文。在这种情况下,应用程序和协议软件之间的理想的接口,是将具体的地址操作从发送和接收数据报的操作中分离出来。这样,接口允许一个应用程序一次性指定本地的和远程的协议端口号,然后多次发送和接收数据报。当然,在指定另一个机器上的协议端口号时,应用程序必须同时指定该机器的IP地址。一旦协议端口号被指定,应用程序就能发送和接收任意多的数据报。 10.2.2 多对一通信使用的端口 绝大多数应用程序使用客户—服务器模式的交互形式,如图所示。单一的服务器应用程序接收来自多个客户的UDP报文。当服务器启动时,它不会指定另一个机器上的一个IP地址或UDP端口,因为它必须允许任意一个机器向其发送报文。事实上,它仅仅指定一个本地UDP端口号。由客户送往服务器的每个报文必须给出客户的UDP端口号及服务器的UDP端口号。服务器从输入的UDP数据报中提取源端口号,并在它发送应答报文时将该端口号作为目的端口号。当然服务器还必须在UDP数据报到达时获取客户的IP地址,这样在发送应答报文时,它也能够指定IP地址。 10.2.2 多对一通信使用的端口 因为服务器与多个客户通信,所以不能设置一个永久的IP目的地址或永久的UDP协议端口号。事实上,用于多对一通信的接口必须允许服务器在每次发送数据报时给出有关目的站的信息。这样,与成对通信使用的理想型接口不同,服务器使用的理想型接口并没有将地址标识和数据报的传送分开。 10.2.3 操作模式 为了与成对通信和多对一通信方式都兼容,大多数UDP接口利用参数来控制交互的模式。一种典型的采用成对交互作用的模式是客户。它允许应用程序一次性指定本地和对方的协议端口号,然后发送及接收UDP数据报,并且无需每次都给出端口号。另一种模式包含了服务器。它允许服务器仅仅指定本地端口,然后就可接收来自任意客户的数据报。这种系统可能要求一个应用程序明确地说明交互模式,也可能从应用程序给出的端口绑定中推断出其模式。 10.2.4 多路分解处理中的细节问题 除了要考虑交互模式之外,UDP实现方案还要提供对协议端口多路分解处理的解释。这里有两种可能性: ●多路分解时仅使用目的站的协议端口号。 ●多路分解时同时使用源站和目的站的协议端口号。 不同的选择会对应用程序与协议软件之间的交互作用产生微妙的影响。要理解其中详情,考虑如图所示的两种多路分解形式。 10.2.4 多路分解处理中的细节问题 10.2.4 多路分解处理中的细节问题 10.2.4 多路分解处理中的细节问题 在第一种多路分解方式下,系统将发向特定目的站协议端口的所有数据报都送到同一队列中。在第二种多路分解方式下,系统在为数据报多路分解时要利用源地址(源站协议端口号和源IP地址)。因此在第二种方式下,每个队列中的所有数据报都来自特定的某个源站。 这两种方式各有利弊。例如,在第一种方式下,服务器发挥的作用很小,因为应用程序接收了所有发往给定协议端口号的数据报,与它
显示全部