1.五层协议的体系结构,每层有哪些协议?
思路:分别解释+拓展补充
物理层/数据链路层/网络层/传输层/应用层+具体协议
2.Http和Https的区别
思路:分别解释+拓展补充
Http:超文本传输协议
Https:在http的基础上采用ssl或者tsl加密数据包。即在http下加入ssl层。(HTTPS = HTTP + SSL )
1、https有ca证书,http一般没有
2、http是超文本传输协议,信息是明文传输。https则是具有安全性的ssl加密传输协议
3、http默认80端口,https默认443端口。
3.Http1.0和1.1,2.0的区别
思路:Http的发展历史+不同协议新增特性+拓展补充长/短接连适用情景
1.0与1.1区别:
1.0默认短连接,1.1开始默认长连接。1.1新增部分状态码+请求头来拓展1.0的功能:如身份认证,缓存处理,断点续传,状态管理等。
2.0比1.X的改进:
1.X都是基于文本解析,采用新的二进制解析格式,不同与文本的多种表现形式,二进制只有0和1,因此健壮性更好。
多路复用:即连接共享:每个request对应一个id,一个连接上可以有多个id,服务端根据id判断是哪个request。
服务端推送:能实现服务端主动向客户端推送。
三种区别具体参考:
https://juejin.im/entry/6844903489596833800
https://mp.weixin.qq.com/s/GICbiyJpINrHZ41u_4zT-A?
4.长/短连接有什么区别
思路:分别解释+适用场景
Http1.0中默认使用短连接,即客户端与服务器每进行一次请求就建立一次连接,操作结束就断开连接。
Http1.1中在会在请求头中加上:Connection:keep-alive这一句,以保持连接。使用长连接请求后,客户端与服务端的TCP链接不会断开,当客户端再次请求服务端的时候,会继续用这一连接。但是这一连接也不会永远不关闭,可以在服务端软件设置保持时间。
Http的长/短连接本质上是TCP的长/短连接。实现长连接需要客户端+服务端都支持长连接
长短连接优缺点与适用情景参考:
https://www.jianshu.com/p/caeec6bd1d3f
5.如何理解HTTP是无状态的
思路:分别解释+适用场景
是指协议本身对事务处理是没有记忆能力的。相当于餐厅老板不会认得每次去吃饭的你。
如果一个连接上传输多个Http请求,即使一个请求失败了也不会影响其他请求的处理。
无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。
6.点击一个URL发生什么
思路:一次网络请求的全流程
1.浏览器从URL中解析主机名与端口号,通过DNS将主机名转换成服务器的IP地址。
2.根据IP地址和服务器建立TCP连接。
3.浏览器发出读取文件的HTTP请求,该请求作为TCP三次握手的第三次的数据报文传输给服务器
4.服务器对请求作出响应,并把相应的html文本返回给客户端。
5.释放TCP连接:
如果当前connect模式为close,服务器端主动关闭TCP连接,客户端被动关闭。
如果当前connect模式为keep-alive模式,则保持TCP连接一段时间,在这段时间内继续可以接受请求。
6.客户端将收到的html文本进行解析并且展示。
7.Http请求报文包含什么东西
思路:Http的报文结构
请求头部/请求行/空行/请求数据(响应报文同)
8.TCP和UDP
思路:传输层协议对比。
- 基于连接与无连接;
- 对系统资源的要求(TCP较多,UDP少);
- UDP程序结构较简单;
- 流模式与数据报模式 ;
- TCP保证数据正确性,UDP可能丢包;
- TCP保证数据顺序,UDP不保证。
- TCP全双工通道(流量控制,拥塞控制,滑动窗口,丢弃重复数据,超时重发等机制)
- TCP点到点,用于传输可靠性高的数据。UDP支持一对一,多对多,一对多,多对一,适合传输可靠性要求不高的数据。
9.流量控制和拥塞控制
思路:设计目的+区别+应用场景
流量控制:
背景:发送者发送速度过快,接收方来不及接收会导致分组丢失。
目的:防止分组丢失
如何实现:通过滑动窗口协议实现。简要说明:接收方返回的ACK会包含自己接收窗口的大小,从而实现控制发送方的发送数据大小。
问题:发送方接收到一个窗口为0的应答便会停止发送,等待下一个应答。而下一个不为0的应答在传输过程中丢失了,发送方会一直等待应答,接收方以为发送方已经接受应答,但是一直没新发送。两两等待,凉凉,引发死锁。
问题解决:TCP采用了持续计时器。发送方收到应答为0的窗口时便启动计时器,时间到了就重新向接收方发送报文询问:我还有机会吗?如果返回的还是为0的窗口,则继续等待并重置启动计时器。若不为0的窗口则表示之前的数据丢失,重新发送。
拥塞控制:
背景:拥塞控制是作用于网络的
10.为什么要三次握手+四次挥手
思路:解释三次握手的过程+特点/四次挥手的过程+特点
具体过程不过多叙述,需自行理解。
三次握手特点:
- 没有应用层的数据
- SYN这个标志位只有在TCP建产连接时才会被置1
- 握手完成后SYN标志位被置0
四次挥手特点:
- 当A端完成数据发送任务后,可以发送一个FIN来终止该方向上的连接。
- 当另B端收到FIN之后,必须通知应用层A端已经终止了那个方向的数据传输,并且它需要发回一个ACK进行确认,确认序号为收到的序号+1。与SYN一样,FIN也同样会包含一个序号,同时TCP的B端还会向应用层传送一个文件结束符。
- 这时B端会发送一个FIN来请求关闭另一边通路
- 客户端收到后必须返回一个确认,并将确认序号设置为收到序号+1
为什么要四次挥手:TCP是全双工的,数据能在两个方向上同时传递,因此关闭时需要先将一端关闭,再关闭另一端。
11.Cookie和Session的区别
思路:分别解释+区别
简单说:Cookie数据保存在客户端,Session数据保存在服务器。
Session是存放在服务端,用于采存放用户数据的。当客户端第一次发送请求时,服务器自动生成一个Session和Session ID用来唯一标示这个Session,并将其通过响应发送到客户端。在客户端再次发送请求时,会把服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的Session ID进行比较,找到该用户对应的Session。
Cookie属于Session对象的一种。其大小存在限制且客户端存储Cookie的个数也有限,而Session是保存在服务器端,理论上是没有大小限制的,只要你的内存够大。
因为Cookie保存在本地,其信息的完全可见性和本地可编辑性使得我们一般认为Cookie是不可靠的,而位于服务器的Session是可靠的。具体应用还是要根据具体情境判断采取哪种策略。
https://blog.csdn.net/duan1078774504/article/details/51912868
12.了解哪些状态码
思路:分类记忆+具体解释
状态码 | 含义 |
1XX | 请求正被处理 |
2XX | 请求成功处理 |
3XX | 请求需要附加操作,常见的例子如重定向 |
4XX | 客户端出错导致请求无法被处理 |
5XX | 服务端处理出错 |
13.GET和POST 的区别
思路:解释
本质上是一样的TCP链接
深层区别在于GET产生一个TCP包,POST产生两个TCP包。因为:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
14.HTTPS加密原理
思路:解释
15.了解哪些算法
思路:解释
16.证书怎么校验的
思路:解释
17.DNS解析是怎样的
思路:解释
18.HTTP优化方案
思路:解释
- TCP复用:TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。前者是负载均衡设备的独特功能;而后者是HTTP 1.1协议所支持的新功能,目前被大多数浏览器所支持。
- 内容缓存:将经常用到的内容进行缓存起来,那么客户端就可以直接在内存中获取相应的数据了。
- 压缩:将文本数据进行压缩,减少带宽
- SSL加速(SSL Acceleration):使用SSL协议对HTTP协议进行加密,在通道内加密并加速
- TCP缓冲:通过采用TCP缓冲技术,可以提高服务器端响应时间和处理效率,减少由于通信链路问题给服务器造成的连接负担。
未完待续...