UDP协议非常的简单,它几乎没在IP层上增加什么功能。下面来看看UDP协议的一些特点:
UDP是无连接的,尽最大努力的交付。发送数据之前不会提前通知,它只管发,你能不能接受到它是不管的。
UDP是面向报文的,应用程序给它什么内容,它在内容前封装一个首部就转发给下面的IP层。它是不管内容的多或少的,你给我什么,我就发什么。对于,它的无脑操作,那么应用进程就需要选择好合适的大小了。以免过大的数据包,在IP层被拆分,营销效率。
UDP首部简单,是固定的8字节。
基于UDP的上述特点,可以猜想出它的一些应用场景:
适用于网络比较好的环境,对丢包不敏感。
需要进行广播的场景,比如DHCP协议就需要使用广播,所以它使用的UDP协议。
传输效率高、速度快的场景,比如视频直播,一般视频直播丢失了几帧是无关痛痒的。
UDP首部格式
上述已经说过,UDP首部时固定的8字节。相对于TCP,它的首部开销是非常小的。
源端口号,占2字节
目的端口号,占2字节
首部长度,占2字节
校验和,占2字节
目的主机如果接受到了非法端口号的UDP数据包,就会丢弃该数据包,然后向源主机发送ICMP的差错报文“端口不可达”。traceroute命令就是利用该特点来获取两个主机之间的路径信息的。
UDP的校验方式有些特殊,它在校验时,需要零时在首部添加12字节的伪首部。伪首部是在只校验时用到,校验完成后就丢弃。另外,它和IP数据报只校验首部不同,它会校验首部以及数据部分。
相关推荐:《linux视频教程》
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。