一、UDP协议
UDP的特点:无连接,不可靠传输,面向数据报,全双工。
- 无连接,在传输数据的过程中,只需要知道对方的IP地址和端口号,不需要建立双发的连接才能传输数据。
- 不可靠传输,UDP只负责将数据传出去,至于对方有没有收到数据UDP是不理会的。
- 面向数据报,应用层给UDP多长的报文,UDP就发送多长的报文,既不会拆分也不会合并。
- 全双工,既能进行读,又能进行写。
什么是数据报?数据报_百度百科 (baidu.com)
数据报是通过网络传输的数据的基本单元,包含一个报头(header)和数据本身,其中报头描述了数据的目的地以及和其它数据之间的关系。数据报是完备的、独立的数据实体,该实体携带要从源计算机传递到目的计算机的信息,该信息不依赖以前在源计算机和目的计算机以及传输网络间交换。
UDP协议格式:
上述的UDP协议格式是比较常见的格式,更为简单直观的协议格式如下图:
- 16位源端口号:标记发送方的哪个进程发起的传输。
- 16位目的端口号:标记接收方的哪个进程要进行接收。
- UDP报文长度:UDP报文长度+UDP载荷长度。
- 校验和:发送方会生成一个校验和,由接收方对应的协议层解析,解析的结果不匹配,会直接将数据丢弃。
UDP报头一共8个字节,每个部分占两个字节,两个字节的范围是0-65535,64kb,也就是说一个UDP数据包最大只能传输64kb的数据。那么当应用层的数据报超过了64kb怎么办?有两种解决方法:
- 在应用层通过代码的方式将应用层数据报拆分成多个包,再通过多个多个UDP数据报进行传输;
- 使用TCP来传输数据。