UDP用户数据报协议

最初的TCP/IP协议族为运输层制定了俩个协议。UDP和TCP。我们先讨论UDP:

用户数据报协议:位于网络层和应用层之间,提供介于应用程序和网络功能之间的服务。

运输层协议通常有几种责任:1、创建进程到进程的通信,UDP采用端口号来完成这种通信。

2、在运输层提供控制机制,UDP在一个非常低的水平上完成这个功能。UDP没有流量限制机制,在收到分组时候也没有确认。但是UDP提供了某种程度的差错控制。如果UDP在收到的分组中检测出有差错,他就悄悄的丢弃这个分组。

UDP是一种无连接,不可靠的运输协议。他除了在IP服务基础上增加了进程到进程的通信,使之不再是主机到主机的通信之外,就再没有什么了。

UDP是一个非常简单的协议,实用的额外开销很小。若是某个进程想要发送一个很短的报文并且不关心他的可靠性,就可以使用DUP。使用UDP发送端报文的时候,在发送方和接收方之间的交互要比使用TCP少得多!

应用层:SMTP,FTP,TFTP,DNS,SNMP,DHCP

运输层:SCTP,TCP,UDP;

网络岑:IGMP,ICMP,IP,ARP;

数据链路层:底层局域网或广域网技术

物理层:底层局域网或广域网技术

二、用户数据报:UDP的分组。有8个字节的固定首部。源端口号:这是源主机上运行的进程所使用的的端口号。目的端口号:运行在目的主机上的进程使用的端口号。若果目的主机是服务器,则在大多数情况下这个端口号是熟知端口号。若目的主机是客户端,则大多数情况下这个端口号是一个临时端口号。此时,服务器会把它收到的请求分组中的临时端口号复制过来。

总长度:UDP长度=  IP长度-IP首部长度

  但是,UDP的设计者认为,让终点UDP直接从UDP用户数据报中提供的信息来计算数据长度,要比请求IP软件来提供这一信息效率更加高。我们应当记得,当IP软件吧UDP用户数据报交付给UDP层时候,他已经剥去了IP首部。

三、UDP服务:

1、进程到进程的通信:UDP使用套接字(ip地址和端口号的绑定)

(1)无连接服务:UDP提供无连接服务,这就意味着由UDP发送的每一个用户数据根部是独立的数据包。不同的用户数据包之间没有任何关系,哪怕他们是来自一个相同的元进程并且趋旺相同的目的程序。用户数据包没有编号。此外,也没有像TCP那样的链接建立和链接终止过程。这就表示每一个用户数据包可以走不同的路径。

  无连接导致的一个结果就是:使用UDP的进程不能发送数据流到UDP,也不能期望UDP把这个数据流分割成许多个相互关联的用户数据报。只有那些发送短报文的进程才应当适用UDP,也就是报文的长度要小于65507个字节。

(2)流量控制:

UDP是以一个非常简单的协议。他没有流量控制机制,因此也没有窗口机制。接收方可能会因为入口的报文太多而溢出。缺少流量控制就意味着必要时应当由UDP的进程来提供这个服务。

2、差错控制:检验和

3、拥塞控制:因为UDP是无连接服务协议,所以他不提供拥塞控制。UDP假设发送的分组不打,并且分散发送,因为不可能早晨网络的拥塞。但如今,随着UDP被用于音频和视频的实时传输,这种假设可能不成立。

4、拆封解封:

报文:从一个进程发送到另一个进程,UDP就要对报文进行封装和解封。

封装:当进程有报文要通过UDP发送时候,他就把这个报文连同一对套接字地址以及数据的长度传递给UDP。UDP收到数据后添加首部,然后UDP把这个用户数据报连同套接字地址一起传递给IP,IP再加上自己的首部,在协议字段使用值17,指出该数据是从UDP协议来的。然后再把这个IP数据包传递给数据链路层。数据链路层收到IP数据报后,加上自己的首部(可能还有尾部),再传递给物理层。物理层是吧比特码编码成电信号或光信号并将其发送到远程的机器。

解封:当这个报文到达目的主机之后,物理层首先将信号解码变为比特,传递给数据链路层。数据链路层利用首部检查数据。若无差错,就剥去首部,尾部,并把数据报传递给IP。IP软件进行它自己的检查。若无差错,就剥去首部,把用户数据报连同发送方和结束方的IP地址一起传递给UDP。UDP使用检验和对整个用户数据包进行检查。若无差错,剥去首部,把应用数据连同发送方的套接字地址一起传递给接收进程。之所以要把发送方的套接字地址也传递给进程是因为有可能需要对收到的报文进行相应。

5、排队:哪怕一个进程希望和多个进程通信,他也只能得到一个端口号,并且最终只有一个出和一个入得队列。在大多数情况下,有客户打开的队列有临时端口号标志。只要进程运行,这些队列就能起作用。当进程终止时候,队列被取消。

6、复用和分用:主机只有一个UDP,但可能会有多个进程希望使用UDP服务。处理这种情况,UDP可以进行复用和分用。

复用:多对一

分用:一对多UDP接收来自IP的用户数据包,UDP根据端口号把每一个报文交付到适当的进程。

7、UDP的应用:无连接服务分组之间都是相对独立的。面向连接产生了更多的时延迟。

猜你喜欢

转载自www.cnblogs.com/yjds/p/8759098.html