网络原理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一样

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/935485.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTTP 状态码大全

常见状态码 200 OK # 客户端请求成功 400 Bad Request # 客户端请求有语法错误 不能被服务器所理解 401 Unauthorized # 请求未经授权 这个状态代码必须和WWW- Authenticate 报头域一起使用 403 Forbidden # 服务器收到请求但是拒绝提供服务 404 Not Found # 请求资源不存…

Ajax--实现检测用户名是否存在功能

目录 &#xff08;一&#xff09;什么是Ajax &#xff08;二&#xff09;同步交互与异步交互 &#xff08;三&#xff09;AJAX常见应用情景 &#xff08;四&#xff09;AJAX的优缺点 &#xff08;五&#xff09;使用jQuery实现AJAX 1.使用JQuery中的ajax方法实现步骤&#xf…

unique_ptr自定义删除器,_Compressed_pair利用偏特化减少存储的一些设计思路

主要是利用偏特化&#xff0c; 如果自定义删除器是空类&#xff08;没有成员变量&#xff0c;可以有成员函数&#xff09;&#xff1a; _Compressed_pair会继承删除器&#xff08;删除器作为基类&#xff09;&#xff0c;但_Compressed_pair里不保存删除器对象&#xff0c;只…

AGCRN论文解读

一、创新点 传统GCN只能基于静态预定义图建模全局共享模式&#xff0c;而AGCRN通过两种GCN的增强模块&#xff08;NAPL、DAGG&#xff09;实现了更精细的节点特性学习和图结构生成。 1 节点自适应参数学习模块&#xff08;NAPL&#xff09; 传统GCN通过共享参数&#xff08;权重…

使用观测云排查数据库死锁故障

故障发现 核心应用 pod 发生重启&#xff0c;同时接收到对应使用者反馈业务问题&#xff0c;开始排查。 观测云排查现场 1、根据重启应用信息&#xff0c;查询 APM 执行数据库 update 操作大量报错&#xff0c;执行时间在 5min 以上。 分析 APM 链路异常&#xff0c;发现是触…

UNIX数据恢复—UNIX系统常见故障问题和数据恢复方案

UNIX系统常见故障表现&#xff1a; 1、存储结构出错&#xff1b; 2、数据删除&#xff1b; 3、文件系统格式化&#xff1b; 4、其他原因数据丢失。 UNIX系统常见故障解决方案&#xff1a; 1、检测UNIX系统故障涉及的设备是否存在硬件故障&#xff0c;如果存在硬件故障&#xf…

npm或yarn包配置地址源

三种方法 1.配置.npmrc 文件 在更目录新增.npmrc文件 然后写入需要访问的包的地址 2.直接yarn.lock文件里面修改地址 简单粗暴 3.yarn install 的时候添加参数 设置包的仓库地址 yarn config set registry https://registry.yarnpkg.com 安装&#xff1a;yarn install 注意…

opencv——图片矫正

图像矫正 图像矫正的原理是透视变换&#xff0c;下面来介绍一下透视变换的概念。 听名字有点熟&#xff0c;我们在图像旋转里接触过仿射变换&#xff0c;知道仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程&#xff0c;转换过程坐标点的相对位置和属性不发生变换&a…

【学习】企业通过CMMI认证,还需要申请CSMM资质吗

​ 企业通过CMMI认证之后&#xff0c;是否还有必要申请CSMM资质&#xff1f;这是一个值得软件企业深思的问题。虽然CMMI和CSMM都在组织的软件过程改进和认证方面发挥着重要作用&#xff0c;但它们各自拥有自己的特点在。企业需要根据自身发展需求来选择适合的认证方式。首先我…

OpenHarmony-3.HDF input子系统(5)

HDF input 子系统OpenHarmony-4.0-Release 1.Input 概述 输入设备是用户与计算机系统进行人机交互的主要装置之一&#xff0c;是用户与计算机或者其他设备通信的桥梁。常见的输入设备有键盘、鼠标、游戏杆、触摸屏等。本文档将介绍基于 HDF_Input 模型的触摸屏器件 IC 为 GT91…

BurpSuite之移动端流量抓包

学习视频来自B站UP主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记只是方便学习&#xff0c;以下内容只涉及学习内容&#xff0c;切莫逾越法律红线。 安全见闻&#xff0c;包含了各种网络安全&#xff0c;网络技术&#xff0c;旨在明白自己的渺小&#xff0c;知识的广博&a…

Any2Policy: Learning Visuomotor Policy with Any-Modality(类似AnyGPT)

发表时间&#xff1a;NeurIPS 2024 论文链接&#xff1a;https://readpaper.com/pdf-annotate/note?pdfId2598959255168534016&noteId2598960522854466816 作者单位&#xff1a;Midea Group Motivation&#xff1a;Current robotic learning methodologies often focus…

QTreeView 与 QTreeWidget 例子

1. 先举个例子 1班有3个学生&#xff1a;张三、李四、王五 4个学生属性&#xff1a;语文 数学 英语 性别。 语文 数学 英语使用QDoubleSpinBox* 编辑&#xff0c;范围为0到100,1位小数 性别使用QComboBox* 编辑&#xff0c;选项为&#xff1a;男、女 实现效果&#xff1a; 2…

计算机视觉与医学的结合:推动医学领域研究的新机遇

目录 引言医学领域面临的发文难题计算机视觉与医学的结合&#xff1a;发展趋势计算机视觉结合医学的研究方向高区位参考文章结语 引言 计算机视觉&#xff08;Computer Vision, CV&#xff09;技术作为人工智能的重要分支&#xff0c;已经在多个领域取得了显著的应用成果&…

谷粒商城—分布式基础

1. 整体介绍 1)安装vagrant 2)安装Centos7 $ vagrant init centos/7 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on…

麒麟系统+达梦数据库+MybatisPlus+Redis+SpringBoot

环境准备 麒麟系统 在麒麟系统官网进行下载镜像 这里选择的是麒麟V10桌面版&#xff0c;使用虚拟机启动 修改root密码 # 启动到单用户模式 init 1 # 修改 root 密码 passwd root # 重启 reboot达梦数据库准备 进入达梦官网 我这里选择的是达梦数据库管理系统DM8开发版 下…

DFC:控制 ~~到达率~~ 最小化等待时间

DFC&#xff1a;控制 到达率 最小化等待时间 计算节点的等待成本&#xff1a;公式&#xff08;2&#xff09; ( λ i λ ( W q i C i μ c i ‾ ) ) (\frac{\lambda_i}{\lambda}(W_q^i C_i\overline{\mu_c^i})) (λλi​​(Wqi​Ci​μci​​)) 在这个到达率下的等待时间&am…

单词翻转

单词翻转 C语言实现C实现Java实现Python实现 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 输入一个句子&#xff08;一行&#xff09;&#xff0c;将句子中的每一个单词翻转后输出。 输入 只有一行&#xff0c;为一个字符串&#xff0c…

数据分析实战—房价特征关系

1.实战内容 &#xff08;1&#xff09; 读取房价特征关系表&#xff08;house_price.npz&#xff09;绘制离地铁站的距离与单位面积的房价的散点图&#xff0c;并对其进行分析&#xff1b; import pandas as pd import numpy as np import warnings warnings.filterwarnings(&…

网页502 Bad Gateway nginx1.20.1报错与解决方法

目录 网页报错的原理 查到的502 Bad Gateway报错的原因 出现的问题和尝试解决 问题 解决 网页报错的原理 网页显示502 Bad Gateway 报错原理是用户访问服务器时&#xff0c;nginx代理服务器接收用户信息&#xff0c;但无法反馈给服务器&#xff0c;而出现的报错。 查到…