相比 TCP 协议,UDP 协议的报文结构相对简单。本节将详细讲解 UDP 报文的格式。

UDP 报文格式

每个 UDP 报文分为 UDP 报头和 UDP 数据区两部分。报头由 4 个 16 位长(2 字节)字段组成,分别说明该报文的源端口、目的端口、报文长度和校验值。

UDP 报文格式如图所示。

UDP 报文中每个字段的含义如下:

  • 源端口:这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写入该字段中。如果不写入端口号,则把这个字段设置为 0。这样,接收端的应用程序就不能发送响应了。
  • 目的端口:接收端计算机上 UDP 软件使用的端口,占据 16 位。
  • 长度:该字段占据 16 位,表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8。
  • 校验值:该字段占据 16 位,可以检验数据在传输过程中是否被损坏。

分析 UDP 数据包

客户端与服务器建立连接后进行通信,除了使用 TCP 协议外,还可以使用 UDP 协议。netwox 工具提供了相关模块,用于建立 UDP 服务器和 UDP 客户端,实现基于 UDP 协议的数据交互。

【实例】已知主机 A 的 IP 地址为 192.168.59.132,主机 B 的 IP 地址为 192.168.59.135。分别在这两个主机上建立 UDP 服务器和客户端,并进行连接,监听指定端口上的通信信息。具体步骤如下:

1) 在主机 A 上建立 UDP 服务器,设置监听端口为 80,执行命令如下:

root@daxueba:~# netwox 90 -P 80

执行命令后,没有任何输出信息,但是成功建立了 UDP 服务器端。

2) 在主机 B 上建立 UDP 客户端,连接 UDP 服务器端 80 端口,执行命令如下:

root@daxueba:~# netwox 88 -i 192.168.59.135 -p 80

执行命令后,没有任何输出信息,但是成功连接到了 UDP 服务器端,这里可以输入通信内容。

3) 与 UDP 服务器端进行通信,在客户端输入 hi:

root@daxueba:~# netwox 88 -i 192.168.59.135 -p 80
hi

4) 在服务端可以看到客户端发来的消息如下:

root@daxueba:~#  netwox 90 -P 80
hi

5) 为了验证发送的消息使用的是 UDP 协议,可以通过抓包进行查看,如图所示。

从图中第 1 个数据包可以看到,是 UDP 客户端(源 IP 地址为 192.168.59.132)向 UDP 服务器端(目的 IP 地址为 192.168.59.135)发送的 UDP 数据包,使用的源端口为随机端口 47203,目的端口为 80(UDP 服务器端监听的端口)。

在 User Datagram Protocol 部分中显示了 UDP 数据包的详细信息。可以看到源端口、目的端口,以及包长度为 11 字节、校验值为 0xf878 等信息。

6) 当服务器向客户端发送消息时,使用的也是 UDP 协议。例如,在服务器端回复客户端,输入 hello:

root@daxueba:~# netwox 90 -P 80
hi
hello

7) 通过抓包验证使用的是 UDP 协议,如图所示。

从第 14 个数据包可以看到,源 IP 地址为 192.168.59.135,目的 IP 地址为 192.168.59.132,源端口为 80,目的端口为随机端口 47203。该数据包正好是 UDP 服务器回复客户端的 UDP 数据包。在 User Datagram Protocol 部分中可以看到详细信息。

54.UDP报文格式详解相关推荐

  1. tcp报文格式udp报文格式详解

    http://blog.csdn.net/a19881029/article/details/29557837 TCP(Transmission Control Protocol)传输控制协议是一种面 ...

  2. 数据帧、IP数据包、TCP、UDP报文格式详解----网络通信原理

    数据链路层.网络层.传输层----网络通信原理 物理层 数据链路层 eNSP抓包实验 网络层 ICMP协议概述 eNSP抓包实验 ARP协议概述 eNSP抓包实验 传输层 TCP协议 eNSP抓包 三 ...

  3. TCP/IP(五):UDP 报文格式详解

    1.概述 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连 ...

  4. 【Linux网络编程】TCP 和 UDP 数据报格式详解

    TCP 报文格式 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. TCP 报文段的报头有 10 个必需的字段和 ...

  5. ICMP报文格式详解

    1 引言 2 ICMP报文的类型 3 ICMP地址掩请求与应答 4 ICMP时间戳请求与应答 5 ICMP端口不可达差错 1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错以及其他需要注意 ...

  6. IPv4 和 IPv6 报文格式详解

    文章目录 1 概述 2 报文格式 2.1 IPv4 2.2 IPv6 2.3 两者区别 3 网工软考真题 1 概述 2 报文格式 2.1 IPv4 中文名 英文名 长度 bit(位) 解释 版本 Ve ...

  7. Bacnet协议报文格式详解(一)

    系统实现基于BACnet/IP(又称B/IP)网络进行通讯.BACnet虚拟链路层(BVLL)提供了BACnet网络层和某指定的通讯子系统的接口,本文指定了BACnet虚拟链路控制(BVLC)要求支持 ...

  8. QUIC报文格式详解

    QUIC的packet分为Special Packets和Regular Packets两种,其中各自又有两种不同的packet 特殊报文: 版本协商报文(Version Negotiation Pa ...

  9. icmp报文格式_TCP/IP(二):IP报文格式详解

    1. IP 报文格式 0bit是指位于最左边的最高位,31bit是指位于最右边的最低位,4个字节的32bit按照 bigendian(大端格式:低字节位于高地址)字节序传输:首先是0~7bit,其次 ...

最新文章

  1. java触发器如何创建表_在java 中执行触发器代码、创表语句
  2. jQuery 1.4 版本的十五个新特性-转载
  3. python语言必背代码-Python入门必须知道的11个知识点
  4. redis之zskiplist
  5. nginx 超时时间_我眼中的 Nginx(四):是什么让你的 Nginx 服务退出这么慢?
  6. 账号体系——账号合并的历史数据处理
  7. 神经网络基础_反向传播_证明
  8. hdfs 备份数配置_大数据||HDFS HA配置详解
  9. oracle单表存储记录,oracle从各个表获得数据保存到另一个表
  10. 首批吃螃蟹!35 所高校获批开设「人工智能」本科专业
  11. Django常用命令
  12. python微信聊天机器人_教你用Python创建微信聊天机器人
  13. 线材下料优化python算法_深度学习中的优化算法(Optimizer)理解与python实现
  14. Java的面向对象 -- 继承
  15. R语言简单应用掷骰子游戏
  16. compat-mysql安装_Centos7 rpm方式安装Percona Mysql 8
  17. 实验三 算符优先分析算法的设计与实现
  18. FATE —— 二.3.2 Hetero-NN使用CustModel设置顶部、底部模型
  19. 华为临阵换帅,云市场掀起“三国杀”
  20. 卡在了杨继文的T10-1上

热门文章

  1. 编译原理--词法分析
  2. Selenium如何运行Js代码来修改只读(readonly属性)元素的值来给12306日期传值(send_keys)
  3. 新媒体运营项目管理者的3款王炸软件
  4. 【i天下网商日报】传QQ网购开放平台将进行大调整
  5. 软件测试菜鸟还是大神,一道测试用例设计笔试题就能测出!
  6. [激光原理与应用-58]:激光器 - 光学 - 常见光学镜片的特性
  7. Win10系统下,如何取消Edge与IE的强关联,并在Edge中增设IE模式
  8. Linux下find命令详解
  9. matlab图像去散焦,散焦图像的维纳滤波复原及振铃抑制
  10. 自动生成卡号和住院号