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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 输入url到看到网页经历了什么 -> 正文阅读

[网络协议]输入url到看到网页经历了什么

URL解析

在这里插入图片描述

URL编码

例如 https://csdn.net?name=张三&from=https://www.baidu.com 这样的 url 中有中文和 url,他识别可能会出问题,所以要编码和解码。

  • 对整个 url 编码解码:encodeURIdecodeURI。处理空格、中文等
  • 对传参编码解码:encodeURIComponentdecodeURIComponent
let url = `https://csdn.net?name=${encodeURIComponent(张三)}&from=https${encodeURIComponent(://www.baidu.com)}`

缓存检测

缓存位置

  • Memory Cache 内存缓存
  • Disk Cache 硬盘缓存
    打开网页:查看硬盘缓存中是否存在,有则使用,没有则发送请求
    普通刷新:因为网页没关,所以内存缓存可以用,优先级更高
    强制刷新:内存缓存没了,并且会直接跳过硬盘缓存,直接发送请求,请求头中 Cache-control: no-cache,服务器返回内容。

在这里插入图片描述

强缓存

http1.0 用的是 Expire 字段
http1.1 用的是 Cache-control 字段 Cache-control: max-age=2590000
Cache-control 优先级更高
缺点是如果服务端资源更新了,但是客户端这边还没过期,他会使用这个过期的资源,得不到最新的资源。
解决方案:

  • 由于所有的资源 css、js、jpg 都是 html 引入的,所以 html 不做缓存,每次都去请求服务端返回,然后他引入的资源都带上例如时间戳这样的东西,这样名字不一样他就会更新了。
  • 或者用协商缓存

协商缓存

第一次请求后服务端返回 Last-Modified / ETag
客户端携带标识符 If-Modified-Since / If-None-Match 请求,如果资源更新了,返回 200 和新的资源;如果没更新,返回 304,客户端可以直接用缓存中的。

DNS

<link rel="dns-prefetch" href="xxx"></link>

TCP

三次握手

在这里插入图片描述

四次挥手

四次挥手为什么是四次,也就是说第二次挥手的时候为什么不是FIN+ACK一起发送。其实发送FIN的意思是终止这一方向的数据传输,而接收到FIN的意思是这一方向上已经没有数据可以接收了,但仍可以发送数据。第一次挥手:客户端向服务端发送FIN,客户端对服务端说:我已经没有数据要发送了,想结束连接,虽然你已经没有数据可接收了,但我知道数据发送是以数据流的形式传输的,所以如果你还有数据没发送完可以不用着急关闭,我等你。第二次挥手:服务端向客户端发送ACK。服务端对客户端说:老弟呀,你的请求我收到了哈,但我不能马上断开哈,还真让你说对了,我还真有点东西没发送完,但我不能一声不吭让你默默的等啊,我先给你发送个ACK吧。第三次挥手:服务端向客户端发送FIN。服务端对客户端说:艾玛终于搞完了,我这边也没数据要发送了,那我就把FIN给你发过去了哈,我也同意断开了。注意此时服务端并没有断开哦,它还在等最终确认。第四次挥手:客户端向服务端发送ACK。客户端对服务端说:你发的FIN我收到了,既然你那边也没东西要发送了,那咱就断开吧。此时服务端想:这货最后的ACK怎么还不到啊,我得拿到最后的ACK才能断开啊,迟迟不给我ACK的话是不是他没收到我的FIN啊,再不给我ACK我就再给他发一次FIN,反正我拿不到ACK我就一直给你发FIN,哼!刚说完服务端就拿到了ACK,开开心心的断开了连接。这时客户端想:这网络会不会靠不住啊,对面到底收没收到我的ACK啊,万一我的ACK丢包了咋办,要不我再等等吧,就等2MSL(这个时间是数据包往返客户端和服务端一次的最大时长)这么长时间,反正他如果没收到我的ACK还会向我发送FIN的。2MSL的时间过去了。客户端:咦,没有再次收到他的FIN,说明这货已经拿到了我的ACK断开了啊,那我也断开吧!至此,二者彻底断开了连接!

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

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