TCP/IP第四层协议之UDP

toc

UDP协议

UDP是一个简单的面向数据报的传输层协议,进程的每次输出操作都会产生一个UDP数据报。UDP协议是造成IP分片的主要协议。
UDP不提供可靠性,它只是将应用程序传下来的数据加上UDP首部通过IP层发送出去,并不保证它们能到达目的地。
使用UDP协议传输时,程序员应该关心UDP数据报的长度,尽量避免过长(超过MTU)而导致IP数据报被分片,分片时会导致仅仅第一个IP分片会有UDP的首部,这会可能导致一些问题。
当发送端不停的发送数据而接收端不接收时,溢出UDP输入队列的数据包将会被丢弃,并且发送端不会收到任何数据报被丢弃的通知信息

UDP典型的应用场景

  • DNS查询---没有三次握手过程,速度快。可以多个DNS同时查询
  • 语音视频流---UDP支持广播和组播。对于语音视频流来说,可以存在丢包。
  • 物联网---维护UDP协议相比维护TCP协议来说,消耗的资源更少。UDP实时性更高。

协议格式

udp

  • 16位源端口号:发送进程端口号
  • 16位目标端口号:接收进程端口号
  • 16位UDP长度:包含UDP首部和数据在内的字节长度,最大为65535字节,最小为UDP首部的8字节。
  • 16位UDP校验和:同时覆盖UDP首部和数据的校验和,由发端计算和存储,并由收端进行验证。

伪首部

UDP数据报与TCP数据报都有一个12字节的伪首部(源IP与目的IP从IP首部中提取)

通过伪首部的校验,UDP可以确定该数据报是不是发给本机的,通过伪首部协议字段,UDP可以确认有没有误传协议。





posted @ 2020-11-17 15:34  無雙  阅读(281)  评论(0编辑  收藏  举报