计算机网络-理论部分(二):应用层
网络应用体系结构
- Client-Server客户-服务器体系结构:如Web,FTP,Telnet等
- Peer-Peer:点对点P2P结构,如BitTorrent
应用层协议定义了:
- 交换的报文类型,请求or响应
- 报文类型的语法
- 字段的含义
- 如何发报文,以及响应规则
常见的应用类型有:Web,电子邮件,目录服务,流式视频、P2P
其中目录服务就是DNS解析,将网址转换为IP地址。
Web服务
Web采用的应用协议有
- HTTP(HyperText Transfer Protocol,超文本传输协议)
- HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议)。
HTTP以明文方式发送内容且没有提供任何形式的数据加密功能,在涉及敏感信息(如信用卡号、密码等支付相关内容)时存在安全隐患。HTTPS在HTTP基础上引入了SSL(Secure Sockets Layer)协议,并通过证书验证服务器身份以确保通信过程中数据得到合理保护和加密处理。
HTTP协议不保存任何Client相关信息,是无状态协议。如果要确认验证信息,可以加入Cookie来解决
发展
初始版本1.0,是非持续连接,每次请求都要建立连接,TCP连接建立和释放影响性能,所以改进提出了HTTP1.1,也是目前主流的HTTP协议。
非持续连接:每个请求/响应都是经单独的TCP发送
持续连接:每个请求/响应都是经过同一个TCP连接发送
持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。如果某个 HTTP 长连接超过一定时间没有任何数据交互,服务端就会主动断开这个连接。
不过目前都是使用HTTPS协议以保证安全。后续还更新了HTTP2.0和HTTP3.0,HTTP/2.0协议是基于HTTPS的,更加安全,但是目前使用的网站不太多。
Web缓存器
一个Web缓存器,也叫代理服务器,可以将请求过的数据缓存下来,供再次使用。Client可以先向代理服务器请求,如果代理服务器没有缓存,代理服务器就将请求发到服务器并缓存服务器的响应。如果有缓存则直接发给Client。
Web缓存器一般是有局部ISP购买安装,使用Web缓存器可以大大减少请求响应时间以及局部ISP链接到主干网的通信量。由此也催生出了提供CDN(Content Distribution Network)内容分发网络服务的服务商。
面试常见问题
- HTTP的报文
- 请求报文:请求行(请求方法、URL、协议版本)、请求头、空行、实体体。
- 常见请求头:Host,User-Agent
- 常见请求方法:POST,DELETE,PUT,GET
- 相应报文:状态行(协议版本、状态码、状态码描述)、响应头、空行、实体体。
- 常见响应头:Date,Content-Type,Content-Length
- 常见响应状态码:五个范围,1xx是提示收到,需要继续请求;2xx是成功;3xx是资源重定向;4xx是客户端错误;5xx是服务器错误
- 请求报文:请求行(请求方法、URL、协议版本)、请求头、空行、实体体。
- 四种请求方法各自作用和区别
- GET用于请求数据,对服务器资源无影响,浏览器一般会缓存GET请求结果;请求参数在URL中,安全性比较低。多个参数用&隔开,URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。
- POST用于提交数据,对服务器资源有影响,一般不会缓存;POST通过请求体传参,安全性较高。由于浏览器对URL有长度限制,所以GET请求数据大小限制严于POST请求。
- PUT是向服务端发送数据,请求修改服务端资源;但是不会新增资源。
- DELETE是请求删除服务端资源,
- HTTP和HTTPS区别
- HTTP1.1是明文传输,HTTPS有SSL加密,HTTP2.0是建立在HTTPS基础上的。
- HTTPS先建立连接,然后服务端发送证书给客户端;确认信任该证书后服务端再要求客户端发送证书并验证(双向身份验证)
DNS服务
DNS提供IP地址查询服务,全球有非常多的DNS服务器,形成层次结构。
除了上述DNS服务器外,局域ISA中还会提供本地DNS服务器,本地DNS服务器会维护一个DNS缓存,Client需要查询网站IP时,先找本地DNS服务器,如果本地DNS缓存中没有,本地DNS服务器会去找根服务器,根服务器根据域名情况返回对应的DNS服务器IP,本地DNS服务器再找对应DNS查询具体网站IP,最终返回IP地址。
DDoS攻击的原理即:向DNS服务器发送大量DNS请求,使得正常的DNS请求无法得到回复。
Socket套接字
传输层向应用层提供的接口。
通信需要两个信息:
- IP地址,用于查找目标终端
- 端口号,用于查找通信的进程
相关文章:
计算机网络-理论部分(二):应用层
网络应用体系结构 Client-Server客户-服务器体系结构:如Web,FTP,Telnet等Peer-Peer:点对点P2P结构,如BitTorrent 应用层协议定义了: 交换的报文类型,请求or响应报文类型的语法字段的含义如何…...
k8s1.31版本最新版本集群使用容器镜像仓库Harbor
虚拟机 rocky9.4 linux master node01 node02 已部署k8s集群版本 1.31 方法 一 使用容器部署harbor (1) wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce systemctl enable docker…...
QT中使用json格式存取矩阵数据
在 Qt 中,可以通过 QJsonDocument 和 QJsonArray 方便地存取 JSON 格式的矩阵数据。以下是存储和读取矩阵数据的完整实现示例。 1. 矩阵存储为 JSON 将矩阵(QVector<QVector<double>> 或其他二维数组)存储为 JSON 文件。 实现代码 #include <QJsonArray&g…...
k8s 集群安装
安装rockylinux https://www.jianshu.com/p/a5fe20318b8e https://www.cnblogs.com/haoee/p/18290506 配置VirtualBox双网卡 https://www.cnblogs.com/ShineLeBlog/p/17580311.html https://zhuanlan.zhihu.com/p/341328334 https://blog.csdn.net/qq_36544785/article/deta…...
Elasticsearch面试内容整理-核心概念与数据模型
在 Elasticsearch 中,理解核心概念与数据模型是非常重要的,因为它们定义了数据如何被组织、存储和搜索。以下是 Elasticsearch 的核心概念和数据模型的详细介绍。 核心概念 集群(Cluster) ● 集群是由一个或多个节点组成的,用于共同存储和搜索数据的集合。...
Spring Boot实现License生成和校验
Spring Boot实现License生成和校验 证书准备 # 1. 生成私钥库 # validity:私钥的有效期(天) # alias:私钥别称 # keystore:私钥库文件名称(生成在当前目录) # storepass:私钥库密码…...
es写入磁盘的过程以及相关优化
数据写入到内存buffer同时写入到数据到translog buffer,这是为了防止数据不会丢失每隔1s数据从buffer中refresh到FileSystemCache中,生成segment文件,这是因为写入磁盘的过程相对耗时,借助FileSystemCache,一旦生成segment文件,就能通过索引查询到了refresh完,memory bu…...
十大网络安全事件
一、私有云平台遭攻击,美国数千家公司工资难以发放 1月,专门提供劳动力与人力资本管理解决方案的美国克罗诺斯(Kronos)公司私有云平台遭勒索软件攻击,事件造成的混乱在数百万人中蔓延。 克罗诺斯母公司UKG集团…...
【数据结构】【线性表】栈的基本概念(附c语言源码)
栈的基本概念 讲基本概念还是回到数据结构的三要素:逻辑结构,物理结构和数据运算。 从逻辑结构来讲,栈的各个数据元素之间是通过是一对一的线性连接,因此栈也是属于线性表的一种从物理结构来说,栈可以是顺序存储和顺…...
修改ffmpeg实现https-flv内容加密
目录 1 前言 2 ffmpeg源码修改 2.1 增加头文件 2.2 http上下文增加解密密钥和AVAESCTR结构体 2.3 aes解密上下文初始化 2.4 对http数据部分解密 2.5 http关闭时清理资源 3 ffmpeg使用 1 前言 当前视频拉流已经通过URL鉴权方式来对访客身份进行识别和过滤,但…...
react中useMemo的使用场景
useMemo 是 React 的一个 Hook,用来优化性能,尤其是在计算复杂值时。它会记住(缓存)计算结果,只有在依赖项变化时才重新计算,避免不必要的重复计算。 import React, { useMemo } from react; function Ex…...
Pytorch自定义算子反向传播
文章目录 自定义一个线性函数算子如何实现反向传播 有关 自定义算子的实现前面已经提到,可以参考。本文讲述自定义算子如何前向推理反向传播进行模型训练。 自定义一个线性函数算子 线性函数 Y X W T B Y XW^T B YXWTB 定义输入M 个X变量,输出N个…...
aws服务(二)机密数据存储
在AWS(Amazon Web Services)中存储机密数据时,安全性和合规性是最重要的考虑因素。AWS 提供了多个服务和工具,帮助用户确保数据的安全性、机密性以及合规性。以下是一些推荐的存储机密数据的AWS服务和最佳实践: 一、A…...
VMware Workstation 17.6.1
概述 目前 VMware Workstation Pro 发布了最新版 v17.6.1: 本月11号官宣:针对所有人免费提供,包括商业、教育和个人用户。 使用说明 软件安装 获取安装包后,双击默认安装即可: 一路单击下一步按钮: 等待…...
高校企业数据挖掘平台推荐
TipDM数据挖掘建模平台是由广东泰迪智能科技股份有限公司自主研发打造的可视化、一站式、高性能的数据挖掘与人工智能建模服务平台,致力于为使用者打通从数据接入、数据预处理、模型开发训练、模型评估比较、模型应用部署到模型任务调度的全链路。平台内置丰富的机器…...
Vue项目开发 formatData 函数有哪些常用的场景?
formatData 不是 JavaScript 中的内建函数,它通常是一个自定义函数,用来格式化数据。不同的开发环境和框架中可能有不同的 formatData 实现方式。如果你指的是某个特定框架或者库中的 formatData,请提供更多的上下文信息。不过,以…...
【AI知识】两类最主流AI应用(文生图、ChatGPT)中的目标函数
之前写过一篇 【AI知识】了解两类最主流AI任务中的目标函数,介绍了AI最常见的两类任务【分类、回归】的基础损失函数【交叉熵、均方差】,以初步了解AI的训练目标。 本篇更进一步,聊一聊流行的“文生图”、“聊天机器人ChatGPT”模型中的目标函…...
【单片机基础】定时器/计数器的工作原理
单片机中的定时器/计数器(Timer/Counter)是用于时间测量和事件计数的重要模块。它们可以用来生成精确的延时、测量外部信号的频率或周期、捕获外部事件的时间戳等。理解定时器/计数器的工作原理对于单片机编程和系统设计非常重要。以下是定时器/计数器的…...
ModuleNotFoundError: No module named ‘distutils.msvccompiler‘ 报错的解决
报错 在conda 环境安装 numpy 时,出现报错 ModuleNotFoundError: No module named distutils.msvccompiler 解决 Python 版本过高导致的,降低版本到 Python 3.8 conda install python3.8即可解决。...
HCIA笔记2--ARP+ICMP+VRP基础
1. ARP ARP: 地址解析协议(address resolve protocol)。 网络数据包在通信的时候一般是使用 I P IP IP地址进行通信。 但是在封装数据链路层的时候是需要目标 m a c mac mac地址的。 而 A R P ARP ARP协议实现的功能就是根据 I P IP IP地址来获得 m a c mac mac地址。 1.1 a…...
SpringBoot与MongoDB深度整合及应用案例
SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域,NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB,作为一款领先的NoSQL数据库,以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…...
Redis模拟延时队列 实现日程提醒
使用Redis模拟延时队列 实际上通过MQ实现延时队列更加方便,只是在实际业务中种种原因导致最终选择使用redis作为该业务实现的中间件,顺便记录一下。 该业务是用于日程短信提醒,用户添加日程后,就会被放入redis队列中等待被执行发…...
vue项目中富文本编辑器的实现
文章目录 vue前端实现富文本编辑器的功能需要用到第三方库1. 安装包2.全局引入注册3.组件内使用4.图片缩放功能实现①安装包②注册并添加配置项③报错解决 vue前端实现富文本编辑器的功能需要用到第三方库 vue2使用vue-quill-editor,vue3使用vueup/vue-quill&#…...
nginx 配置lua执行shell脚本
1.需要nginx安装lua_nginx_module模块,这一步安装时,遇到一个坑,nginx执行configure时,一直提示./configure: error: unsupported LuaJIT version; ngx_http_lua_module requires LuaJIT 2.x。 网上一堆方法都试了,都…...
Keil+VSCode优化开发体验
目录 一、引言 二、详细步骤 1、编译器准备 2、安装相应插件 2.1 安装C/C插件 2.2 安装Keil相关插件 3、添加keil环境变量 4、加载keil工程文件 5、VSCode中成功添加工程文件后可能出现的问题 5.1 编码不一致问题 6、在VSCode中进行编译工程以及烧录程序 7、效果展示…...
vue2中引入cesium全步骤
1.npm 下载cesium建议指定版本下载,最新版本有兼容性问题 npm install cesium1.95.0 2.在node_models中找到cesium将此文件下的Cesium文件复制出来放在项目的静态资源public中或者static中,获取去github上去下载zip包放在本地也可以 3.在index.html中引…...
工程师 - 智能家居方案介绍
1. 智能家居硬件方案概述 智能家居硬件方案是实现家庭自动化的重要组件,通过集成各种设备来提升生活的便利性、安全性和效率。这些方案通常结合了物联网技术,为用户提供智能化、自动化的生活体验。硬件方案的选择直接影响到智能家居系统的性能、兼容性、…...
中小企业人事管理:SpringBoot框架高级应用
摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,中小企业人事管理系统当然也不能排除在外。中小企业人事管理系统是以实际运用为开发背景,运用软件工程原理和…...
嵌入式Linux驱动开发日记
目录 让我们从环境配置开始 目标平台 从Ubuntu开始 从交叉编译器继续 arm-linux-gnueabihf-gcc vscode 没学过ARM汇编 正文开始——速度体验一把 写一个链接脚本 写一个简单的Makefile脚本 使用正点原子的imxdownload下载到自己的SD卡上 更进一步的笔记和说明 从IM…...
迪杰特斯拉算法(Dijkstra‘s)
迪杰斯特拉算法(Dijkstras algorithm)是由荷兰计算机科学家艾兹格迪科斯彻(Edsger W. Dijkstra)在1956年提出的,用于在加权图中找到单个源点到所有其他顶点的最短路径的算法。这个算法广泛应用于网络路由、地图导航等领…...
网站建设优化服务器/seo优化关键词
2008/03/04skate 今天测试人员提出有某个人的个人空间的文章无法访问,因为这块是由存储过程来实现的,所以检查下存数过程 ORA-01422: 实际返回的行数超出请求的行数ORA-06512: 在 "PRO_USERARTICLE_MANAGE", line 202ORA-06512: 在 line 8 看来有重复额记录啊,经过…...
呼和浩特网站建设设计/百度店面定位怎么申请
来源 | 信风智库综合《九章算术》,是中国古代最早的数学专著,它的出现标志中国古代数学形成了完整的体系。借用《九章算术》之名,12月4日,中国科学技术大学宣布该校潘建伟团队成功构建“九章”量子计算原型机,实现了“…...
怎么样做网站页面/白度
系统环境变量加载顺序 /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc 1、/etc/profile和 /etc/paths是系统级别的,系统启动就会加载,所有用户共享。 2、如果~/.bash_profile文件存在,则后面的几个文件就…...
做游戏直播什么游戏视频网站好/百度权重怎么看
try catch finally 执行顺序 仅仅在下面4中情况下不会执行finally语句 : ①.如果在try 或catch语句中执行了System.exit(0)。 ②.在执行finally之前jvm崩溃了。 ③.try语句中执行死循环。 ④.电源断电。 1,无论try或catch,return几,fina…...
注册电气师在哪个网站做变更/百度软件下载安装
介绍 节假日api核心服务托管在阿里云与腾讯云之上,API天然分布式、高可用。 起步 如果您需要知道某个日期N个工作日之后是什么日子,您可以使用 GET 或者 POST 向下面的入口发起一个请求。 https://calc.ygcf.info/api/v1/workday/end如果您需要知道某两…...
做网站的任务书/指数基金怎么买才赚钱
某电商项目,存在若干问题,随便想了想,列举了一些。首要问题:业务和功能规划,总体技术架构(短期长期)。移动端代码,可能处于 失控状态。1.业务分析和设计没有,边做边想&am…...