1. UDP特性
1.1. 字节流
1.2. 不可靠
1.3. 限定到端口,TCP端口和UDP端口是不同的端口系列,因此可以有相同的端口号。因此如果提供相同的协议,UDP和TCP一般用相同的端口号。
1.4. UDP校验和是可选的,TCP校验和则是必须的。
2. IP分片
2.1. 分片的原因是MTU,IP包通过链路层发送,因此最大包不能超过MTU。
2.2. 分片可以在发送主机上,也可以在中间路由器上。
2.3. 分片标识:是否还有分片字段,只有最后一个分片为0;片偏移字段;是否可以分片标志(可以用于发现路径MTU值,traceroute即用这个参数来发现路径MTU)。
2.4. 分片只要有一片丢失,则TCP就需要重传整个TCP包,因为如果分片发生在中间路由器,则主机将不知道分片是如何划分的。因此尽量不要分片。
2.5. 如果内核接收到的UDP数据长度比应用程序提供的缓冲区大,则一般会丢弃多余的数据。
3. UDP队列
UDP接收的数据会放入队列。由内核维护。
如果接收速度大于处理速度,则会发送ICMP源站抑制差错报文。
4. 端口有多个接收者
多个程序使用一个端口,如果是广播,则会给每个程序拷贝一份;如果是单播地址,则只给其中一个发送,具体给谁由实现决定。