#### 1. 理解什么是协议,了解TCP/IP网络协议族的构成,每层协议在应用程序中发挥的作用
#### 2. HTTP
1. HTTP是基于TCP/IP的关于数据如何在网络中通信的协议
#### 2. GET和POST的区别
1. GET和POST本质上没有区别,因为都是基于TCP/IP,只是HTTP规定的两种传输方法
2. 从使用上来看,GET请求的传参是拼接在URL中,参数相对POST更可见,所以POST相对比GET要安全一些,URL浏览器对长度也做了限制,一般是2K个字节
3. POST传输的数据格式不受限制,GET的传输格式有限制( 只接受ASCII字符 )
4. GET请求参数会遗留在浏览器浏览历史记录当中,可以看到,POST不会
5. 最大的区别在于GET请求会将HTTP header和data一次打包发出,POST会先发送header,再发送数据,会产生两个TCP数据包,但发送两次数据包在网络好的情况下差异几乎可以不计
6. 从语义上来看,获取数据应该用GET,提交数据应该用POST
#### 2. 三次握手和四次挥手详细原理,为什么要使用这种机制
#### 3. 有哪些协议是可靠,TCP有哪些手段保证可靠交付
1. TCP通过以下方式来提供可靠性
2. 将数据分割为TCP认为合理的数据块
3. 对于重复数据,能够丢弃重复数据
4. TCP发送数据端,超时会重新发送
5. 对于收到的请求,会给出确认响应
#### 4. DNS的作用、DNS解析的详细过程 ,DNS优化原理
#### 5. CDN的作用和原理
1. CDN作用:加速文件网络传输
2. CDN原理:优化物理链路层传输过程中的光速有限、丢包等问题来提升网速,其优势是通过各地的服务器部署, 使用户在不同的地方访问可以从就近的CDN服务器上获取资源,速度比不同的地方都从同一个地方获取速度会快很多
#### 6. HTTP请求报文和响应报文的具体组成,能理解常见请求头的含义,有几种请求方式,区别是什么
#### 7. HTTP所有状态码的具体含义,看到异常状态友能快速定位问题
#### 8. HTTP1.1、HTTP2.0带来的改变
2. --- HTTP2.0 ---
1. 二进制分帧:在应用层(HTTP)和传输层(TCP)之间增加一个二进制分帧层
2. 首部压缩
3. 流量控制
4. 多路复用
5. 请求优先级
6. 服务器推送
#### 9. HTTPS的加密原理,如何开启HTTPS,如何劫持HTTPS请求
#### 10. 理解WebSocket协议的底层原理、与HTTP的区别
#### 11. HTTP缓存
1. HTTP缓存分为:强制缓存以及协商缓存,强制缓存优先级高,当未并中强制缓存时,才会进行协商缓存
2. 强制缓存的实现:从expires到现在的cache-control,expires是向下兼容方案,因为客户端时间可能更改
3. cache-control: maxage=315000 是设定缓存时间,在这个时间段内都有效,s-maxage只在代理服务器中生效
4. public 与 private:这两个都是针对代理服务器的设置,private使该资源只能被浏览器缓存,public使资源在浏览器与代理服务器均能进行缓存,private是默认值
5. no-cache与no-store:no-cache请求资源时不会进行浏览器缓存查询,会直接向服务器确认资源是否过期,no-store不使用缓存,每次重新加载请求
6. 协商缓存:HTTP响应为 304 Not Modified,服务器提示资源缓存未改动,资源会被重定向到浏览器缓存
7. 服务器响应头添加:Last-Modified,浏览器请求头添加:If-Modified-Since为响应头的值,服务器拿到这个时间戳与资源在服务器的改动时间进行比较,这种方式存在两个弊端:文件编辑但未修改内容,也会重新请求,文件修改时间过短,反而没有重新进行请求
8. Etag是为资源添加唯一的标识符,优先级大于Last-Modified,但Etag的生成会耗费服务器一定的性能