Tag
HTTP
HTTP 强缓存与协商缓存:浏览器怎么知道要不要发请求
前言HTTP 缓存里最重要的两个概念是: 12强缓存:不问服务器,直接用本地缓存。协商缓存:问服务器资源变没变,没变就继续用本地缓存。 很多人会问: 浏览器怎么知道这次请求要不要走强缓存? 答案是: 浏览器第一次拿到响应时,会把响应体和响应头一起存下来;下次请求同一个资源前,根据之前保存的缓存规则判断缓存是否仍然新鲜。 1. 第一次请求时,浏览器存了什么第一...
浏览器输入 URL 到页面展示:一次完整网络请求发生了什么
前言“浏览器输入 URL 到页面展示发生了什么”是一个经典问题。 它看起来是在问浏览器,实际上是在串联整条网络链路: 123456789101112131415URL 解析 ↓缓存 ↓DNS ↓TCP ↓TLS ↓HTTP ↓服务端响应 ↓浏览器解析和渲染 以访问下面这个地址为例: 1https://example.com/page 1. 浏览器解析 URL...
HTTP/1.0、HTTP/1.1 与 HTTP/2:从短连接到长连接,再到多路复用
前言HTTP 的版本演进可以先压成一句话: 123HTTP/1.0:短连接为主,每次请求成本高。HTTP/1.1:默认长连接,复用 TCP 连接,但请求容易排队。HTTP/2:二进制分帧和多路复用,一个 TCP 连接里并发多个请求。 这篇文章围绕几个问题展开: HTTP/1.0 为什么慢? HTTP/1.1 的长连接解决了什么? 为什么 ...
HTTP 连接与多路复用:为什么说是 HTTP/2 支持多路复用,而不是 TCP
前言学习 HTTP 版本演进时,很容易遇到几个问题: HTTP 不是应用层协议吗,为什么总说它要建立连接? HTTP/1.1 的长连接,到底连接的是谁和谁? HTTP/2 支持多路复用,为什么不说 TCP 支持多路复用? HTTP/2 既然能多路复用,为什么还会有 TCP 队头阻塞? 这篇文章就围绕一个主线来讲: 123HTTP...
OSI 七层模型与 TCP/IP 四层模型:计算机网络分层到底怎么理解
前言刚开始学计算机网络,最常见的一张图就是: 1234567应用层表示层会话层传输层网络层数据链路层物理层 这张图很经典,但也很容易让人产生一个误会:好像只要背下七层名字,就算理解网络了。 其实分层模型真正想表达的不是“有几个层”,而是: 一次复杂的网络通信,可以拆成多个职责清晰、彼此协作的阶段。 只要抓住这个思路,再看 OSI 七层模型和 TCP/...
计算机网络学习地图:从分层模型到浏览器请求链路
前言学习计算机网络,最容易卡在两个地方: 知识点太多,协议名像一张散开的网。 只背概念,不知道它们在真实请求里站在哪一环。 所以这个专题的目标不是一口气背完所有协议,而是先建立一条主线: 1234567891011浏览器发起请求 ↓找到域名对应的 IP ↓建立连接 ↓传输请求和响应 ↓浏览器处理缓存、安全和跨域 ↓出现问题时能够定位是哪一层出了问题 1. 先...