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

传输层 --- UDP

一、简述与回顾

传输层:负责数据能够从发送端传输接收端

在TCP/IP协议中,我们用"源IP","源端口号","目的IP","目的端口号",和"协议号"来表示一个通信。

  • ip地址是用来在网络上标识唯一一台主机的
  • 端口号是用来表示主机上唯一一个进程的
  • 这里的"协议号"是用来表明用的是哪个协议(TCP/UDP/...)进行通信的

注意:一个进程能对应多个端口号,一个端口号只能对应一个进程

 端口号范围划分:

  • 0 - 1023:知名端口号HTTP, FTP,SSH等这些广为使用的应用层协议, 它们的端口号都是固定的
  • 1024 - 65535:操作系统动态分配的端口号,客户端程序的端口号,就是由操作系统从这个范围分配的

知名端口号:

  • ssh服务器, 使用22端口
  • ftp服务器, 使用21端口
  • telnet服务器, 使用23端口
  • http服务器, 使用80端口
  • https服务器, 使用443

 cat /etc/services  // 用来查看知名端口号 --- 自己写的程序使用端口号,尽量避开这些端口号

netstat命令

netstat是一个用来查看网络状态的重要工具

语法:netstat [选项]

功能:查看网络状态

常用选项

  • n 拒绝显示别名,能显示数字的全部转化成数字
  • l 仅列出有在 Listen (监听) 的服務状态
  • p 显示建立相关链接的程序名
  • t (tcp)仅显示tcp相关选项
  • u (udp)仅显示udp相关选项
  • a (all)显示所有选项,默认不显示LISTEN相关

还有一个ss命令,和netstat用法差不多,也是用来查看网络状态的,大家可以试试

pidof命令

在查看服务器的进程id时非常方便.

语法:pidof [进程名]

功能:通过进程名,查看进程id

二、UDP

1、UDP协议端格式

从上图我们就能理解在网络套接字编程中的部分操作

  1. 在应用层写完数据后调用sento函数进行发送,本质就是将数据拷贝到UDP报文的数据区中,以及sendto函数中要传服务器的sockaddr结构体,是因为udp协议需要填写目的端口号
  2. 端口号用16位整形接收是因为底层的udp协议规定的16位

当然协议的定制还有两个问题需要处理:

1、如何将报头和数据分离?

在udp协议中,报头字段的大小是固定的8字节,同时16位UDP长度表示整个报文的大小,所以我们能很轻易的将报文进行拆分,同时判断出报文是否完整 --- 如果报文长度小于8字节或小于报文中记录的报文长度,说明报文不全

2、如何向上交付数据?

通过目的端口号,可以找到需要交付数据的进程

注意:16位校验和是用来检验数据是否被修改,主要是通过数学运算,有兴趣可以自行去了解一下,如果校验和出错,就会直接丢弃

2、如何理解报头?

 3、UDP的特点

UDP传输的过程类似于寄信

  • 无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接
  • 不可靠:没有确认机制,没有重传机制;如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息;
  • 面向数据报:不能够灵活的控制读写数据的次数和数量

如何理解面向数据报?

  • 发送方应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并。
  • 接收放在收到报文后,必须一次读完一整个UDP报文,不能将一个UDP报文分开来读。

如何理解UDP的缓冲区?

  • UDP没有真正意义上的 发送缓冲区,调用sendto会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作
  • UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致。如果缓冲区满了,再到达的UDP数据就会被丢弃

这里的缓冲区可以看成是上图中struct sk_buffer组成的链表队列

UDP的socket既能读,也能写,这个概念叫做 全双工

注意点:UDP的报头中有一个报文长度字段,表明UDP报文的长度最大位64KB,如果需要发送的数据大于64KB,就需要我们手动多次发送

4、基于UDP的应用层协议

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

当然,也包括你自己写UDP程序时自定义的应用层协议

相关文章:

传输层 --- UDP

一、简述与回顾 传输层:负责数据能够从发送端传输接收端 在TCP/IP协议中,我们用"源IP","源端口号","目的IP","目的端口号",和"协议号"来表示一个通信。…...

图书管理系统(Java版本)

文章目录 前言要求1.设置对象1.1.图书1.2.书架2.管理员3.功能的实现 2.搭建框架2.1.登录(login)2.2.菜单2.3.操作方法的获取 3.操作方法的实现3.1.退出系统(ExitOperation)3.2.显示图书(ShowOperation)3.3.查阅图书(FindOperation)3.4.新增图书(AddOperation)3.5.借出图书(Borr…...

全同态加密生态项目盘点:FHE技术的崛起以及应用

撰文:Chris,Techub News 在当今数字化的时代,隐私保护已成为一个全球性的焦点话题,特别是在加密货币和区块链技术快速发展的背景下。虽然当前的隐私技术在保护数据安全方面多有欠缺,引发了广泛的关注和批评&#xff0c…...

山脉数组的峰顶索引 ---- 二分查找

题目链接 题目: 分析: 我们很明显, 可以从峰值位置将数组分成两段, 具有"二段性", 所以可以用二分查找因为arr是山峰数组, 不存在相等的情况如果arr[mid] > arr[mid 1], 说明mid的位置可能是峰值, 移动right mid如果arr[mid] < arr[mid 1], 说明mid的位置…...

【简单介绍下7-Zip,什么是7-Zip?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…...

SCSS基本使用:构建高效、可维护的CSS架构

SCSS基本使用&#xff1a;构建高效、可维护的CSS架构 SCSS&#xff08;Sassy CSS&#xff09;是一个流行的CSS预处理器&#xff0c;它扩展了CSS的功能&#xff0c;提供了变量、嵌套规则、混合&#xff08;Mixins&#xff09;、函数等强大的编程特性&#xff0c;使得开发者能够编…...

allegro 无法删除Xnet

allegro 无法删除Xnet Orcad中打开Constraint Manager之后&#xff0c;再生成网表&#xff0c;导入PCB后就会出现一堆Xnet网络。无法去除Xnet。 解决办法 在原理图ORCAD中&#xff0c; 1、打开Edit Object properties 2、选择Filter by:Capture 3、点击New Property 4、设置…...

2024年甘肃特岗教师招聘报名流程,速速查收哦!

2024年甘肃特岗教师招聘报名流程&#xff0c;速速查收哦&#xff01;...

【错误解决】使用HuggingFaceInstructEmbeddings时的一个错误

起因&#xff1a;使用huggingface构建一个问答程序时出现的问题。 错误内容&#xff1a; 分析&#xff1a; 查看代码发现&#xff0c;HuggingFaceInstructEmbeddings和sentence-transformers模块版本不兼容导致。 可以明显看到方法参数不同。 解决&#xff1a; 安装sentenc…...

C++中的四种类型转换运算符

隐式类型转换是安全的&#xff0c;显式类型转换是有风险的&#xff0c;C语言之所以增加强制类型转换的语法&#xff0c;就是为了强调风险&#xff0c;让程序员意识到自己在做什么。但是&#xff0c;这种强调风险的方式还是比较粗放&#xff0c;粒度比较大&#xff0c;它并没有表…...

k8s 1.28.10 浏览器访问6443查看api,需要证书

添加证书 使用client-certificate-data和client-key-data生成一个p12文件 1.生成client-certificate-data grep client-certificate-data ~/.kube/config | head -n 1 | awk {print $2} | base64 -d >> kubecfg.crt2.生成client-key-data grep client-key-data ~/.kub…...

新火种AI|复旦团队在“冷冻人脑”领域获得重大进展!人工智能是否会对此形成助力?

​在低温医学领域&#xff0c;“冷冻人脑”技术的研究和突破既是重点&#xff0c;也是难点。因为这项技术关乎着人类是否可以取得一个令人瞩目的突破——人类的生命是否能够得到延续。 早几年&#xff0c;诸如“利用人体冷冻技术将身患绝症的病人保存十几年&#xff0c;几十年…...

echarts 散点图修改散点图中图形形状颜色大小

话不多说&#xff0c;直接上代码 let option {color:[xxx, xxx, xxx, xxx], //直接设置color可修改图形颜色title: {text: 散点图图形,},tooltip: {trigger: axis,axisPointer: {type: cross}},legend: {top: 2,right:2,itemWidth: 10,itemHeight: 10,textStyle:{fontSize:14}…...

SpringBoot3.x + JDK21 整合 Mybatis-Plus

前言 SpringBoot3.0 开始最低要求 Java 17&#xff0c;虽然目前最新的版本为 JDK22&#xff0c;但是在官网上看到 JDK23 在今年9月又要发布了&#xff0c;感觉这 JDK 也有点太过于给力了 所以我们选择用目前的 LTS 版本 JDK21 就好了&#xff0c;不用追求最新的 springboot 版…...

Java类和对象(五)—— 抽象类、接口、Object类和内部类

抽象类 在继承体系下&#xff0c;父类有些方法可能是要被重写的&#xff0c;如果我们事先就知道某些方法需要重写的话&#xff0c;我们可以不用在父类里面具体实现这个方法&#xff0c;这时候我们会用到抽象方法&#xff0c;这时候我们会用到关键字abstract关键字来修饰 publ…...

图像上下文学习|多模态基础模型中的多镜头情境学习

【原文】众所周知&#xff0c;大型语言模型在小样本上下文学习&#xff08;ICL&#xff09;方面非常有效。多模态基础模型的最新进展实现了前所未有的长上下文窗口&#xff0c;为探索其执行 ICL 的能力提供了机会&#xff0c;并提供了更多演示示例。在这项工作中&#xff0c;我…...

汇编:函数以及函数参数传递

汇编语言中的函数&#xff08;或过程&#xff09;是指一段可以被调用和执行的代码块&#xff1b;它们用于组织和重用代码&#xff0c;并使程序结构更加清晰&#xff1b;由于汇编语言没有高层次语言的语法糖&#xff0c;编写和调用函数涉及直接的堆栈操作和寄存器管理&#xff1…...

linux-ftp服务器搭建简介

安装ftp服务器&#xff1a; vsftpd全称为“very secure FTP daemon”&#xff0c;是一个在UNIX类操作系统上运行的服务&#xff0c;可以提供高安全性的FTP服务。 vsftpd是一个免费和开放源代码的FTP服务器软件&#xff0c;它提供了许多其他FTP服务器不支持的特性&#xff0c;例…...

二十一、openlayers官网示例Custom Controls解析——自定义控件扩展Control类

官网demo地址&#xff1a; Custom Controls 这个示例讲的是如何自定义控件 首先创建了一个新的类继承了原本的Control&#xff0c;新增了一个button元素&#xff0c;然后调用了super方法将参数传给了父类。 const button document.createElement("button");button.…...

【博主推荐】HTML5实现520表白、情人节表白模板源码

文章目录 1.设计来源1.1 表白首页1.2 甜蜜瞬间11.3 甜蜜瞬间21.4 甜蜜瞬间31.5 甜蜜瞬间41.6 甜蜜瞬间51.7 甜蜜瞬间61.8 永久珍藏 2.效果和源码2.1 页面动态效果2.2 页面源代码2.3 源码目录2.4 更多为爱表白源码 3.源码下载地址 作者&#xff1a;xcLeigh 文章地址&#xff1a;…...

别再乱算相似度了!用Python实战二元变量聚类:从Jaccard系数到病人分组

医疗数据分析实战&#xff1a;用Python实现基于Jaccard系数的病人症状聚类在医疗数据分析领域&#xff0c;如何从海量病人症状数据中发现潜在规律一直是临床研究的难点。传统方法往往依赖医生经验或简单统计&#xff0c;而现代数据挖掘技术为我们提供了更科学的解决方案。本文将…...

基于Arduino的模块化DIY智能时钟:从RTC到RGB LED的完整实现

1. 项目概述&#xff1a;打造一台高度可定制的DIY RGB LED时钟如果你和我一样&#xff0c;对市面上千篇一律的电子钟感到审美疲劳&#xff0c;同时又对Arduino和电子DIY充满热情&#xff0c;那么这个项目可能就是为你准备的。我们不是在简单地组装一个套件&#xff0c;而是在亲…...

基于双T振荡器的正弦波LED调光电路设计与实践

1. 项目概述&#xff1a;用双T振荡器实现正弦波LED调光最近在捣鼓一些氛围灯项目&#xff0c;总感觉用单片机PWM做的呼吸灯效果有点“硬”&#xff0c;那种线性的明暗变化看久了难免审美疲劳。于是翻出以前模拟电路的老本行&#xff0c;琢磨着能不能用纯硬件的方式&#xff0c;…...

保姆级避坑指南:在Ubuntu 22.04上搞定ROS2 Humble、PX4与Gazebo的联合仿真(附Empy版本降级)

保姆级避坑指南&#xff1a;Ubuntu 22.04下ROS2 Humble与PX4联合仿真的21个关键陷阱当你在Ubuntu 22.04上第一次尝试搭建ROS2 Humble、PX4与Gazebo的联合仿真环境时&#xff0c;可能会遇到比预期更多的挑战。这不是一个简单的"复制粘贴命令就能完成"的任务——版本冲…...

PCL 法向量夹角剔除错误匹配点对【2026最新版】

目录 一、 算法简介 1、主要函数 2、参考文献 二、 代码实现 三、 结果展示 四、 参考链接 博客长期更新,本文最新更新时间为:2026年5月24日。代码在PCL1.15.1中测试通过 一、 算法简介 在三维点云配准中,对应点(correspondence)的准确性直接决定了配准算法的精度和鲁棒性…...

量子纠错码VarQEC:原理、实现与硬件优化

1. 量子纠错码基础与实验背景量子纠错码&#xff08;Quantum Error Correction Codes, QEC&#xff09;是量子计算中保护量子信息免受噪声影响的核心技术。与经典纠错码不同&#xff0c;量子纠错需要应对量子态特有的退相干和纠缠特性。传统QEC如[[5,1,3]]完美码虽然理论完备&a…...

基于树莓派打造万能遥控器:从硬件选型到Web控制界面全解析

1. 项目概述&#xff1a;打造一个能“学习”的万能遥控器家里遥控器越来越多&#xff0c;电视、空调、风扇、灯带……每个设备都配一个&#xff0c;找起来麻烦&#xff0c;用起来也乱。市面上所谓的“万能遥控器”其实并不万能&#xff0c;它内置的码库有限&#xff0c;很多小众…...

如何优化 MySQL 千万级数据分页查询的性能?

它的本质是&#xff1a;**传统 LIMIT offset, size 在大数据量下性能急剧下降&#xff0c;是因为 MySQL 必须 扫描并丢弃 前 offset 行数据。当 offset 很大时&#xff08;如 LIMIT 1000000, 10&#xff09;&#xff0c;MySQL 需要读取 1,000,010 行记录&#xff0c;执行 1,000…...

收藏|2026年AI大模型就业爆发!岗位暴涨12倍、月薪6W+,小白零基础入门指南

2026年&#xff0c;AI已从“科技热点”彻底变为职场“刚需赛道”&#xff01;脉脉高聘人才智库最新发布的《2026年1-2月中高端人才求职招聘洞察》&#xff0c;用硬核数据揭示行业真相&#xff1a;AI人才成招聘市场顶流&#xff0c;岗位量、薪资双双爆发式增长。尤其对零基础小白…...

告别依赖冲突:在Debian12上为特定项目搭建Python2.7.18独立运行环境

告别依赖冲突&#xff1a;在Debian12上为特定项目搭建Python2.7.18独立运行环境 当现代Linux系统已全面拥抱Python3的时代&#xff0c;突然需要维护一个仅支持Python2.7的遗留项目&#xff0c;这种场景对开发者而言无异于一场噩梦。本文将带你用工程化的思维&#xff0c;在Deb…...