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

网络原理03

回顾

应用层:应用程序,数据具体如何使用

传输层:关注起点和终点

网络层:关注路径规划

数据链路层:关注相邻节点的转发

物理层:硬件设备

应用层

应用程序

在应用层,很多时候,都是程序员“自定义”应用层协议的(当然有一些现成的协议)

1. 根据需求,明确要传输的信息

2. 约定好信息按照什么格式来组织

常见的文件组织格式

1. xml

早期的数据组织格式,现在很少使用

通过标签来组织数据

<request>

      <userId>1000</userId>

      <position>100,30</position>

</request>    

让数据的可读性变得更好了,但书写起来非常繁琐,传输时也占用更多网络带宽

HTML 也是这种标签式的数据,属于 xml 的变种

xml 是一个通用的数据格式,包含什么标签,标签的名字,标签的含义,都是自定义的

HTML是一个专属的数据格式,上述的属性都有一个标准委员会,规定好的

2. json

键值对结构:

{} 把所有的键值对给包裹起来

键值对之间,使用 “,” 分割

键和值之间,使用 “:” 分割

键固定就是String类型

值可以是数字,字符串,json,数组...

由于json的key固定就是字符串类型,可以把key的引号省略掉

{  

  userId:"1000",

  position:"100,30"

}

json的可读性比较好,比xml简洁

在网络传输过程中会额外消耗网络带宽(key也需要传输)

3. protobuffer

protobuffer (pb)使用二进制组织数据,可以保证带宽占用最低(相当于是把要传输的信息按照二进制形式压缩了)

占用带宽最低,传输效率最高,适合对性能要求较高的场景

可读性不好,影响开发效率

传输层

UDP:无连接,不可靠,面向数据包,全双工

TCP:有连接,可靠传输,面向字节流,全双工

端口号

写一个服务器,必须手动指定一个端口号,通过当前的端口号来区分当前主机上的不同的应用程序

写一个客户端,客户端在通信的时候也会有一个端口号(代码中感受不到),系统自动分配

端口号,固定就是占2个字节,表示的范围是0—>65535,。一般来说,0是不用的

1—>1023 知名端口号

1024—>65535 普通端口号

UDP协议

源端口号目的端口号UDP报文长度UDP校验和

UDP载荷数据部分

                       ————————     UDP报头      ———————    

报头分为四部分,每部分2字节

报头和载荷之间,可以认为认为是“字符串拼接”,当然这里是二进制的数据

UDP载荷(payload)数据部分——>完整的应用层数据报

1)源IP,目的IP在网络层(IP协议里)

2)报文长度

2个字节,16位表示的数据,表示的范围是0—65535(64kb)

UDP数据报最长就是64kb

3)校验和(checksum)

本质上是一个字符串,体积比原先的数据要小,通过原先的数据生成

原始数据相同,得到的校验和一定相同

反之得到的校验和相同,原数据大概路相同(理论上存在,概率极低)

1. 发送方,把要发送的数据整理好data1,通过一定的算法,得到校验和checksum1

2. 发送方把data1和checksum1一起通过网络发送出去

3. 接收方收到数据,收到的数据为data2,数据checksum1

4. 接收方根据data2重新计算校验和,得到checksum2

5. 对比checksum1和checksum2

计算校验和的方法有很多,此处UDP使用的是CRC算法(循环冗余算法)

把当前计算校验和的数据,每个字节,进行累加,把结果保存到这两个字节的变量中,累加过程中溢出也没有问题

此外还有,md5/sha1 算法

此处只介绍 md5:

这里有一系列的公式,来完成 md5 计算 

1. 定长:无论原始数据多长,得到的md5都是固定长度

2. 分散:给定两个原始数据,哪怕原始数据绝大部分形同,只要其中一个字节不同,得到的md5值就相差很大

3:不可逆:

计算md5很容易,还原出原始的数据所需的算力超过极限

基于UDP的应用层协议

NFS:网络文件系统

TFTP:简单文件传输协议

DHCP:动态主机配置协议

BOOTH:启动协议(用于无盘设备启动)

DNS:域名解析协议

有些应用层协议,基于UDP实现的并不算多,相比于UDP,TCP更占据优势,优先使用

TCP协议

数据报 = 首部(报头header) + 载荷

1)16位源端口号,16位目的端口号,和UDP相同

2)头部长度

TCP 报头的长度是不固定的(变长),最短是20字节(没有选项),最长是60字节(选项最长是40字节)

4 bit  此处的单位是字节(选项是四个字节一个单位的)

3)保留

线子线不适用,占个位置(留下了扩展的余地)

4)选项(option)可选的

5)16位校验和  和UDP一样

相关文章:

网络原理03

回顾 应用层&#xff1a;应用程序&#xff0c;数据具体如何使用 传输层&#xff1a;关注起点和终点 网络层&#xff1a;关注路径规划 数据链路层&#xff1a;关注相邻节点的转发 物理层&#xff1a;硬件设备 应用层 应用程序 在应用层&#xff0c;很多时候&#xff0c;…...

yarn 安装问题

Couldn’t find package “regenerator-runtime” on the “npm” registry. Error: Couldn’t find package “watch-size” on the “npm” regist 标题Error: Couldn’t find package “babel-helper-vue-jsx-merge-props” on the “npm” registry. Error: Couldn’t f…...

优选算法——分治(快排)

1. 颜色分类 题目链接&#xff1a;75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; 题目展示&#xff1a; 题目分析&#xff1a;本题其实就要将数组最终分成3块儿&#xff0c;这也是后面快排的优化思路&#xff0c;具体大家来看下图。 这里我们上来先定义了3个指针&…...

深入解析强化学习中的 Generalized Advantage Estimation (GAE)

中文版 深入解析强化学习中的 Generalized Advantage Estimation (GAE) 1. 什么是 Generalized Advantage Estimation (GAE)? 在强化学习中&#xff0c;计算策略梯度的关键在于 优势函数&#xff08;Advantage Function&#xff09; 的设计。优势函数 ( A ( s , a ) A(s, a…...

PostgreSQL/PostGIS中提升空间查询(分析)性能(效率)的一些方法

目录 1. 使用适当的索引 1.1 索引类型 1.2 分析查询计划 1.3 覆盖索引 1.4 复合索引 1.5 维护索引 1.6 删除不必要的索引 1.7 使用适当的数据类型 2. 建立分区表 2.1 分区表的基本概念 2.2 创建分区表的步骤 2.3 空间数据的分区 2.4 分区表优点 3. 简化几何形状 …...

什么是Apache日志?为什么Apache日志分析很重要?

Apache是全球最受欢迎的Web服务器软件&#xff0c;支持约30.2%的所有活跃网站。凭借其可靠性、灵活性和强大的功能&#xff0c;Apache数十年来一直是互联网的中坚力量。 一、Apache Web服务器的工作原理 Apache Web服务器的工作原理如下&#xff1a; 接收HTTP请求&#xff1…...

攻防世界Reversing-x64Elf-100

一、使用Exeinfo PE 查壳 64无壳 二、使用IDA静态分析 1.找main 总览分析到&#xff1a;要使sub_4006FD出0&#xff0c;就可以得到"Nice!" 2.找到关键函数sub_4006FD 总览分析&#xff1a;v3是二维数组&#xff0c;要使if( )里的值1&#xff0c;就可以出0 分析if(…...

MySQL生产环境备份脚本

全量备份脚本&#xff0c;其中BakDir&#xff0c;ZlbakDir&#xff0c;LogFile需要自己创建 #!/bin/bash export LANGen_US.UTF-8# 指定备份目录 BakDir/root/beifen/data/mysqlbak/data/allbak # 指定增量备份目录 ZlbakDir/root/beifen/data/mysqlbak/data/zlbak # 备份日志…...

redis 怎么样删除list

在 Redis 中&#xff0c;可以使用以下方法删除列表或列表中的元素&#xff1a; 1. 删除整个列表 使用 DEL 命令删除一个列表键&#xff1a; DEL mylist这个命令会删除键 mylist 及其值&#xff08;无论 mylist 是一个列表还是其他类型的键&#xff09;。 2. 删除列表中的部分…...

uniapp小程序 slot中无法传递外部参数的解决方案

最近在封装一个List组件&#xff0c;外部传给我数据&#xff0c;我循环后将每个Item部分slot到外部&#xff0c;由调用者自己去写item布局&#xff0c;类似ElementUI、iView的Tabe列表。 List: <view v-if"list.length > 0" class"list-scroll__item&quo…...

Java面试之实现多线程(二)

此篇接上一篇Java面试之什么是多线程(一) Java多线程是Java语言中的一个重要特性&#xff0c;它可以实现并发处理、提高程序的性能和响应能力。开发者需要了解多线程的概念和机制&#xff0c;并采用合适的多线程编程模型和同步机制&#xff0c;以保证程序的正确性和稳定性。Jav…...

论文笔记:Treat Visual Tokens as Text? But Your MLLM Only Needs Fewer Efforts to See

2024 10月的arxiv 1 主要idea 针对多模态大模型&#xff08;如LLaVA&#xff09;&#xff0c;提出了一系列高效的剪枝策略 在显著降低计算开销&#xff08;多达 88%&#xff09;的同时&#xff0c;保持了模型在多模态任务中的性能表现 2 目前的问题 与文本 token 相比&…...

HDOJ 1735:字数统计 ← 贪心

【题目来源】https://acm.hdu.edu.cn/showproblem.php?pid1735【题目描述】 一天&#xff0c;淘气的 Tom 不小心将水泼到了他哥哥 Jerry 刚完成的作文上。原本崭新的作文纸顿时变得皱巴巴的&#xff0c;更糟糕的是由于水的关系&#xff0c;许多字都看不清了。可怜的 Tom 知道他…...

Java常用类(完整版)

其他类 Object类 超类、基类&#xff0c;所有类的直接或间接父类&#xff0c;位于继承树的最高层 任何类&#xff0c;如果没有书写extends显示继承某个类&#xff0c;都默认直接继承Object类 Object类中所定义的方法&#xff0c;是所有对象都具备的方法 Object类型可以存储…...

【JAVA】Java项目实战—Java SE进阶项目:在线考试系统

在数字化教育中&#xff0c;在线考试系统的需求日益增加。它不仅提高了考试的效率&#xff0c;还能方便学生随时随地进行学习和测试。Java作为一种强大的编程语言&#xff0c;因其平台无关性、丰富的类库和强大的社区支持&#xff0c;成为开发在线考试系统的理想选择。 在线考…...

仿iOS日历、飞书日历、Google日历的日模式

仿iOS日历、飞书日历、Google日历的日模式&#xff0c;24H内事件可自由上下拖动、自由拉伸。 以下是效果图&#xff1a; 具体实现比较简单&#xff0c;代码如下&#xff1a; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color;…...

机器人构建详解:售前售后服务客服机器人与广告生成机器人的微调数据处理方法

引言 大模型&#xff08;如BERT、GPT等&#xff09;在自然语言处理任务中展现了强大的能力&#xff0c;但为了使其更贴合特定应用场景&#xff0c;通常需要进行微调。本文将详细讲解如何为售前售后服务的客服机器人和广告生成机器人准备高质量的微调数据&#xff0c;并通过具体…...

【飞机纵向动力学建模与分析】

飞机纵向动力学建模与分析 文章目录 飞机纵向动力学建模与分析前言坐标系定义及转换机体坐标系定义机体坐标系定义气流角定义气流坐标系与机体坐标系相互转化 纵向动力学方程建立力的分解动力学方程的建立纵向动力学方程纵向动力学方程状态空间表达形式纵向运动分析短周期简化处…...

【机器人】控制之稳定性判定: 李雅普诺夫Lyapunov (7) 判定是否是李函数,思维导图

要判断一个函数 V(x)是否可以作为某个动力学方程的 Lyapunov 函数&#xff0c;需要满足特定的数学和物理条件。以下是详细说明&#xff1a; 1. 满足 Lyapunov 函数的基本条件 一个函数 V(x)能否作为 Lyapunov 函数&#xff0c;需要满足以下基本条件&#xff1a; 1.1 正定性 …...

Qwen 论文阅读记录

本文仅作自己初步熟悉大模型&#xff0c;梳理之用&#xff0c;慢慢会更改/增加/删除&#xff0c;部分细节尚未解释&#xff0c;希望不断学习之后&#xff0c;能够完善补充。若有同道之人&#xff0c;欢迎指正探讨。 关于后面的code-qwen and math-qwen&#xff0c;我个人认为依…...

ViewModel

ViewMode是MVVM架构模式中VM层对应的类&#xff0c;它的作用是存储界面数据&#xff0c;并和界面发生数据交互。ViewModel能感知生命周期&#xff0c;并且在界面由于配置问题发生重建时候&#xff0c;可以保持当前的数据不变。生命周期如下&#xff1a; ViewMode由ViewModePr…...

AI和SEO的完美结合关键词策略解析

内容概要 在当今数字营销环境中&#xff0c;AI与SEO的结合已成为提升网站流量和转化率的重要策略。为了更好地理解这一主题&#xff0c;本文将首先介绍AI技术在数字营销中的多种应用&#xff0c;其次分析SEO的基础知识和重要性&#xff0c;以便为后续讨论建立坚实的基础。 提示…...

网络基础 - TCP/IP 五层模型

文章目录 一、OSI 参考模型中各个分层的作用1、应用层2、表示层3、会话层4、传输层5、网络层6、数据链路层7、物理层 二、OSI 参考模型通信处理示例 一、OSI 参考模型中各个分层的作用 1、应用层 2、表示层 负责设备固有数据格式和网络标准数据格式间的转换 实际生活中&#…...

pyenv 管理多个 Python 版本(1)

引言 你是否曾希望参与一个支持多个 Python 版本的项目&#xff0c;但又不知道如何轻松地测试所有这些版本&#xff1f;你是否对 Python 的最新版本感到好奇&#xff1f;或许你想尝试这些新功能&#xff0c;但又不想冒险破坏你的开发环境。幸运的是&#xff0c;如果你使用 pyen…...

LLMs之ICL:《Bayesian scaling laws for in-context learning》翻译与解读

LLMs之ICL&#xff1a;《Bayesian scaling laws for in-context learning》翻译与解读 导读&#xff1a;这篇论文的核心议题是理解和建模大型语言模型&#xff08;LLM&#xff09;的上下文学习&#xff08;ICL&#xff09;能力。文章从贝叶斯学习的角度出发&#xff0c;提出了一…...

泷羽Sec学习笔记-Bp中ip伪造、爬虫审计

ip伪造与爬虫审计 ip伪造 下载插件&#xff1a;burpFakeIP 地址&#xff1a;GitHub - TheKingOfDuck/burpFakeIP: 服务端配置错误情况下用于伪造ip地址进行测试的Burp Suite插件 python版需要配置jython&#xff1a;下载地址&#xff1a;Maven Central: org.python:jython-…...

常用vim命令行-linux008

Vim 是一款功能强大的文本编辑器&#xff0c;广泛应用于编程、配置文件编辑以及日常文本处理。Vim 在其命令行模式下提供了丰富的操作命令&#xff0c;这些命令能够大幅提升编辑效率。以下是 Vim 中常用的命令及操作的总结&#xff0c;覆盖了 Vim 中的基本操作、查找、替换、文…...

Linux相关概念和易错知识点(24)(认识信号、信号捕捉)

目录 1.认识信号 &#xff08;1&#xff09;后台进程和前台进程 ①为什么Ctrl C能终止前台进程&#xff1f; ②如何终止这个后台程序&#xff1f; &#xff08;2&#xff09;信号、异步和同步 ①同步 ②异步 &#xff08;3&#xff09;信号的处理 2.信号捕捉 &#x…...

Scala的导入

//导入 //(1) 创建包&#xff1a;在src上右键&#xff0c;新建软件包 //(2)填写包名&#xff1a;小写 //(3)在包上右键&#xff0c;创建类。自动加入包名 //(4)导入。import 包名.类名 //导入多个类 //import jh.yuanlixueyuan.bigdata.scala03.{A,B,C} //导入包下的所有的类 /…...

strace,tcmalloc,asan使用

1、strace使用 1.1、编译strace strace开源库 解压strace-4.21.tar.xz 编译./configure --hostarm-ca9-linux-gnueabihf --prefix~/out make&&make install 1.2、参数 -c 统计每一系统调用的所执行的时间,次数和出错的次数等. -d 输出strace关于标准错误的调试信息…...

C++中多态性在实际项目中的应用场景;C++中面向对象编程实现数据隐藏的方法

1. C中多态性在实际项目中的应用场景 C中多态性是面向对象编程中的一个重要概念&#xff0c;它允许我们在使用基类指针或引用的情况下&#xff0c;调用派生类对象的特定方法。这种灵活性使得多态性在实际项目中有着广泛的应用场景&#xff0c;具体包括但不限于以下几个方面&am…...

【QT常用技术讲解】使用QMovie+QLabel播放gif动态图片,实现“正在加载”功能(源代码在资源中下载)

前言 界面在实现事件等待时&#xff0c;通过会显示一个转圈圈的动态图片&#xff0c;表示“正在加载”&#xff0c;事件完成之后关闭图片&#xff0c;QT中可以使用QMovieQLabel完成gif动态图片的播放及关闭的效果。 效果图 功能讲解 1、加载动画 void MainWindow::addloadgi…...

iPhone苹果相册视频怎么提取音频?

在数字时代&#xff0c;视频已成为我们记录生活、分享故事的重要方式。然而&#xff0c;有时候我们只想保留视频中的音频部分&#xff0c;比如一段动人的背景音乐或是一段珍贵的对话。那么&#xff0c;苹果相册视频怎么提取音频呢&#xff1f;本文将介绍三种简单且实用的方法&a…...

【PyTorch】动态调整学习率 torch.optim.lr_scheduler.StepLR 调度器

文章目录 1. torch.optim.lr_scheduler.StepLR 官方文档详解2. 使用示例2.1 官方提供使用示例2.2 自己写代码测试方法2.2.1 get_last_lr() 方法2.2.2 state_dict() 方法2.2.3 load_state_dict() 保存和加载调度器 3. 思考3.1 为什么需要state_dict()3.2 get_lr() 与 get_last_l…...

完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最左边的若干位置。若最…...

在销售管理中,客户跟进时会出现什么问题?如何解决?

客户跟进表是销售工作中重要的一部分&#xff0c;用于记录与客户的每次沟通、执行计划和合作动态。然而&#xff0c;在实际使用中&#xff0c;客户跟进表经常会出现一些问题&#xff0c;导致效率低下甚至客户流失。本文就从常见问题出发&#xff0c;一一提供措施&#xff0c;让…...

【代码随想录|动态规划】

一、动态规划理论基础 |、动态规划包含题目类型 &#xff08;1&#xff09;背包问题 &#xff08;2&#xff09;打家劫舍 &#xff08;3&#xff09;股票问题 &#xff08;4&#xff09;子序列问题 ||、做一道题需要掌握&#xff08;动态规划5步曲&#xff09;&#xff1…...

时间敏感网络与工业通信的融合:光路科技电力专用交换机和TSN工业交换机亮相EP电力展

12月7日&#xff0c;第三十一届中国国际电力设备及技术展览会&#xff08;EP Shanghai 2024&#xff09;暨上海国际储能技术应用展览会在上海新国际博览中心圆满落幕。本届展会以“数字能源赋能新质生产力”为主题&#xff0c;系统地呈现了电力设备行业在技术融合、转型升级及上…...

初识Linux · 系统编程done

目录 前言&#xff1a; 死锁 可重入函数 读写锁 自旋锁 前言&#xff1a; 本文作为Linux系统编程的收尾工作&#xff0c;介绍的是些零碎的概念&#xff0c;比如死锁&#xff0c;可重入函数&#xff0c;自旋锁&#xff0c;读写锁等&#xff0c;其中死锁概念要重要些&#…...

JavaScript函数式编程: 实现不可变数据结构

# JavaScript函数式编程: 实现不可变数据结构 什么是不可变数据结构 在计算机编程中&#xff0c;不可变数据结构指的是数据一旦创建就不可更改或者修改。这意味着我们不能在原始数据上进行增删改操作&#xff0c;而是需要创建一个新的数据结构来代替原始数据进行操作。 为什么要…...

union find算法 c++

1.原理参考 labuladong-fucking-algorithm/算法思维系列/UnionFind算法详解.md at master jiajunhua/labuladong-fucking-algorithm GitHub 2.初级模式 #include <iostream>class UF {public:// 记录连通分量/* 构造函数&#xff0c;n 为图的节点总数 */UF(int n) {…...

路径规划 | 改进的人工势场法APF算法进行路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 改进的人工势场法&#xff08;APF&#xff09;路径规划算法 在路径规划中&#xff0c;人工势场法&#xff08;APF&#xff09;是一种常见的方法&#xff0c;但传统的APF算法容易陷入局部极小值&#xff0c;导致路径规…...

ES语句——DSL(kibana语句)

一、查询操作 查看当前索引的数据结构 _mapping Get ai-open-log*/_mapping 查询当前索引下的文档数以及分片信息 _count Get ai-open-log*/_count { "count": 12345, //当前索引下的文档总数 "_shards": { //分片信息 "total&…...

y3编辑器教学5:触发器2 案例演示

文章目录 一、探索1.1 ECA1.1.1 ECA的定义1.1.2 使用触发器实现瞬间移动效果 1.2 变量1.2.1 什么是变量1.2.2 使用变量存储碎片收集数量并展现 1.3 if语句&#xff08;魔法效果挂接&#xff09;1.3.1 地形设置1.3.2 编写能量灌注逻辑1.3.3 编写能量灌注后&#xff0c;实现传送逻…...

MVC配置文件及位置

配置文件位置 默认位置 WEB-INF目录下&#xff0c;文件名&#xff1a;<servlet-name>-servlet.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi"http://www.w3.…...

【razor】echo搭配relay功能分析

echo 要搭配relay 实现作者说relay在linux上跑,可以模拟丢包、延迟目前没看到如何模拟。relay监听9200,有俩作用 echopeer1 发relay,replay 把peer1的包给peer2 ,实现p2p能力。 接收端:采集后发送发给relay的 接收端的地址就是自己,的地址就是本地的9200,因此是让relay接…...

C++类的运算符重载

目标 让自定义的类直接使用运算符运算 代码 头文件及类定义 #include <iostream>using namespace std; class Complex {int rel;int vir; public:void show(){cout <<"("<<this->rel<<","<<this->vir<<&quo…...

Motionface RTASR 离线实时语音识别直播字幕使用教程

软件使用场景&#xff1a; 直播、视频会议、课堂教学等需要实时字幕的场景。 1&#xff1a;系统要求 软件运行支持32位/64位windows 10/11系统&#xff0c;其他硬件要求无&#xff0c;无显卡也能实时识别字幕。 2&#xff1a;下载安装 链接:百度网盘 请输入提取码 提取码&#…...

【论文阅读】相似误差订正方法在风电短期风速预报中的应用研究

文章目录 概述&#xff1a;摘要1. 引言2. 相似误差订正算法&#xff08;核心&#xff09;3. 订正实验3.1 相似因子选取3.2 相似样本数试验3.3 时间窗时长实验 4. 订正结果分析4.1 评估指标对比4.2 风速曲线对比4.3 分风速段订正效果评估4.4 风速频率统计 5. 结论与讨论 概述&am…...

learn-(Uni-app)输入框u-search父子组件与input输入框(防抖与搜索触发)

1.父子组件u-search &#xff08;1&#xff09;父组件 <!-- 父组件 --> <template> <div><searchBar change"change" search"search"></searchBar> </div> </template> <script> // 子组件搜索 import…...