UDP协议详解
2016-06-22 19:16
232 查看
1.UDP协议的作用
IP协议无法区别同一个主机系统上的多个应用程序。UDP采用端口标识同一主机上的不同应用程序。无法采取进程ID来标识不同应用程序的原因:
1)系统中应用程序的进程ID分配和销毁是动态的,发送方无法确定该应用程序的进程ID是什么
2)有时可能在一个进程中实现多个功能,进程就需要对数据包进行区分,以判断是用以实现哪个功能的,使用进程ID无法做到这点。
3)有时需要访问主机上的某个标准服务时,无须知道实现该服务的程序是哪个,也就无须知道该进程ID,只需要一个统一标识就可
综上,所以才用进程ID作为同一主机上的应用程序的标识不现实。
2.UDP协议的特点
UDP协议在IP协议上增加了复用、分用和差错检测功能。UDP的特点:A)是无连接的。相比于TCP协议,UDP协议在传送数据前不需要建立连接,当然也就没有释放连接。
B)是尽最大努力交付的。也就是说UDP协议无法保证数据能够准确的交付到目的主机。也不需要对接收到的UDP报文进行确认。
C)是面向报文的。也就是说UDP协议将应用层传输下来的数据封装在一个UDP包中,不进行拆分或合并。因此,运输层在收到对方的UDP包后,会去掉首部后,将数据原封不动的交给应用进程。
D)没有拥塞控制。因此UDP协议的发送速率不送网络的拥塞度影响。
E)UDP支持一对一、一对多、多对一和多对多的交互通信。
F)UDP的头部占用较小,只占用8个字节。
3.UDP报文格式
UDP协议分为首部字段和数据字段,其中首部字段只占用8个字节,分别是个占用两个字节的源端口、目的端口、长度和检验和。长度:UDP报文的整个大小,最小为8个字节(仅为首部)。
检验和:在进行检验和计算时,会添加一个伪首部一起进行运算。伪首部(占用12个字节)为:4 个字节的源IP地址、4个字节的目的IP地址、1个字节的0、一个字节的数字17、以及占用2个字节UDP长度。这个伪首部不是报文的真正首部,只是引入 为了计算校验和。相对于IP协议的只计算首部,UDP检验和会把首部和数据一起进行校验。接收端进行的校验和与UDP报文中的校验和相与,如果无差错应该 全为1。如果有误,则将报文丢弃或者发给应用层、并附上差错警告。
相关文章推荐
- BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化DP
- Maven 项目自动化打包部署(Jboss & Tomcat)
- NOIP2013模拟】DY引擎 题解+代码
- swift 使用Block-KVO 框架
- 翻转课堂心得
- 网络爬虫(2)--异常处理
- 快捷键
- 10-6-起泡排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
- 使用Universal Image Loader- Image can't be decoded
- Java IO流学习总结
- 工厂模式
- 二叉查找树
- TCP协议简介
- Js字符串与十六进制的相互转换 【转】
- 狗眼看芯片之排名
- 策略模式
- python学习之 字符串前'r'的用法
- BZOJ4620: [Wf2016]What Really Happened on Mars?
- Android studio 编译错误:Execution failed for task ':app:clean'
- 图的深度优先遍历