当前位置: 首页 > 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…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...