UDP传输协议

UDP传输协议
UDPUser Datagram Protocol用户数据报协议。是传输层面向数据报的不可靠传输协议在传输数据时不需要通信双方建立连接发完就结束时典型的面向报文协议。UDP协议特点无连接无连接的含义就是收发双方不需要像TCP协议一样在通信前要建立连接不需要确认应答不需要超时重传。与TCP相比TCPTCP就像拨通电话一定要电话接通建立连接后才能互通消息UDPUDP就像发邮件不管对方有没有在线邮件发给对方就不管事儿了不可靠所谓不可靠即是指发送方要发送数据就一个劲儿的不断发送数据报不管是否会因为网络出错等问题而造成的数据报文丢失的问题。简单来说就是收发双方无法得知是否接收是否发送是否丢失❗注意只要数据报成功到达接收方那么这个数据一定就是正确的即没有被篡改过的。为什么因为UDP协议格式中的校验和字段就是用来校验数据在发送过程中是否出错的如果检验出错那么就会直接丢弃这个数据报。全双工所谓全双工通俗地来讲就是收发双方可以同时发送数据同时接收数据双方不受影响。与半双工的区别半双工双方都可以互相发送和接收数据但不能同时发送数据。实际应用全双工电话、视频、直播等。半双工对讲机等。面向数据报简单说面向数据报就是发多少收多少不分装、不合并、不缓存。UDP传输数据的单元是数据报发送一次数据就是一个数据报文不需要像TCP一样需要分装、合并不断将报文发送到接收缓冲区。UDP协议格式UDP协议格式一般在教材中看到的图都是像下图这样画的源端口和目的端口源端口和目的端口都是各占2各字节16位。源端口表示发送的数据报来自发送方的哪个进程目的端口表示要将数据报发送致接收方的哪个进程。UDP长度UDP长度用来表示整个数据报的长度即UDP首部长度与载荷长度之和。内核靠这个长度字段精准切分出单个完整 UDP 报文。UDP校验和校验和的作用是校验数据报是否在传输过程中发生比特错误、数据篡改保证 UDP 数据的完整性。如果校验和验证失败直接丢弃整个数据报不会交给应用层。使用注意事项UDP 校验和校验范围非常广包含伪头部、UDP 头部、UDP 数据三部分不只是校验报文本身还能校验 IP 地址是否被篡改。IPv4 中 UDP 校验和可选关闭校验和字段填 0 代表不校验但在 IPv6 中强制开启不允许关闭。参与校验的数据字节必须为偶数若原始数据为奇数会在末尾临时补 0 字节参与计算补齐字节不会发送到网络中。校验和为0时特殊处理计算结果为全 0 时报文写入0xFFFF避免和 “不校验” 的 0 冲突。UDP 校验和只能检测错误无法纠错一旦校验失败直接丢包不会重传、不会修复数据。校验和可以防止比特翻转、数据损坏但无法防止中间人攻击只能保证数据完整性不保证保密性与真实性。