UDP报文结构

UDP特点

无连接 , 不可靠传输 , 面向数据报 , 全双工

  • 无连接: 知道对端的 IP 和端口号就直接进行传输,不需要建立连接.
  • 不可靠传输:没有确认机制,没有重传机制;如果因为网络故障导致该段无法发送对方,UDP协议层也不会给应用层返回任何错误信息.
  • 面向数据报:不能灵活的控制读写数据的次数和数量
  • 全双工:在通信过程中,双方可以同时进行双向的数据传输,即可以同时发送和接收数据,而且双方之间的传输是独立的

UDP协议端格式

UDP报文结构_第1张图片

  1. 源端口号:占16位,表示发送端的端口号。

  2. 目的端口号:占16位,表示接收端的端口号。

  3. UDP长度:占16位,表示UDP报文的总长度,包括首部和数据部分。单个UDP数据报的最大长度为 64KB (不能超过64KB,超过会导致数据被截断等问题)

  4. UDP校验和:占16位,用来检验UDP报文的完整性。计算校验和时,不仅要考虑UDP首部的内容,还要包括UDP数据部分。

  5. 数据:占n个字节,表示应用层传输的数据。

关于校验和

在网络传输过程中, 是非常容易出现错误的(电信号/光信号/电磁波受到外界的干扰,使里面传输的信号发生改变)

校验和,存在的目的,就是为了能够 "发现" 或者 "纠正" 网络传输过程中出现的错误.

通过对数据进行计算,生成一个校验和值,然后将该校验和值附加在数据中一起传输。接收方在接收到数据后,同样对数据进行计算,生成一个校验和值,并与传输过来的校验和值进行比较。如果两者相等,则说明数据在传输过程中没有发生改变或丢失,可以认为数据是有效的;如果两者不相等,则说明数据可能发生了错误或损坏。

校验和算法通常采用的是简单的数学操作,如加法或异或运算。具体的计算方式取决于校验和算法的设计。常见的校验和算法包括累加和校验和(Checksum)、循环冗余校验(CRC),MD5,SHA1等。

这里简单介绍一下MD5算法

MD5算法,本质上是一个"字符串hash算法",MD5算法的输入可以是任意长度的数据,输出是一个128位的哈希值。

特点:

  • 它是一个单向函数,即无法从哈希值逆推出原始数据。
  • 对于不同的输入,得到的哈希值几乎是唯一的,不同的输入可以得到不同的哈希值。
  • 即使输入数据只有微小的差异,其哈希值也会有很大的不同。
  • MD5算法的哈希值是固定长度的,不受输入数据长度的影响。

注意:校验和并不能检测出所有的错误,它只能帮助检测某些特定类型的错误。如果校验和不匹配,说明数据有错误,但如果校验和匹配,不能保证数据完全没有错误。

基于UDP的应用层协议

  1. DNS:用于将域名映射为IP地址的分布式数据库系统,使用UDP协议进行域名解析。

  2. SNMP:用于网络设备的监控和管理,包括获取设备状态、配置设备等操作,使用UDP协议进行数据传输。

  3. TFTP:用于简单的文件传输,如固件更新、配置文件传输等,使用UDP协议进行数据传输。

  4. NTP:用于同步网络中各个设备的时间,使用UDP协议进行时间同步。

  5. DHCP:用于自动分配IP地址、网关、DNS服务器等网络配置信息给客户端设备,使用UDP协议进行数据传输。

  6. RIP:用于路由器之间的路由信息交换,使用UDP协议传输路由表信息。

  7. RTP:用于实时的音视频传输,如IP电话、视频会议等,使用UDP协议进行数据传输。

  8. NFS : 网络文件系统

这些基于UDP的应用层协议通常选择UDP作为传输层协议,因为UDP具有低延迟和高效率的特点,适用于实时和轻量级的数据传输。

当然,也可以自定义应用层协议

你可能感兴趣的:(udp,网络协议,网络)