计算机网络基础
一、TCP
1.1 TCP 三次握手
1.2 TCP 为什么是可靠的?
1.3 说下你对 TCP 对头阻塞的理解? 如何解决对头阻塞?
二、UDP
2.1 UDP如何做到可靠,站在自己设计的角度来讲
三、HTTP
3.1 如何取消 Axios 请求
3.2 HTTP Keep-Alive 的作用?
3.3 304 状态码 与 浏览器缓存机制?
3.4 301、302、307、308 状态码的含义?
3.5 HTTP 1.1 / HTTP 2 / HTTP 3 的区别?
3.6 为什么说利用多个域名来存储网站资源会更有效?
答: 浏览器规定,同域名下资源请求存在最大并发数
3.7 说下你对 HTTP 对头阻塞的理解?如何解决对头阻塞?
四、HTTPS
4.1 为什么需要CA机构对证书签名?
4.2 https验证身份也就是TSL/SSL身份验证的过程?
4.3 https用哪些端口进行通信,这些端口分别有什么用?
4.4 身份验证过程中会涉及到密钥, 对称加密,非对称加密,摘要的概念,请解释一下
五、网络安全
5.1 XSS 攻击
答: XSS
(跨站脚本攻击)是指攻击者在返回的 HTML
中嵌入 Javascript
脚本,为了减轻这些攻击,需要在HTTP 头部配上,set-cookie:httponly-
这个属性可以防止 XSS
,它会禁止 Javascript
脚本来访问 cookie
。secure -
这个属性告诉浏览器仅在请求为 https
的时候发送cookie
。 结果应该是这样的: Set-Cookie=<cookie-value>.....
5.2 CSRF 攻击
答: Csrf
(跨站点请求伪造) 攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份再攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的 Js
中手写一个深拷贝
5.3 中间人攻击
https 协议由 http + ssl
协议构成,具体的链接过程可参考 SSL
或 TLS
握手的概述,中间人攻击过程如下:
- 服务器向客户端发送公钥。
- 攻击者截获公钥,保留在自己手上。
- 然后攻击者自己生成一个【伪造的】公钥,发给客户端。
- 客户端收到伪造的公钥后,生成加密hash 值发给服务器。
- 攻击者获得加密hash 值,用自己的私钥解密获得真秘钥。
- 同时生成假的加密hash 值,发给服务器。
- 服务器用私钥解密获得假秘钥。
- 服务器用加秘钥加密传输信息
防范方法: 服务端在发送浏览器的公钥中加入 CA
证书,浏览器可以验证 CA
证书的有效性