IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> http报文-https -> 正文阅读

[网络协议]http报文-https

DNS

提供解析域名和ip地址的服务

http报文内的http信息

报文主体与实体主体

报文的结构:报文由报文首部(请求行,请求首部,通用首部,实体首部),空行,报文主体组成。
差异:报文主体通常等于实体主体。只有当传输中进行编码操作时,实体在进行传输的时候要进行编译压缩,所以主体的内容发生变化,才导致它和报文主体产生差异。

多部份对象集合

http在发送请求时采用了mime机制,可以让通信的另一方处理解析文本,图片,视频等多个不同类型的数据。
包含对象如下:
multipart/form-data 在 Web 表单文件上传时使用。 multipart/byteranges 状态码 206(Partial Content,部分内容)响应报文包含了多个范 围的内容时使用。(对应发送的范围请求:即为把一个大文件拆分成几个小部分,每个部分一定的比特分块来进行传输) 如果无法响应,则会返回200和完整的实体内容

Content-type

用途:当http报文中使用多部份对象集合时,需要在首部加上Content-type

内容协商

是指客户端和服务器端就响应的资源内容进行交涉,然 后提供给客户端最为适合的资源
首部字段:Accept Accept-Charset Accept-Encoding Accept-Language Content-Language
协商技术类型:
服务器驱动协商(Server-driven Negotiation) 由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自 动处理。但对用户来说,以浏览器发送的信息作为判定的依据,并不 一定能筛选出最优内容。
客户端驱动协商(Agent-driven Negotiation) 由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手 动选择。还可以利用 JavaScript 脚本在 Web 页面上自动进行上述选 择。比如按 OS 的类型或浏览器类型,自行切换成 PC 版页面或手机 版页面。
透明协商(Transparent Negotiation) 是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进 行内容协商的一种方法。

返回结果的http状态码

200 OK 请求正常处理
204 NO Content 请求正常处理,但是返回的报文不含有实体的主体部分,浏览器页面不发生更新。
206 Partical Content 请求部分资源,在请求体中会由头Content-Range指定内容的范围。
301 Moved Permanently 永久重定向 例如你将一个文件从c盘移到了d盘,这时你的file协议标注的路径就会发生变化。可以通过服务器相应的Location字段看到资源新地址
302 Found 临时性重定向 相当于你收藏了一个网站在书签上,但是该网站有新地址了
303 See Other 相比于302 303不同点在于想让客户以get请求发送
304 Not Modified 未满足条件(请求头中含有If-Match,If-Modified- Since,If-None-Match,If-Range,If-Unmodified-Since 中任一首部)的情况
307 Temporary Redirect 跟302差不多
400 Bad Request 请求中有语法错误
401 Unauthorized 表示用户在发送请求时需要认证
403 Forbidden 服务器上有资源,不过拒绝访问
404 Not Found 服务器上没有资源
500 Internal Server Error 后端写接口写错了就报这个错
503 Service Unavailable 服务器超负荷工作,服务器没空理你

与http协作的web服务器

单台虚拟机实现多个域名

一个服务器可以使用虚拟主机建立多个http地址,但是他们解析出来的ip地址都是一样的。这样一来,如果使用http请求的话必须在Host头的内部完整指定主机名的uri。

代理 网关 隧道

作用:通信数据转发,配合服务器工作
代理: 有点类似于网络通信中的路由器,这里可以与es6中的Proxy进行联想,但是es6中的proxy是可以进行条件上的约束
代理的使用方法分类:是否使用缓存(代理转发响应时,缓存代理会预先将资源的副本缓存在服务器上。可以节省网络信道资源)和是否修改报文(透明代理,非透明代理)。
网关: 本质上是一个服务器,类似服务器的功能,主要任务是转发其他服务器数据
网关特点:能式通信线路上的服务器提供非http协议的服务。能在通信时对报文进行加密,提高安全性
隧道: 应用于相隔甚远的客户端与服务端两者之间进行中转,并保持双方通信连接的应用程序
特点:类似于将通信线路看作成一条隧道,隧道可以使用ssl等加密手段去进行通信

客户端的缓存

就是在一个请求过后将服务器的资源直接放在磁盘里面,等到下次请求资源时可以直接从磁盘上调用。
但是与代理端类似的,要定期向服务器请求最新的数据

http首部

组成:{
请求行(状态行)
请求首部字段(响应首部字段) 请求(响应)的附加内容,客户端信息,相应内容相关优先级信息
通用首部字段 请求报文和响应报文都会用到
实体首部字段 针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更 新时间等与实体有关的信
}

首部字段

组成:首部头字段名:字段值
首部字段跟的字段值可以一个也可以多个
Content-type: 表示报文主体的对象类型

非http 1.1首部字段

Cookie、Set-Cookie(用于cookie认证) 和 Content-Disposition等

End-to-end 首部和 Hop-by-hop 首部

假设从客户端到服务器之间通信要经过代理
**端到端:**在经过代理时,如果是缓存代理,缓存代理会将资源进行响应,但是端到端首部仍然继续发送到服务器
逐跳首部:经过有资源的代理首部,该代理首部服务器会将逐跳首部给抹去。
**逐跳首部有:**Connection Keep-Alive Proxy-Authenticate Proxy-Authorization Trailer TETransfer-Encoding Upgrade(其余都为端到端首部)

http1.1 通用首部字段

Cache-Control 缓存请求指令,客户端可以使用此头部要求服务器获取资源,自己存入磁盘中;服务器可以通过这个指令告诉缓存服务器需不需要对自己响应的资源做缓存

属性分析
public:所有用户凑可以使用缓存
private:指定用户可以使用缓存
no-cache:{
客户端:每次拿取资源都要从服务器拿取新鲜的资源。客户端没有对该属性进行赋值的功能
服务器:缓存服务器不能对资源进行缓存。当客户端收到服务器指定参数的no-cache报文以后,就不能使用缓存的资源,
}
no-store:请求或者响应中包含机密信息。
s-maxage:公共缓存服务器用于指定缓存的期限与认证的指令
max-age:{
客户端:跟指定秒数,只接收比此时间短的资源,否则直接向服务器拿资源
服务器:指定秒数,表示该资源能维持最新版本的最大时间
}
min-fresh:要求缓存服务器返回至少还未指定时间的缓存资源
max-stale:即使资源过期也要正常接收
only-if-cached:只要缓存服务器里面的资源,如果没有,就响应504
must-revalidate:代理再次向服务器验证自身缓存的资源有没有过期。如果请求不了,则代理向客户端发送504(网关时间耗尽)
proxy-revalidate:代理验证缓存的有效性
no-transform:缓存不能改变实体主体的媒体类型

Connection

属性:

  1. 跟首部字段名,可以将该首部字段名变为逐跳首部。
  2. 跟close或者Keep-Alive:长连接结束或者建立长链接

Pragma

属性:no-cache 针对http1.0以下版本,作用为不接受缓存

Trailer

作用:声明报文主体后记录了哪些首部字段

Upgrade

是否升级协议版本进行通信

Via

追踪请求传输路径
等等…这里不一一列举

确保web安全的https

加密方式:通过通信线路进行加密(SSL,TLS),通过对请求报文主体进行加密

https的优点

证明服务器身份:证书使用SSL可以看出服务器端的证书,一般在进行通信前客户端会进行确认证书再发送有价值的报文。
可以防止中间人攻击(证明报文完整性):使用md5和sha-1等散列值校验的方法。确认文件(主要适用于下载文件时使用的签名协议)用的数字签名方法(PGP)。
http+加密+认证+完整性保护=https
应用层上的http直接和传输层的tcp进行通信,但是https在接口部分使用ssl与tcp进行通信。实质上https就是身披ssl外壳的http。
https采用共享密钥加密以及公开密钥加密两者并用的混合加密方式。

https的安全通信机制

使用服务器端的公开密钥证书建立https通信的整个过程。
注意:这里的握手与tcpip的三次握手不一样,https通信的基础建立在tcpip的三次握手上(传输层),而http协议针对的是应用层中更高安全性保密性的传输。
第一次握手客户端发送报文给服务器:客户端先向服务端发送请求报文,报文中包含客户端支持的ssl指定版本,加密组件列表
第二次握手服务端响应报文发送给客户端:{
1. 报文内容包括ssl版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内容中筛选出来的
2. 服务器发送Certificates报文。报文中包含公开密钥证书
3. 最后服务器会发送一条发送完成的报文给客户端。这意味着最初阶段的ssl握手结束。
}
第三次握手客户端发送报文给服务器:{
1. 客户端以交换密钥报文作为回应。报文中包含随机密码串。该报文使用了第二次握手中的Certificates报文进行了加密。
2. 客户端发送改变密码标准协议报文,该报文会提示服务器:在此后的通信上面采用Pre-master secret密钥进行加密。
3. 客户端发送结束报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。
}
第四次握手服务器向客户端发送响应:{
服务器同样的发送改变密码标准协议报文
服务器发送完成报文。
}
服务器和客户端的finish报文交换完毕后,ssl连接就算建立完成,下面的步骤就是开始发送http请求
客户端向服务器发送http请求
服务器向客户端发送http响应
客户端与服务器之间进行通信…
通信完成后,由客户端断开连接。客户端发送 close_notify报文。这步之后再发送TCP FIN报文来关闭与TCP的通信(四次握手,结束传输层的通信连接)。
在以上过程中,报文都会附加一种叫做mac的报文摘要,mac能够查看报文是否收到篡改,从而保护报文的完整性。
缺点:https相比于http来说,需要消耗内存更多,需要的通信线路更多。此外,还需要每年向ca机构购买证书。所以,可以采取非敏感信息采用http,敏感信息采用https的通信方式。

确认访问用户身份的认证

梗概:讲述了机器如何确认屏幕前的使用者的身份。
Basic认证:每次请求都需要携带用户的身份信息(用户名,密码),首次请求,服务器会响应401提示输入。使用Base64编码方式,容易被破解。
DIGEST认证:客户端先向服务器发哦是那个认证要求;服务器向客户端发送质询码,客户端向服务器发送响应码。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 21:14:47  更:2022-10-08 21:16:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:32:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码