当前位置: 首页 > news >正文

【网络】UDP协议

应用层协议是请求与响应服务,客户端的请求与服务器的响应是通过应用层传输到网络中的,但再实际上,应用层并不能直接通信,需要将数据进行报头的封装,向下层交付,贯穿整个协议栈。我们已经谈到应用层协议负责应用。往下层交付,我们又要考虑交给谁?浏览器接收到请求后,同样要经过协议栈,并且需要知道将数据交到哪一个应用。

在协议中,我们始终要考虑,数据如何向上交付,报文和有效载荷如何分离的问题,还要考虑粘包等问题。

本文介绍距离应用层最近的传输层,负责数据从发送端送到接收端。

传输层协议有UDP和TCP,UDP是不可靠连接,不考虑数据丢失,正因如此,UDP协议很简单,并且资源浪费小。而TCP协议必须考虑大量数据丢失的问题,十分的负责,必然的代价是资源的消耗(空间和时间上)。

从了解UDP协议。

端口号

之前说过,端口号是用来标记主机上唯一的一个进程。数据在网络传输中,必须要解决上层交付的问题,因此传输中必定会获取到上层标志进程的唯一标志,就是端口号。所以端口是传输层的概念,主要负责向上交付的问题。

          

传输层获取到应用层的数据后,必定会添加端口相关的报头

同样传输层向上交付数据时,也必须解析出目标端口和源端口,向上交付有效载荷。

五元组标志通信 

在TCP/ip协议中,通过源端口,目的端口,源ip,目的ip,及协议号。这个五元组就能双方通信。

 

查看五元组

常用的方式是netstat - nltp a u 

介绍选项:

  • n:把字符显示成数字
  • l:查看监听状态的服务,去掉" l ",就能查看所有状态
  • u:查看udp协议
  • t:查看tcp协议
  • a:显示所有的选项,默认不显示LISTEN相关
  • p:查看进程 


端口号的划分

0-1023号是知名端口,普通用户是不能绑定的。

1024-65535是可以被OS分配的动态端口号。


 UDP协议

UDP协议是一中无连接的协议,它不像TCP协议在通信前需要建立连接。这种特性使得UDP在对时实性能要求比较高,对数据丢失容忍度高的场合有极高的运用。如视频流,电话通信等。

UDP报文传输都是独立的,每一个UDP都被封装成独立的数据报,数据报中必然包含着源端口,目标端口。

UDP协议格式

udp协议的基本格式如下:

源端口:数据从哪里来

目的端口:数据交付到哪里

udp长度:包括报头和有效载荷

校验和:如果UDP报文出错,就直接丢弃


报头和有效载荷分离的问题?

UDP的报头是四个字段,每一个字段是16位。因此读到8字节后,就代表读完报头。继续读取到结尾,就读完有效载荷,就能做到报头和有效载荷的分离。

数据如何向上交付的问题? 

获取到有效载荷后,就要将数据往上层交付,在上层中有大量的协议进程,具体交到哪一个进程呢,主要是目的端口决定的!获取到目的端口后,就能交付。


如何理解报头

 报头的本质就是一个结构化字段,必然也是数据。其实就是一个结构体。

数据的封装

传输层收到应用层发来的数据后,会在传输层创建udp_header报头类型的变量,并且填充相应的字段。接着在OS开辟一块空间,将报头和有效载荷封装到一起,并直接发到下一级。

因此udp的传输层是没有缓冲区的,报文是直接向下交付的。

报文的管理

udp没有发送缓冲区,必然的结果是数据一旦被封装就直接发送到对方的主机上,对方主机就会一下子收到大量的报文,必然会来不及处理。所以必须对报文进行管理。OS怎么管理呢?先描述,再组织。

实际上就是一个队列,如果有报文发来,就先维护起来,列入队列中sk_buff 。要处理数据时,就往队列中取出对头的数据去处理。


UDP协议的特点

 udp协议就像寄信:

  • 无连接:知道对端的主机和端口就能直接通信,无需要建立连接。TCP有三次握手,是面向连接。
  • 不可靠:没有确认机制,没有重传。如果数据校验不一致,就直接丢弃这个报文。
  • 面向数据报:不能控制读取的大小和次数。

面向数据报

应用层交付给UDP一个报文,报文封装后就直接发送到对端。

不会囤积报文,或者分割报文。

对端必须一次收完一个完整的报文。

比如一份udp报文有10个字节:
发送端会立刻调用sento发送报文。接收方会调用recvfrom,一次性接收10个字节。这样就解决了粘包的问题。

接收方的报文天然就存放着数据报的长度,所以依靠数据报就能实现有效载荷和报文的分离,能够知道有效负载的长度。

基于UDP的应用层协议

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

UDP的使用场景

  • 实时视频流和音频流传输,如在线直播、视频会议等;
  • 实时游戏,如在线游戏中的游戏数据传输;
  • 简单的请求/响应交互,如 DNS、SNMP 等;
  • 广播通信,如广播、多播等;

相关文章:

【网络】UDP协议

应用层协议是请求与响应服务,客户端的请求与服务器的响应是通过应用层传输到网络中的,但再实际上,应用层并不能直接通信,需要将数据进行报头的封装,向下层交付,贯穿整个协议栈。我们已经谈到应用层协议负责…...

牛马真的沉默了,入职第一天就干活

入职第一天就干活的,就问还有谁,搬来一台N手电脑,第一分钟开机,第二分钟派活,第三分钟干活,巴适。。。。。。 打开代码发现问题不断 读取配置文件居然读取两个配置文件,一个读一点,…...

解决在cmd里下载的库,但IDLE还是显示不存在的问题

原因一: 环境变量配置 首先,你需要确认你安装库的时候使用的Python环境是否和IDLE使用的Python环境是同一个。如果cmd中你使用的是系统路径下的Python,而IDLE使用的是另一个路径下的Python,那么你在cmd中下载的库,IDL…...

嵌入式全栈开发学习笔记---C语言笔试复习大全23

目录 联合体 联合体的定义 联合体的长度 如果来判断设备的字节序? 如何把大端数据转换成小端数据? 枚举 枚举的定义 上一篇复习了结构体,这一节复习联合体和枚举。 说明:我们学过单片机的一般都是有C语言基础的了&#xff…...

C++函数指针,键值对集合的学习

这段代码使用了 std::unordered_map 来存储 std::wstring 作为键&#xff08;key&#xff09;&#xff0c;而对应的值&#xff08;value&#xff09;是一个 std::function<void(std::array<int, 5>, SomeClass&, int)> 类型的函数指针。这个结构使得根据字符串…...

新人攻略:避开这3大坑,让老员工主动带你飞!

进入职场的新人们&#xff0c;常常会感到困惑和挑战。他们可能会发现自己在与老员工的交流中遇到难题&#xff0c;甚至发现老员工并不愿意花费时间和精力去指导他们。这背后的原因是什么呢&#xff1f;又该如何改善这一现象呢&#xff1f;本文将从新员工的角度出发&#xff0c;…...

汽车液态电池隔膜的作用

标签: 汽车液态电池隔膜的作用; 聚乙烯(PE);聚丙烯(PP) 问题:汽车液态电池隔膜的作用? 汽车液态电池隔膜的作用 汽车液态电池中的隔膜是一个至关重要的组件,它在电池的性能、安全性和寿命方面起着关键作用。下面详细讲述隔膜的主要功能和作用: 1. 电化学隔离 隔…...

汽车液态电池充电时,充电时的化学反应是怎样的? 电池电量是怎么充满的?

标签: 汽车液态电池充电时的化学反应; 电池充电过程;锂电池,石墨负极 问题:汽车液态电池充电时,充电时的化学反应是怎样的? 电池电量是怎么充满的? 汽车液态电池充电时的化学反应 汽车液态电池(如锂离子电池)在充电时,通过电化学反应将电能转化为化学能并储存在电…...

Topk问题以及二叉树的三种层序遍历和基本操作

一、Topk问题 1、问题描述 TOP-K问题&#xff1a;即求数据结合中前K个最大的元素或者最小的元素&#xff0c;一般情况下数据量都比较大。 比如&#xff1a;专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 2、思路 对于Top-K问题&#xff0c;能想到的最简单直接的…...

深度学习设计模式之桥接模式

文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言 桥接模式是将抽象部分与实现部分分离&#xff0c;使它们都可以独立的变化。 一、介绍 桥接模式是结构型设计模式&#xff0c;主要是将抽象部分与实现部分分离&#x…...

设计模式 17 组合模式 Composite Pattern

设计模式 17 组合模式 Composite Pattern 1.定义 组合模式&#xff08;Composite Pattern&#xff09;&#xff0c;又叫部分整体模式&#xff0c;是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象&#xff0c;用来表示部分以及整体层次。这种类型的设…...

【经典论文阅读10】MNS采样——召回双塔模型的最佳拍档

这篇发表于2020 WWW 上的会议论文&#xff0c;提出一种MNS方式的负样本采样方法。众所周知&#xff0c;MF方法难以解决冷启动问题&#xff0c;于是进化出双塔模型&#xff0c;但是以双塔模型为基础的召回模型的好坏十分依赖负样本的选取。为了解决Batch内负样本带来的选择性偏差…...

串行低功耗芯片间媒体总线(SLIMbus)介绍

文章目录 SLIMbus简介slimbus设备和设备类Manager DeviceFramer DeviceInterface DeviceGeneric Device (Function)SLIMbus组件简单的SLIMbus组件复杂的SLIMbus组件SLIMbus的DATA和CLKSLIMbus的Clock Frequencies和GearsCells, Slots, Subframes, Frames, and...

esp32-S3 使用自带的大模型,实现本地文字转语言tts

目录 CMakeLists.txt文件中: 初始化以及实际运用代码: 在partitions.csv 内存分配文件中,添加voice_data项...

Redis事务(1)

什么是事务&#xff1f; Redis 的事务和 MySQL 的事务概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执行。 但是注意体会 Redis 的事务和 MySQL 事务的区别: 弱化的原⼦性: redis 没有 “回滚机制”. 只能做到这些操作 “批量执⾏”. 不能做到 “⼀个失败就…...

202206青少年软件编程(Python)等级考试试卷(四级)

第 1 题 【单选题】 有如下 Python 程序, 包含 lambda 函数, 运行该程序后, 输出的结果是? ( ) g = lambda x,y:x*yprint(g(2,3))A :2 B :3 C :6 D :8 正确答案:C 试题解析: g = lambda x, y: x*y, lambda 函数返回参数 x 和 y 的积, 因此选 C。 第 2 题 【单选…...

大作业爬取手机数据,实现手机推荐系统以及朋友圈手机论坛

1、功能简介 &#xff08;1&#xff09;用户注册与用户登录 &#xff08;2&#xff09;手机搜索、手机比拼、手机个性化推荐 &#xff08;3&#xff09;点击搜索的手机图片会就用户行为&#xff0c;轮播展示用户行为&#xff0c;推荐点击次数靠前的手机 &#xff08;4&#xf…...

Leetcode 环形链表|| 快慢指针解法

但是我们不知道 aaa 的值&#xff0c;该怎么办&#xff1f;依然是使用双指针法。考虑构建一个指针&#xff0c;此指针需要有以下性质&#xff1a;此指针和 slow 一起向前走 a 步后&#xff0c;两者在入口节点重合。那么从哪里走到入口节点需要 aaa 步&#xff1f;答案是链表头节…...

出书,是「盖你自己的房子」你知道吗?

出书是「盖你自己的房子」 尊敬的出书盟友&#xff1a; 你好&#xff01;我希望这封信能够激发您对出书和阅读的热情。 在当今信息爆炸的时代&#xff0c;每个人都有机会分享自己的故事、思想和知识。而书籍作为一种流传百年的媒体&#xff0c;依旧承载着无限的力量和影响力…...

深入探索MySQL SELECT查询:从基础到高级,解锁数据宝藏的密钥

系列文章目录 更新ing... MySQL操作全攻略&#xff1a;库、表、数据、事务全面指南深入探索MySQL SELECT查询&#xff1a;从基础到高级&#xff0c;解锁数据宝藏的密钥MySQL SELECT查询实战&#xff1a;练习题精选&#xff0c;提升你的数据库查询技能PyMySQL&#xff1a;连接P…...

从TwinCAT配置到Simulink-Realtime:打通松下伺服EtherCAT实时控制的实践指南

1. 为什么需要打通TwinCAT和Simulink-Realtime 在工业自动化领域&#xff0c;EtherCAT因其出色的实时性能和灵活的拓扑结构&#xff0c;已经成为伺服控制的首选通信协议。而将TwinCAT与Simulink-Realtime结合使用&#xff0c;可以充分发挥两者的优势&#xff1a;TwinCAT提供专业…...

三步免费检测微信单向好友:WechatRealFriends终极工具使用指南

三步免费检测微信单向好友&#xff1a;WechatRealFriends终极工具使用指南 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFri…...

CPLEX 2210 Linux安装指南:Python 3.7~3.10环境配置详解

1. 为什么选择CPLEX 2210&#xff1f; 如果你正在寻找一个强大的数学优化求解器&#xff0c;CPLEX绝对是个不错的选择。作为IBM旗下的商业优化软件&#xff0c;CPLEX在解决线性规划、混合整数规划等问题上表现优异。最新发布的2210版本对Python 3.7到3.10提供了更好的支持&…...

Midscene.js:用自然语言轻松实现全平台UI自动化的终极解决方案

Midscene.js&#xff1a;用自然语言轻松实现全平台UI自动化的终极解决方案 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 还在为编写复杂的自动化脚本而烦恼吗&…...

stock-sdk-mcp 的实践整理栈

一、什么是urllib3&#xff1f; urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你&#xff1a; 发送各种 HTTP 请求&#xff08;GET, POST, PUT, DELETE等&#xff09;。 管理连接池&#xff0c;提高网络请求效率。 处理重试和重定向。 支…...

用PreScan模拟极端交通场景:如何给自动驾驶算法设计‘马路杀手‘测试用例

用PreScan构建自动驾驶极限测试场景&#xff1a;从参数化设计到算法压力测试 在自动驾驶技术快速迭代的今天&#xff0c;仿真测试已成为算法验证不可或缺的一环。传统测试场景往往局限于标准交通规则下的常规情况&#xff0c;而真实道路上的"马路杀手"——那些不按常…...

Halcon实战:用area_center算子快速搞定图像区域面积与中心点计算(附完整代码)

Halcon实战&#xff1a;用area_center算子快速搞定图像区域面积与中心点计算&#xff08;附完整代码&#xff09; 在工业质检、医疗影像或自动化测量领域&#xff0c;图像区域的面积与中心点坐标是最基础却至关重要的特征参数。想象一下这样的场景&#xff1a;生产线上需要统计…...

04 前端 Web 开发 HTML5 + CSS3 + 移动 web 视频教程,前端web入门首选黑马程序员

04 前端 Web 开发 HTML5 CSS3 移动 web 视频教程&#xff0c;前端web入门首选黑马程序员 一、参考资料 【前端Web开发HTML5CSS3移动web视频教程&#xff0c;前端web入门首选黑马程序员】 https://www.bilibili.com/video/BV1kM4y127Li/?p44&share_sourcecopy_web&vd…...

Win11下JDK1.8和17双版本共存指南:5分钟搞定环境变量配置与快速切换

Win11下JDK1.8与17双版本共存实战&#xff1a;从配置到智能切换的全套解决方案 作为一名长期奋战在Java开发一线的工程师&#xff0c;我深刻理解同时维护新旧项目的痛苦。每次打开IDE前都要反复确认环境变量&#xff0c;或者在会议演示时突然发现项目跑在了错误版本上——这些场…...

2025最权威的六大降重复率助手实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于深度学习跟自然语言处理技术的学术原创性检测系统&#xff0c;被称作AI论文查重&#xf…...