LWIP应用开发|UDP协议原理

UDP协议原理

1. UDP报文封装

一个典型的使用UDP协议封装的数据包,包括以太网MAC头+网络层IP数据头+传输层UDP头+要传输的数据。详见下图所示:

在这里插入图片描述

2. UDP报文结构

UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运传输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。

UDP报文结构如下图示:

在这里插入图片描述
UDP报文结构各字段功能如下示:

  • 源端口号:表示发送端端口号,字段长16bit;在需要对方回信时选用,不需要时可设为0
  • 目标端口号:表示接收端端口号,字段长16bit;在终点交付报文时要使用到
  • 总长度:UDP用户数据报的长度,其最小值是8(仅有首部),发送一个带0字节数据的UDP数据报是允许的。值得注意的是,UDP长度字段是冗余的;IPV4头部包含了数据报的总长度,同时IPV6头部包含了负载长度。因此,一个UDP/IPV4数据报的长度等于IPV4数据报的总长度减去IPV4头部的长度;一个UDP/IPV6数据报的长度等于包含在IPV6头部中的负载长度(payload length)字段的值减去所有扩展头部(除非使用了超长数据报)的长度。这两种情况下,UDP长度字段应该与从IP层提供的信息计算得到的长度是一致的
  • 校验和:检测UDP用户数据报在传输中是否有错。有错就丢弃

3. Wireshark抓包分析

Socket API编程模型一文中的UDP Server工程源码下载到开发板中,用网线将PC和开发板相连接,开启一个UDP客户端;打开wireshark软件,监听IP地址192.168.1.10后,在UDP客户端发送数据

在这里插入图片描述

wireshark抓取到相应的UDP数据包,可以看到源端口号、目标端口号、总长度、校验和以及数据

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Chuangke_Andy/article/details/114366977