计算机网络课程实验报告
《用户数据报协议(UDP)》
一、实验内容
IPV4协议实验六:用户数据报协议UDP
二、实验原理
. 进程到进程的通信
    在学习UDP协议之前,首先应该了解主机到主机的通信和进程到进程的通信,以及这两种通信之间的区别。
    IP协议负责主机到主机的通信。作为一个网络层协议,IP协议只能把报文交付给目的主机。这是一种不完整的交付,因为这个报文还没有送交到正确的进程。像UDP这样的传输层协议负责进程到进程的通信。UDP协议负责把报文交付到正确的进程。下图描绘了IP协议和UDP协议的作用范围。
6-1  UDPIP的区别
1.  端口号
    在网络中,主机是用IP地址来标识的。而要标识主机中的进程,就需要第二个标识符,这就是端口号。在TCP/IP协议族中,端口号是在065535之间的整数。
    在客户/服务器模型中,客户程序使用端口号标识自己,这种端口号叫做短暂端口号,短暂的意思是生存时间比较短。一般把短暂端口取为大于1023的数,这样可以保证客户程序工作得比较正常。
    服务器进程也必须用一个端口号标识自己。但是这个端口号不能随机选取。如果服务器随
机选取端口号,那么客户端在想连接到这个服务器并使用其服务的时候就会因为不知道这个端口号而无法连接。TCP/IP协议族采用熟知端口号的办法解决这个问题。每一个客户进程都必须知道相应的服务器进程熟知端口号。
    UDP的熟知端口号如下表所示:
6-1  UDP的熟知端口号
   在一个IP数据包中,目的IP地址和端口号起着不同的寻址作用。目的IP地址定义了在世界范围内惟一的一台主机。当主机被选定后,端口号定义了在这台主机上运行的多个进程中的一个。
2.  套接字地址
    一个IP地址与一个端口号结合起来就叫做一个套接字地址。客户套接字地址惟一地定义了客户进程,而服务器套接字地址惟一地定义了服务器进程。
    要使用UDP的服务,就需要一对套接字地址:客户套接字地址和服务器套接字地址。客户套接字地址指定了客户端的IP地址和客户进程,服务器套接字地址指定了服务器的IP地址和服务器进程。
. 面向连接的服务与面向无连接的服务
    从通信的角度来看,在OSI参考模型中,下层能向上层提供两种不同形式的服务:面向连接的服务和面向无连接的服务。
1.  面向连接的服务
    所谓连接,就是两个对等实体为进行数据通信而进行的一种结合。面向连接服务在进行数据交换前,先建立连接。当数据传输结束后,应释放这个连接。因此,采用面向连接的服务
进行数据传送要经历三个阶段:
    1)建立连接阶段:在有关的服务原语以及协议数据单元中,必须给出源用户和目的用户的完整地址。同时可以协商服务质量和其它一些选项。
    2)数据交换阶段:在这个阶段,每个报文中不必包含完整的源用户和目的用户的完整地址,而是使用一个连接标识符来代替。由于连接标识符相对于地址信息要短得多,因此使控制信息在报文中所占的比重相对减小,从而可减小系统的额外开销,提高信道的有效利用率。另外,报文的发送和接收都是按固定顺序的,即发送方先发送的报文,在接受方先收到。
    进程间通信实验报告心得3)释放连接阶段:通过相应的服务原语完成释放操作。
    从面向连接服务的三个阶段来看,连接就像一个管道,发送端在其一端依次发送报文,接收者依次在其另一端按同样的顺序接收报文。这种连接又称虚拟电路。它可以避免报文的丢失、重复和乱序。
    若两个用户经常需要通信,则可以建立永久虚电路。这样可以免除每次通信时建立连接和释放连接这两个阶段。这点与电话网中的专线很相似。
2.  面向无连接的服务
    在面向无连接服务的情况下,两个实体之间的通信不必事先建立一个连接。相对于面向连接的服务,面向无连接服务灵活方便且快速。但它不能防止报文的丢失、重复和乱序。由于它的每个报文必须包括完整的源地址的目的地址,因此开销较大。
    面向无连接服务主要有三种类型:
    1)数据报:它的特点是发完报文就结束,而对方不做任何响应。数据报的服务简单,额外开销少,但可靠性差,它比较适合于数据具有很大的冗余度以及要求有较高的实时性的通信场合。
    2)证实交付:又称可靠的数据报。这种服务对每一个报文产生一个证实给发送方,不过这种证实不是来自对应方用户,而是来自提供服务的层。这种证实只能保证报文已经发给目的站了,而不能保证对应方用户正确地接收到报文。
    3)请求回答:这种类型服务是接收端用户每收到一个报文,即向发送端用户发送一个应答报文。但是双方发送的报文都有可能丢失。如果接收端发现报文有错误,则回送一个表示有错误的报文。