UDP
协议端格式
UDP的特点:
UDP
传输的过程类似于寄信。
1、无连接
知道对端的
IP
和端口号就直接进行传输,不需要建立连接;
2、不可靠
没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,
UDP
协议层也不会给应用层返回任何错误信息;
3、面向数据报
应用层交给
UDP
多长的报文,
UDP
原样发送,既不会拆分,也不会合并;
用UDP
传输
100
个字节的数据:
如果发送端一次发送
100
个字节,那么接收端也必须一次接收
100
个字节;而不能循环接收
10
次,
每次接收
10
个字节
4、缓冲区
UDP
只有接收缓冲区,没有发送缓冲区:
UDP
没有真正意义上的
发送缓冲区
。发送的数据会直接交给内核,由内核将数据传给网络层协议
进行后续的传输动作;
UDP
具有接收缓冲区,但是这个接收缓冲区不能保证收到的
UDP
报的顺序和发送
UDP
报的顺序一
致;如果缓冲区满了,再到达的
UDP
数据就会被丢弃;
UDP
的
socket
既能读,也能写,这个概念叫做
全双工
5、大小受限
UDP
协议首部中有一个
16
位的最大长度。也就是说一个
UDP
能传输的数据最大长度是
64K
(包含
UDP
首
部)。
基于UDP的应用层协议
- NFS:网络文件系统。
- TFTP:简单文件传输协议。
- DHCP:动态主机配置协议。
- BOOTP:启动协议(用于无盘设备启动)。
- DNS:域名解析协议。
当然,也包括你自己写UDP程序时自定义的应用层协议。
TCP与UDP的区别
TCP和UDP的使用场景
TCP应用场景: 效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。例如:文件传输(准确高要求高、但是速度可以相对慢)、接受邮件、远程登录。
UDP应用场景: 效率要求相对高,对准确性要求相对低的场景。例如:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)。