7
7
8
8
## OSI 和 TCP/IP 网络分层模型
9
9
10
- ### OSI 七层模型是什么?每一层的作用是什么?
10
+ ** 相关面试题 ** :
11
11
12
- [ OSI 七层模型详解] ( ./osi&tcp-ip-model.md#osi-七层模型 )
12
+ - OSI 七层模型是什么?每一层的作用是什么?
13
+ - TCP/IP 四层模型是什么?每一层的作用是什么?
14
+ - 为什么网络要分层?
13
15
14
- ### TCP/IP 四层模型是什么?每一层的作用是什么?
15
-
16
- [ TCP/IP 四层模型详解] ( ./osi&tcp-ip-model.md#tcp-ip-四层模型 )
17
-
18
- ### 为什么网络要分层?
19
-
20
- [ 为什么网络要分层?] ( ./osi&tcp-ip-model.md#为什么网络要分层 )
16
+ ** 参考答案** :[ OSI 和 TCP/IP 网络分层模型详解(基础)] ( ./osi&tcp-ip-model.md ) 。
21
17
22
18
## 应用层有哪些常见的协议?
23
19
@@ -158,13 +154,22 @@ FTP 是基于客户—服务器(C/S)模型而设计的,在客户端与 FTP
158
154
159
155
### TCP 三次握手和四次挥手
160
156
161
- [ TCP 三次握手和四次挥手(传输层)常见面试题总结 ] ( ./tcp-connection-and-disconnection.md )
157
+ ** 相关面试题 ** :
162
158
163
- ## 在浏览器中输入 url 地址 ->> 显示主页的过程(面试常客)
159
+ - 为什么要三次握手?
160
+ - 第 2 次握手传回了ACK,为什么还要传回SYN?
161
+ - 为什么要四次挥手?
162
+ - 为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?
163
+ - 如果第二次挥手时服务器的 ACK 没有送达客户端,会怎样?
164
+ - 为什么第四次挥手客户端需要等待 2\* MSL(报文段最长寿命)时间后才进入 CLOSED 状态?
164
165
165
- 百度好像最喜欢问这个问题 。
166
+ ** 参考答案 ** : [ TCP 三次握手和四次挥手(传输层) ] ( ./tcp-connection-and-disconnection.md ) 。
166
167
167
- > 打开一个网页,整个过程会使用哪些协议?
168
+ ## HTTP
169
+
170
+ ### 从输入URL 到页面展示到底发生了什么?
171
+
172
+ > 类似的问题:打开一个网页,整个过程会使用哪些协议?
168
173
169
174
图解(图片来源:《图解 HTTP》):
170
175
@@ -181,25 +186,28 @@ FTP 是基于客户—服务器(C/S)模型而设计的,在客户端与 FTP
181
186
5 . 浏览器解析渲染页面
182
187
6 . 连接结束
183
188
184
- 具体可以参考这篇文章:[ https://segmentfault.com/a/1190000006879700 ] ( https://segmentfault.com/a/1190000006879700 ) 。
189
+ 具体可以参考下面这两篇文章:
190
+
191
+ - [[ 从输入URL到页面加载发生了什么?] ( https://segmentfault.com/a/1190000006879700 )] ( https://segmentfault.com/a/1190000006879700 )
192
+ - [ 浏览器从输入网址到页面展示的过程] ( https://cloud.tencent.com/developer/article/1879758 )
185
193
186
- ## HTTP 状态码有哪些?
194
+ ### HTTP 状态码有哪些?
187
195
188
196
HTTP 状态码用于描述 HTTP 请求的结果,比如2xx 就代表请求被成功处理。
189
197
190
198
![ HTTP 状态码] ( https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019/7/状态码.png )
191
199
192
200
关于 HTTP 状态码更详细的总结,可以看我写的这篇文章:[ HTTP 常见状态码总结(应用层)] ( ./http-status-codes.md ) 。
193
201
194
- ## HTTP 和 HTTPS 有什么区别?
202
+ ### HTTP 和 HTTPS 有什么区别?
195
203
196
204
- ** 端口号** :HTTP 默认是 80,HTTPS 默认是 443。
197
205
- ** URL 前缀** :HTTP 的 URL 前缀是 ` http:// ` ,HTTPS 的 URL 前缀是 ` https:// ` 。
198
206
- ** 安全性和资源消耗** : HTTP 协议运行在 TCP 之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。
199
207
200
208
关于 HTTP 和 HTTPS 更详细的对比总结,可以看我写的这篇文章:[ HTTP vs HTTPS(应用层)] ( ./http&https.md ) 。
201
209
202
- ## HTTP 1.0 和 HTTP 1.1 有什么区别?
210
+ ### HTTP 1.0 和 HTTP 1.1 有什么区别?
203
211
204
212
- ** 连接方式** : HTTP 1.0 为短连接,HTTP 1.1 支持长连接。
205
213
- ** 状态响应码** : HTTP/1.1中新加入了大量的状态码,光是错误响应状态码就新增了24种。比如说,` 100 (Continue) ` ——在请求大资源前的预热请求,` 206 (Partial Content) ` ——范围请求的标识码,` 409 (Conflict) ` ——请求与当前资源的规定冲突,` 410 (Gone) ` ——资源已被永久转移,而且没有任何已知的转发地址。
@@ -209,7 +217,7 @@ HTTP 状态码用于描述 HTTP 请求的结果,比如2xx 就代表请求被
209
217
210
218
关于 HTTP 1.0 和 HTTP 1.1 更详细的对比总结,可以看我写的这篇文章:[ HTTP 1.0 vs HTTP 1.1(应用层)] ( ./http1.0&http1.1.md ) 。
211
219
212
- ## HTTP 是不保存状态的协议, 如何保存用户状态?
220
+ ### HTTP 是不保存状态的协议, 如何保存用户状态?
213
221
214
222
HTTP 是一种不保存状态,即无状态(stateless)协议。也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。那么我们保存用户状态呢?Session 机制的存在就是为了解决这个问题,Session 的主要作用就是通过服务端记录用户的状态。典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了(一般情况下,服务器会在一定时间内保存这个 Session,过了时间限制,就会销毁这个 Session)。
215
223
@@ -221,16 +229,6 @@ HTTP 是一种不保存状态,即无状态(stateless)协议。也就是说
221
229
222
230
![ HTTP是无状态协议] ( https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/HTTP是无状态的.png )
223
231
224
- ## Cookie 的作用是什么? 和 Session 有什么区别?
225
-
226
- Cookie 和 Session 都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。
227
-
228
- ** Cookie 一般用来保存用户信息** 比如 ① 我们在 Cookie 中保存已经登录过的用户信息,下次访问网站的时候页面可以自动帮你把登录的一些基本信息给填了;② 一般的网站都会有保持登录,也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);③ 登录一次网站后访问网站其他页面不需要重新登录。** Session 的主要作用就是通过服务端记录用户的状态。** 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。
229
-
230
- Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。
231
-
232
- Cookie 存储在客户端中,而 Session 存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密,然后使用到的时候再去服务器端解密。
233
-
234
232
## URI 和 URL 的区别是什么?
235
233
236
234
* URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
0 commit comments