27
27
28
28
![ osi七层模型2] ( https://oss.javaguide.cn/github/javaguide/osi七层模型2.png )
29
29
30
- #### TCP /IP 四层模型是什么?每一层的作用是什么?
30
+ #### ⭐️TCP /IP 四层模型是什么?每一层的作用是什么?
31
31
32
32
** TCP/IP 四层模型** 是目前被广泛采用的一种模型,我们可以将 TCP / IP 模型看作是 OSI 七层模型的精简版本,由以下 4 层组成:
33
33
40
40
41
41
![ TCP/IP 四层模型] ( https://oss.javaguide.cn/github/javaguide/cs-basics/network/tcp-ip-4-model.png )
42
42
43
- 关于每一层作用的详细介绍,请看 [ OSI 和 TCP/IP 网络分层模型详解(基础)] ( ./ osi-and-tcp-ip-model.md ) 这篇文章。
43
+ 关于每一层作用的详细介绍,请看 [ OSI 和 TCP/IP 网络分层模型详解(基础)] ( https://javaguide.cn/cs-basics/network/ osi-and-tcp-ip-model.html ) 这篇文章。
44
44
45
45
#### 为什么网络要分层?
46
46
64
64
65
65
### 常见网络协议
66
66
67
- #### 应用层有哪些常见的协议 ?
67
+ #### ⭐️应用层有哪些常见的协议 ?
68
68
69
69
![ 应用层常见协议] ( https://oss.javaguide.cn/github/javaguide/cs-basics/network/application-layer-protocol.png )
70
70
100
100
101
101
## HTTP
102
102
103
- ### 从输入 URL 到页面展示到底发生了什么?(非常重要)
103
+ ### ⭐️从输入 URL 到页面展示到底发生了什么?(非常重要)
104
104
105
105
> 类似的问题:打开一个网页,整个过程会使用哪些协议?
106
106
@@ -120,15 +120,15 @@ tag:
120
120
6 . 浏览器收到 HTTP 响应报文后,解析响应体中的 HTML 代码,渲染网页的结构和样式,同时根据 HTML 中的其他资源的 URL(如图片、CSS、JS 等),再次发起 HTTP 请求,获取这些资源的内容,直到网页完全加载显示。
121
121
7 . 浏览器在不需要和服务器通信时,可以主动关闭 TCP 连接,或者等待服务器的关闭请求。
122
122
123
- 详细介绍可以查看这篇文章:[ 访问网页的全过程(知识串联)] ( ./ the-whole-process-of-accessing-web-pages.md ) (强烈推荐)。
123
+ 详细介绍可以查看这篇文章:[ 访问网页的全过程(知识串联)] ( https://javaguide.cn/cs-basics/network/ the-whole-process-of-accessing-web-pages.html ) (强烈推荐)。
124
124
125
- ### HTTP 状态码有哪些?
125
+ ### ⭐️HTTP 状态码有哪些?
126
126
127
127
HTTP 状态码用于描述 HTTP 请求的结果,比如 2xx 就代表请求被成功处理。
128
128
129
129
![ 常见 HTTP 状态码] ( https://oss.javaguide.cn/github/javaguide/cs-basics/network/http-status-code.png )
130
130
131
- 关于 HTTP 状态码更详细的总结,可以看我写的这篇文章:[ HTTP 常见状态码总结(应用层)] ( ./ http-status-codes.md ) 。
131
+ 关于 HTTP 状态码更详细的总结,可以看我写的这篇文章:[ HTTP 常见状态码总结(应用层)] ( https://javaguide.cn/cs-basics/network/ http-status-codes.html ) 。
132
132
133
133
### HTTP Header 中常见的字段有哪些?
134
134
@@ -167,7 +167,7 @@ HTTP 状态码用于描述 HTTP 请求的结果,比如 2xx 就代表请求被
167
167
| Via | 向服务器告知,这个请求是由哪些代理发出的。 | Via: 1.0 fred, 1.1 example.com (Apache/1.1) |
168
168
| Warning | 一个一般性的警告,告知,在实体内容体中可能存在错误。 | Warning: 199 Miscellaneous warning |
169
169
170
- ### HTTP 和 HTTPS 有什么区别?(重要)
170
+ ### ⭐️HTTP 和 HTTPS 有什么区别?(重要)
171
171
172
172
![ HTTP 和 HTTPS 对比] ( https://oss.javaguide.cn/github/javaguide/cs-basics/network/http-vs-https.png )
173
173
@@ -176,7 +176,7 @@ HTTP 状态码用于描述 HTTP 请求的结果,比如 2xx 就代表请求被
176
176
- ** 安全性和资源消耗** :HTTP 协议运行在 TCP 之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。
177
177
- ** SEO(搜索引擎优化)** :搜索引擎通常会更青睐使用 HTTPS 协议的网站,因为 HTTPS 能够提供更高的安全性和用户隐私保护。使用 HTTPS 协议的网站在搜索结果中可能会被优先显示,从而对 SEO 产生影响。
178
178
179
- 关于 HTTP 和 HTTPS 更详细的对比总结,可以看我写的这篇文章:[ HTTP vs HTTPS(应用层)] ( ./ http-vs-https.md ) 。
179
+ 关于 HTTP 和 HTTPS 更详细的对比总结,可以看我写的这篇文章:[ HTTP vs HTTPS(应用层)] ( https://javaguide.cn/cs-basics/network/ http-vs-https.html ) 。
180
180
181
181
### HTTP/1.0 和 HTTP/1.1 有什么区别?
182
182
@@ -188,9 +188,9 @@ HTTP 状态码用于描述 HTTP 请求的结果,比如 2xx 就代表请求被
188
188
- ** 带宽** :HTTP/1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP/1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是 206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
189
189
- ** Host 头(Host Header)处理** : HTTP /1.1 引入了 Host 头字段,允许在同一 IP 地址上托管多个域名,从而支持虚拟主机的功能。而 HTTP/1.0 没有 Host 头字段,无法实现虚拟主机。
190
190
191
- 关于 HTTP/1.0 和 HTTP/1.1 更详细的对比总结,可以看我写的这篇文章:[ HTTP/1.0 vs HTTP/1.1(应用层)] ( ./ http1.0-vs-http1.1.md ) 。
191
+ 关于 HTTP/1.0 和 HTTP/1.1 更详细的对比总结,可以看我写的这篇文章:[ HTTP/1.0 vs HTTP/1.1(应用层)] ( https://javaguide.cn/cs-basics/network/ http1.0-vs-http1.1.html ) 。
192
192
193
- ### HTTP /1.1 和 HTTP/2.0 有什么区别?
193
+ ### ⭐️HTTP /1.1 和 HTTP/2.0 有什么区别?
194
194
195
195
![ HTTP/1.0 和 HTTP/1.1 对比] ( https://oss.javaguide.cn/github/javaguide/cs-basics/network/http1.1-vs-http2.0.png )
196
196
@@ -256,7 +256,7 @@ HTTP/1.1 队头阻塞的主要原因是无法多路复用:
256
256
| ** 缓解方法** | 开启多个并行的 TCP 连接 | 减少网络掉包或者使用基于 UDP 的 QUIC 协议 |
257
257
| ** 影响场景** | 每次都会发生,尤其是大文件阻塞小文件时。 | 丢包率较高的网络环境下更容易发生。 |
258
258
259
- ### HTTP 是不保存状态的协议, 如何保存用户状态?
259
+ ### ⭐️HTTP 是不保存状态的协议, 如何保存用户状态?
260
260
261
261
HTTP 协议本身是 ** 无状态的 (stateless)** 。这意味着服务器默认情况下无法区分两个连续的请求是否来自同一个用户,或者同一个用户之前的操作是什么。这就像一个"健忘"的服务员,每次你跟他说话,他都不知道你是谁,也不知道你之前点过什么菜。
262
262
@@ -326,9 +326,9 @@ URI 的作用像身份证号一样,URL 的作用更像家庭住址一样。URL
326
326
327
327
### Cookie 和 Session 有什么区别?
328
328
329
- 准确点来说,这个问题属于认证授权的范畴,你可以在 [ 认证授权基础概念详解] ( ../.. /system-design/security/basis-of-authority-certification.md ) 这篇文章中找到详细的答案。
329
+ 准确点来说,这个问题属于认证授权的范畴,你可以在 [ 认证授权基础概念详解] ( https://javaguide.cn /system-design/security/basis-of-authority-certification.html ) 这篇文章中找到详细的答案。
330
330
331
- ### GET 和 POST 的区别
331
+ ### ⭐️GET 和 POST 的区别
332
332
333
333
这个问题在知乎上被讨论的挺火热的,地址:< https://www.zhihu.com/question/28586791 > 。
334
334
@@ -365,7 +365,7 @@ WebSocket 协议本质上是应用层的协议,用于弥补 HTTP 协议在持
365
365
- 社交聊天
366
366
- ......
367
367
368
- ### WebSocket 和 HTTP 有什么区别?
368
+ ### ⭐️WebSocket 和 HTTP 有什么区别?
369
369
370
370
WebSocket 和 HTTP 两者都是基于 TCP 的应用层协议,都可以在网络中传输数据。
371
371
@@ -387,7 +387,7 @@ WebSocket 的工作过程可以分为以下几个步骤:
387
387
388
388
另外,建立 WebSocket 连接之后,通过心跳机制来保持 WebSocket 连接的稳定性和活跃性。
389
389
390
- ### WebSocket 与短轮询、长轮询的区别
390
+ ### ⭐️WebSocket 与短轮询、长轮询的区别
391
391
392
392
这三种方式,都是为了解决"** 客户端如何及时获取服务器最新数据,实现实时更新** "的问题。它们的实现方式和效率、实时性差异较大。
393
393
@@ -422,7 +422,7 @@ WebSocket 的工作过程可以分为以下几个步骤:
422
422
423
423
![ Websocket 示意图] ( https://oss.javaguide.cn/github/javaguide/system-design/web-real-time-message-push/1460000042192394.png )
424
424
425
- ### SSE 与 WebSocket 有什么区别?
425
+ ### ⭐️SSE 与 WebSocket 有什么区别?
426
426
427
427
SSE (Server-Sent Events) 和 WebSocket 都是用来实现服务器向浏览器实时推送消息的技术,让网页内容能自动更新,而不需要用户手动刷新。虽然目标相似,但它们在工作方式和适用场景上有几个关键区别:
428
428
@@ -446,7 +446,7 @@ SSE (Server-Sent Events) 和 WebSocket 都是用来实现服务器向浏览器
446
446
447
447
这里以 DeepSeek 为例,我们发送一个请求并打开浏览器控制台验证一下:
448
448
449
- ![ ] ( https://oss.javaguide.cn/github/javaguide/cs-basics/network/deepseek-sse.png )
449
+ ![ DeepSeek 响应标头 ] ( https://oss.javaguide.cn/github/javaguide/cs-basics/network/deepseek-sse.png )
450
450
451
451
![ ] ( https://oss.javaguide.cn/github/javaguide/cs-basics/network/deepseek-sse-eventstream.png )
452
452
@@ -521,9 +521,9 @@ DNS 服务器自底向上可以依次分为以下几个层级(所有 DNS 服务
521
521
522
522
世界上并不是只有 13 台根服务器,这是很多人普遍的误解,网上很多文章也是这么写的。实际上,现在根服务器数量远远超过这个数量。最初确实是为 DNS 根服务器分配了 13 个 IP 地址,每个 IP 地址对应一个不同的根 DNS 服务器。然而,由于互联网的快速发展和增长,这个原始的架构变得不太适应当前的需求。为了提高 DNS 的可靠性、安全性和性能,目前这 13 个 IP 地址中的每一个都有多个服务器,截止到 2023 年底,所有根服务器之和达到了 1700 多台,未来还会继续增加。
523
523
524
- ### DNS 解析的过程是什么样的?
524
+ ### ⭐️DNS 解析的过程是什么样的?
525
525
526
- 整个过程的步骤比较多,我单独写了一篇文章详细介绍:[ DNS 域名系统详解(应用层)] ( ./ dns.md ) 。
526
+ 整个过程的步骤比较多,我单独写了一篇文章详细介绍:[ DNS 域名系统详解(应用层)] ( https://javaguide.cn/cs-basics/network/ dns.html ) 。
527
527
528
528
### DNS 劫持了解吗?如何应对?
529
529
0 commit comments