UDP 的报文结构和注意事项

news/2024/5/18 16:37:05 标签: udp, 网络协议, 网络

 

目录

一. UDP的特点

二. UDP协议 

1. UDP协议端格式

2.UDP的报文结构 

3. 基于UDP的应用层协议

三. (高频面试题)

一. UDP的特点

  • 无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。
  • 不可靠:即使因为网络故障等原因无法将数据报发送给接收端,UDP协议层也不会给应用层返回任何错误信息。
  • 全双工:即可以接收数据报,也可以发送数据报
  • 面向数据报:应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并。

二. UDP协议 

1. UDP协议端格式

  • 16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度;
  • 如果校验和出错,就会直接丢弃; 

2.UDP的报文结构 

  • UDP报文主体分为两个部分:UDP报头(占8个字节)+UDP数据/UDP载荷
  • UPD报头:源端口号+目的端口号+包长度+校验和
  1. 源端口号:占16位,也就是2个字节 
  2. 目的端口号:占16位,2个字节
  3. UDP报文长度=UDP报头(首部)+UDP载荷 ,2个字节能表示的数据范围是0~65535,也就是能够表示的报文长度是65536字节(Byte),转换成KB,65536/1024 = 64 KB 这就是一个UDP报文所能表示的最大长度.
  4. 校验和:数据在传输的时候,本质上是0/1bit流,通过光信号或者电信号来表示,如果在传输的时候收到干扰,就可能会出现比特翻转现象.这个时候就需要校验和校验数据是否出错.

3. 基于UDP的应用层协议

  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议

三. (高频面试题)

如果传输超过64KB的数据,该如何设计?

第一种方案(不推荐):通过代码的方式针对应用层数据报进行手动的分包,拆分成多个包通过多个UDP数据报进行传输。(此方法比较麻烦)
第二种方案(推荐):不用UDP,换成TCP(TCP没有这样的限制)

UDP 和TCP 的区别?

  • 连接机制不同:TCP 是面向连接的协议,需要在客户端和服务器之间建立一个稳定的连接,然后再进行数据传输;而 UDP 是无连接的协议,数据包可以直接发送给目标主机,不需要事先建立连接。
  • 数据传输方式不同:TCP 采用可靠的数据传输方式,即在传输过程中使用序号、确认号和重传机制等控制手段来保证数据的可靠传输;而 UDP 采用不可靠的数据传输方式,数据包可能会丢失或重复,不提供数据可靠性保障。
  • 数据传输效率不同:由于 TCP 需要进行连接、序号确认等额外的数据包传输,因此在数据传输效率方面相对于 UDP 要低一些。
  • 数据大小限制不同:UDP 对数据包的大小有限制,最大只能传输 64KB 的数据,而 TCP 的数据包大小没有限制。
  • 应用场景不同:TCP 适用于要求数据传输可靠性高的场景,如网页浏览、文件下载、电子邮件等;而 UDP 适用于实时性要求较高的场景,如视频会议、在线游戏等。

 

 


http://www.niftyadmin.cn/n/4929861.html

相关文章

深入理解Linux内核--信号

信号的作用 信号(signal)是很短的消息,可以被发送到一个进程或一组进程。 使用信号的两个主要目的是: 1.让进程知道已经发生了一个特定的事件。 2.强迫进程执行它自己代码中的信号处理程序。​​​​ POSIX标准还引入了一类新的信号,叫做…

高情商HR教你面试高招(中)

面试是HR筛选人才的关键步骤,而面试者的职业规划、问题提问和处理挑战的能力都是HR关注的重点。本文将从HR的角度出发,揭示面试者应如何以高情商的回答应对职业规划、问题提问和挑战处理,为职场成功打下坚实基础。 职业规划: 面试…

20230811在WIN11下使用python3批量将中英文的SRT格式的字幕合并

20230811在WIN11下使用python3批量将中英文的SRT格式的字幕合并 2023/8/11 8:35 缘起:将google翻译成为的简体中文字幕和剪影/RP2023直接通过语音OCR获取的SRT格式的英文字幕合并成为中英文的字幕! 由于已经解决了UTF8的编码问题,ANSI/GBK编码…

【金融量化】对企业进行估值的方法有哪些?

估值的方法有哪些? 如何对企业进行估值?有2个方法估算。 1 绝对估值法 它是一种定价模型,用于计算企业的内在价值。 比如说你可以根据公司近N年的现金流情况。借此去预测未来N年的现金流情况。所有的现金流数据都可以在年报上查询到。最后…

为什么DNS协议运行在UDP之上?

DNS (Domain Name System) 运行在 UDP (User Datagram Protocol) 上主要是出于以下原因: 简单性和效率:UDP 是无连接的,这意味着与建立和维护 TCP 连接相比,UDP 有更少的开销。当 DNS 查询被发送时,它只需要一个小的请…

7个顶级开源数据集来训练自然语言处理(NLP)和文本模型

推荐:使用 NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景 NLP现在是一个令人兴奋的领域,特别是在像AutoNLP这样的用例中,但很难掌握。开始使用NLP的主要问题是缺乏适当的指导和该领域的过度广度。很容易迷失在各种论文和代码中&#xff…

IP地址处理攻略:数据库中的存储与转换方法

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

jumpserver命令记录膨胀问题

一.背景 jumpserver堡垒机针对只是接管ssh来说,正常操作Linux的指令记录应该不会太多,每天有个几千条都已经算很多了。所以默认jumpserver采用MySQL作为存储介质本身也没啥问题。但是我们使用jumpserver对【MySQL应用】进行了托管,导致查询SQ…