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协议的相关理解 -> 正文阅读

[网络协议]我对http协议的相关理解

一、浏览器输入 url 按回车背后经历了哪些?

1、浏览器地址栏输入url,先解析url,检测url地址是否合法

2、浏览器先看浏览器缓存-系统缓存-路由器缓存,如果缓存有,则直接跳页面显示内容,否则,直接跳到第三步操作

浏览器缓存:浏览器会记录 DNS 一段时间,因此,只是第一个地方解析 DNS 请求;

操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统, 获取操作系统的记录(保存最近的 DNS 查询缓存);

路由器缓存:如果上述两个步骤均不能成功获取 DNS 记录,继续搜索路由器缓存;

ISP 缓存:若上述均失败,继续向 ISP 搜索。

3、发送http请求前,需要域名解析(DNS解析),解析获取对应的IP地址

4、浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手

5、握手成功后,浏览器向服务器发送http请求,请求数据包

6、服务器处理收到的请求, 并将数据返回给浏览器

7、浏览器收到http响应

8、浏览器解码响应,如响应有缓存则存入

9、浏览器发送请求获取嵌入在 HTML 中的资源(html,css,javascript,图片, 音乐······),对于未知类型,会弹出对话框。
10、浏览器发送异步请求

11、页面全部渲染结束

上述过程我可以比喻成一个人质交易过程,浏览器相当于是人质家属,服务器相当于绑架犯,双方确定好交易地址,浏览器带着金钱(url)来交易,绑架犯小弟先检查是不是假钱,是不是合法,如果带来的是卡,就需要先验证卡里是否有存款,也就是上述第二步验证,如果验证通过,需要教研交易者身份,即域名解析,获取对应的ip地址也就是拿身份证证明自己确实是人质家属后,人质家属开始交易,为防止绑架犯耍诈,人质家属要求见人质,要确认人质的安全,也就是浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手的过程,绑架犯同意人质家属的要求,带出人质给其家属见面再给钱,这个即服务器处理收到的请求, 并将数据返回给浏览器,人质家属见到人质,即浏览器收到http响应,人质见到人质家属后,立马给人质解绑,绑架犯也放行,即浏览器解码响应,如响应有缓存则存入,人质家属发现安全后,开始准备报警并向警方提交相关犯罪资料,即浏览器发送请求获取嵌入在 HTML 中的资源(html,css,javascript,图片, 音乐······),对于未知类型,会弹出对话框。事前家属也告诉自己的孩子,要是自己没活着回来,就报警,即浏览器发送异步请求,最终故事结束,最终的结果看警察后面的处理,即页面全部渲染结束,效果看请求的url是啥样。

二、GET 和 POST 的区别

浏览器记忆及安全性:

1、get浏览器回退时无害,而POST会再次提交请求

2、get产生url地址可以被标记,而post不可以

3、get请求会被浏览器主动存储且请求参数会被完整的保留在浏览器历史记录里,而post不会,除非手动设置,且参数不会被保留

4、get比post更不安全,因为参数直接暴露在url上,故不便传递敏感信息

编码传参方式:

5、get请求只能进行url编码,而post支持多种编码方式

6、对参数类型,get只接受ASCLL字符,而post无限制

7、get参数通过url传递,post放在request body中(post请求也可以没有body)

以上可能是标准答案,但是我认为没有所谓真正的安全性可言,无论通过抓包或者f12的形式,都可以直接拿到请求的数据。实际真的区别在于:

简单的说:

get产生一个tcp数据包,而post产生2个

展开的说:

对于get,浏览器会把http header 和data一并发送出去,服务器响应200(返回数据)

对于post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)

这个打个比喻就相当于取钱和转账,取钱,我只要输入金额和密码,就可以从卡里那到钱

给陌生人转账,就需要先给输入转账金额,此时会弹出一个身份验证,填对对方身份后,再输入密码,则才可以转账成功

三、 cookies 机制和 session 机制的区别

1、cookies数据保存在客户端, session 数据保存在服务器端

2、cookies 可以减轻服务器压力,但是不安全,容易进行cookies欺骗

3、session 较安全,但占用服务器资源

四、http状态码

1、200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
2、201 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随 Location 头信息返回

3、202 服务器已接受请求,但尚未处理

4、301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应 (对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。

5、302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

6、303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。

7、304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。

8、305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。

9、307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

10、 401 当前请求需要用户验证。如果当前请求已经包含了 Authorization证书,那么 401 响应代表着服务器验证已经拒绝了那些证书

11、403 服务器已经理解请求,但是拒绝执行它。与 401 响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交

12、404 请求失败,请求所希望得到的资源未被在服务器上发现

13、500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。

14、501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。

15、 502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

16、503 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。


五、 http 协议请求方式

GET, POST 和 HEAD 方法、OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

六、http 和 https 区别

1、http是超文本传输协议,传输的数据都是未加密的,即明文的,故其存在隐私安全问题

2、连接方式不同:http的连接较简单,无状态;https协议是由 SSL+HTTP 协议构建的可进 行加密传输、身份认证的网络协议,比 http 协议安全

3、https=ssl+http

3.1 https 需要ca申请证书

3.2 ssl协议是用于对http协议传输的数据进行加密,也就是https

4、端口不同,http一般端口为80,https为443

七、HTTP 请求报文与响应报文格式

1、请求报文包含三部分:

a、请求行:包含请求方法、URI、HTTP 版本信息

b、请求头部(headers)字段

c、请求内容实体(body)

2、响应报文包含三部分:
a、状态行:包含 HTTP 版本、状态码、状态码的原因短语

b、响应头部(headers)字段
c、响应内容(body)实体

八、常见的 POST 提交数据方式

application/x-www-form-urlencoded:最常见的post数据提交方式,form 表单

multipart/form-data:适用表单文件上传

application/json:消息主体为序列化后的 JSON 字符串

text/xml:它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范

九、什么是 DNS?
域名解析服务。将主机名转换为 IP 地址。如将 http://www.cnblogs.com/主机 名转换为 IP 地址:211.137.51.78

类似于身份证证件号码,证明人的姓名,除了姓名,还可以直接报身份证号

十、无状态的定义

1、无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需 要前面的信息
2、无状态协议解决办法: 通过 Cookie /通过 Session 会话保存。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:59:41  更:2021-10-16 20:00:44 
 
开发: 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年9日历 -2024/9/29 7:54:45-

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