UDP
UDP协议
相关资料:
TCP-UDP 知乎
UDP协议只是再IP协议上做了最少的工作,增加的两个基本的功能:
- 复用和分用
- 差错检测
如果应用程序开发者选择UDP几乎应用程序直接与IP打交道。
UDP也存在很多明显的优点:
- 无需建立连接,不会引入连接时延,速度更快 DNS系统使用的就是UDP;
- UDP无连接状态可以支持更多的活动客户机 : 视频会议?
- 分组首部开销小 TCP20B UDP只有8B
- UDP没有拥塞控制,有些应用可以接受一些些数据丢失但是不能接受较大时延 可以接受UDP
适用于一些数据传输比较少的应用例如DNS SNMP
也用于多媒体应用 IP电话,实时会议,流媒体
UDP尽最大努力交付,但是不保证可靠交付,维护传输可靠性的工作需要用户再应用层完成
UDP是面向报文的,对应用层浇下来的报文,加上了UDP头部就交给UP层
原封不动的处理,因此UDP的报文不可分割
UDP报文的格式
UDP数据报包括两个部分 用户数据 + 8B UDP首部 -》 发送给IP层数据报中;
UDP首部由4个字段构成 每个长度都是2B :
- 源端口 ,需要对方回信的时候使用,不需要就全部是0
- 目的端口, 交付报表的时候使用
- UDP长度: 单位是Byte最小值是8 仅有首部。
- 校验和:检测UDP数据包传输过程中是否有错,有错误就丢弃,当前字段可选,不想要计算校验和的时候全部输入0
当UDP到达的时候,接收方讲解压好的UDP数据报根据目标端口库进行上交数据
如果找不到数据救丢失UDP报文并且由ICMP发送端口不可达的差错报文给发送方
UDP的校验
在计算首部校验的时候,给UDP数据报加入一个12B的伪首部
校验和就是按照临时UDP数据报计算,但是伪首部既不向下传送也不向上递交,仅仅为了计算;
伪首部增加了源IP和目的UP地址以及UDP长度。 不仅仅对数据源进行了检查还给IP的地址和目的IP地址进行了检查
和IP的首部校验和及算法方法相似,二进制反码运算求和再取反; IP数据报只校验IP数据报首部
UDP检查首部和数据部分