UDP协议原理详解

描述

1. UDP报文封装

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

封装

2. UDP报文结构

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

UDP报文结构如下图示:

封装

UDP报文结构各字段功能如下示:

源端口号 :表示发送端端口号,字段长16位;在需要对方回信时选用,不需要时可设为0

目标端口号 :表示接收端端口号,字段长16位;在终点交付报文时要使用到

总长度 :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数据包,可以看到源端口号、目标端口号、总长度、校验和以及数据

封装

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分