码迷,mamicode.com
首页 > 其他好文 > 详细

UDP协议总结

时间:2014-05-09 02:46:30      阅读:490      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ext   color   http   c   

说明:本文仅供学习交流,转载请标明出处,欢迎转载!

本文是如下参考文献的相关总结:

[1] 《TCP/IP详解 卷1:协议》

[2] 《TCP/IP协议族 第4版》

[3] 《计算机网络 第5版》

       用户数据报协议的英文缩写为UDP,UDP是一种无连接不可靠运输层协议,UDP没有流量控制和拥塞控制,除了检验和之外,没有其他的差错控制

       I.UDP数据报

       bubuko.com,布布扣

       bubuko.com,布布扣

     UDP数据报由UDP首部和数据组成,其中UDP首部包含8B源端口号和目的端口号用于标识源进程和目的进程总长度指的是首部和数据部分的总长度检验和用于检测UDP用户数据报在传输过程中是否发生错误。UDP接收上层应用层的报文后,加上UDP首部后,原封不动地交给IP层,所以UDP一次交付一个完整的报文,至于分片,则由IP层来控制,所以应用层必须交付给UDP合适大小的报文

       II.UDP复用与分用

       UDP复用:在发送方,不同的应用层进程都可以使用UDP协议传送数据。(多对一

       UDP分用:在接收方,传输层在去掉UDP首部后能够将这些数据正确交付到目的应用层进程。(一对多

       NOTICE:源点的运输层执行的是复用,终点的运输层执行的是分用

       III.端口号

       如果说IP地址可以标识主机,那么端口号则可以标识主机上的进程,UDP套接字=(IP地址:端口号)

       bubuko.com,布布扣

       知名端口号:由ICANN指派和控制,这些端口号指派给了TCP/IP最重要的一些应用程序。例如:FTP:21,Telnet:23,SMTP:25,DNS:53,TFTP:69,HTTP:80,SNMP:161,SNMP(trap):162

       注册端口号:ICANN既不指派也不控制,但这些端口号必须在ICANN注册以防止重复。

       临时端口号:在客户进程运行时才动态选择。当服务器进程收到客户进程的报文后,根据该端口号,把数据发送给客户进程。通信结束后,该客户端口号消失,以便其他客户进程使用。

       IV.UDP检验和

       我们知道,IP检验和只是IP数据报的首部参与运算,而TCP,UDP,ICMP,IGMP,RIP等的首部和数据部分都参与检验和运算,而对于传输层的UDP而言,同样是首部和数据部分均参与检验和的运算,但是UDP的检验和运算有如下两个特点:

       1.若UDP数据报的数据部分是奇数个字节,则需要采用零比特填充法填充好,即在数据部分的最后面填充若干个0,使得方便16为检验和的计算,这些0仅供检验,不会参与传送。

       2.在检验和时,要在UDP数据报之前增加12B的伪首部,伪首部参与检验和运算。伪首部既不向下传送,也不向上提交,供检验。

       bubuko.com,布布扣

        伪首部之所以“伪”,是因为它并不是UDP首部的一部分,只是在检验和时,临时添加到UDP用户数据报前面,得到一个临时的UDP用户数据报。 

       notice:

        1). 如果是TCP,则协议字段的值是6;

        2).伪首部是IP首部的一部分,包含32位源IP地址、32位目的IP地址、8位协议,16位UDP长度。伪首部的作用在于让UDP检查数据是否到达目的地,具体而言是:a.通过目的IP地址来判断该数据报是不是发送给本机。b.协议字段,UDP可以判断IP有没有把不应该传给UDP(如需传给TCP)的数据传给UDP;

        3) 在求解检验和的过程中,先将UDP数据报划分成许多16位的序列,然后将各位取反后求和(相当于异或运算,因为采用不进位机制),并将求和后的结果再取反,存入检验和字段中,所以整个过程出现两次取反的现象。

        4)UDP的检验和是可选的,而TCP的检验和是必需的。

        5)UDP检验和是一个端到端的检验和。它由发送端计算,然后由接收端验证,其目的是为了发现UDP首部和数据部分在发送端过程中是否发生任何改变。

       6)根据3),如果第一次取反后求和的结果为0,则再取反后结果为全1,,则存入检验和字段的值为全1;如果传送的检验和为0,说明发送端没有计算检验和,因为在计算前该字段的值被填入全0

       V.UDP的应用

       UDP相对TCP而言,最大的优点是数据报短,传输速率快,适合于对数据传输完整性要求不是高的服务的实时性服务。具体应用如下:(就是针对应用层协议)

       1)UDP适用于只要求简单的请求-响应通信的进程:DNS注意:HTTP使用的是TCP,FTP使用的是TCP,因为FTP需要传输大量的数据));

       2)UDP适用于本身具有内部流量控制和差错控制机制的进程:TFTP;

       3)UDP适用于管理进程:SNMP,BOOTP,DHCP,NFS

       4)UDP适用于多播。

       5)UDP适用于路由更新:RIP

       6)UDP适用于实时应用:IP电话、流式多媒体通信(注意:SMTP使用的是TCP,因为邮件强调的是数据的完整性,而非实时性)

       点点滴滴:

        1.UDP是一种面向无连接的不可靠运输层协议。“不可靠”是因为UDP把数据发送出去,并不保证它们能到达目的地。在传输数据之前不需要建立连接,接收方在收到UDP报文后,不需要提供确认机制;如果数据发生错误或丢失,UDP不提供超时重传机制,UDP使用尽最大努力交付

        2.UDP是面向报文的,发送方的UDP对应用程序(位于应用层)交下来的报文,在添加首部后就向下交付给IP层。

        3.UDP不提供拥塞控制和流量控制,仅提供校验和的差错检验。(流量控制是针对两个端点,而拥塞控制是针对真个网络,是一个综合性的控制)

        4.UDP支持一对一、一对多、多对一、多对多的交互通信。

        5.UDP的校验和计算过程中加入了伪首部和0填充位。


UDP协议总结,布布扣,bubuko.com

UDP协议总结

标签:style   blog   ext   color   http   c   

原文地址:http://blog.csdn.net/jxh_123/article/details/25306059

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!