目录
1.从输入URL到页面展示到底发生了什么?
-
首先,浏览器会根据我们输入的URL地址先在本地域名服务器(DNS)中查找,如果有缓存,则直接返回IP地址即可。
-
如果本地域名服务器没有缓存,则会查询本机hosts文件中看是否配有对应的IP地址,如果找到,直接返回。
-
如果hosts文件内也没有,则向网络中发起一个DNS查询,可采用递归或者迭代查询。去根、顶级、权威域名服务器上去查.....,查找到了返回给本地域名服务器,然后告诉给用户IP地址。
-
浏览器根据IP地址和端口号与目标服务器建立TCP连接,经历三次握手。
-
建立连接后(HTTP1.1为长连接),浏览器向服务器发送一个HTTP请求,请求获取网页的内容。
-
服务器收到后,处理请求,返回响应报文。
-
浏览器接收到后,解析HTML代码,获取里面的其他资源,图片等,再次发起HTTP请求,直到网页完全加载显示。
-
浏览器不需要通信时,可主动关闭TCP连接,或者等待服务器关闭请求。
2.HTTP状态码有哪些?
2.1 2XX(成功状态码)
-
200 OK:请求被成功处理。比如我们发送一个查询用户数据的 HTTP 请求到服务端,服务端正确返回了用户数据。这个是我们平时最常见的一个 HTTP 状态码。
-
201 Created:请求被成功处理并且在服务端创建了一个新的资源。比如我们通过 POST 请求创建一个新的用户。
-
202 Accepted:服务端已经接收到了请求,但是还未处理。
-
204 No Content:服务端已经成功处理了请求,但是没有返回任何内容。
2.2 3XX(重定向状态码)
-
301 Moved Permanently:资源被永久重定向了。比如你的网站的网址更换了。
-
302 Found:资源被临时重定向了。比如你的网站的某些资源被暂时转移到另外一个网址。
2.3 4XX(客户端错误状态码)
-
400 Bad Request:发送的 HTTP 请求存在问题。比如请求参数不合法、请求方法错误。
-
401 Unauthorized:未认证却请求需要认证之后才能访问的资源。
-
403 Forbidden:直接拒绝 HTTP 请求,不处理。一般用来针对非法请求。
-
404 Not Found:你请求的资源未在服务端找到。比如你请求某个用户的信息,服务端并没有找到指定的用户。
-
409 Conflict:表示请求的资源与服务端当前的状态存在冲突,请求无法被处理。
2.4 5XX(服务端错误状态码)
-
500 Internal Server Error:服务端出问题了。比如你服务端处理请求的时候突然抛出异常,但是异常并未在服务端被正确处理。
-
502 Bad Gateway:我们的网关将请求转发到服务端,但是服务端返回的却是一个错误的响应。
3.HTTP 请求头中常见的字段有哪些?
字段 | 含义 |
---|---|
Request URL | 请求地址 |
Request Method | 请求方法 |
status Code | 请求码 |
Reomte Address | 客户端主机的IP地址 |
Date | 发送日期 |
User-Agent | 浏览器身份标识字符串 |
Accept-Encoding | 支持的编码 |
Accept-Language | 支持的语言 |
scheme | 访问协议http或https |
4.HTTP和HTTPS有什么区别?
4.1简单介绍
HTTP:最广泛应用的网络通信协议,基于TCP协议,数据传输简单高效,数据传输的内容是明文。
HTTPS:HTTP协议的加强版,是运行在SSL/TLS协议之上的HTTP协议,其所有传输的内容都经过加密,一方面保证数据的安全传输,另一方面对访问者增加了安全验证。
注意:TLS是SSL的升级版,加密采用的是对称加密,通信双方共享唯一密钥K,这样代价比较低。由于需要保证密钥的保密性,在双方通信时,需要商量一个用于对称加密的密钥,但是密钥不能直接在网络通信道中传输,这样是不安全的,所以还需要采用一次非对称加密(公钥加密和私钥解密的方式)用来交换对称加密的密钥。关于密钥的信任性问题是靠CA证书解决的。
4.2主要区别
1.http和https都是无状态(就是交互之间没有记忆功能)的,而https是通过SSL/TLS协议加密的,传输数据更加的安全。
2.http默认使用的是80端口,而https默认使用的是443端口。
4.3Https的缺点
1.https的TCP握手协议会更加的费时,会耗费更多服务器资源。
2.https也并不是完全安全的,可能会受到DDOS(分布式拒绝服务攻击,使被攻击的网站服务器存放大量要响应的信息,消耗资源,使得服务瘫痪)的攻击。
3.SSL证书不是免费的,安全级别越高的费用越高。
5.HTTP1.0和HTTP1.1的区别
-
连接方式:HTTP1.0为短连接,HTTP1.1支持长连接。
-
Host头:因为DNS允许多个主机名绑定到同一个IP地址,加上Host字段就知道主机名了。
-
响应状态码:HTTP1.1在HTTP1.0的基础上新加入了大量的状态码。
-
加密:HTTP1.1可以支持SSL/TLS加密。
6.HTTP1.1和HTTP2.0有什么区别
-
多路复用:HTTP2.0在同一连接上可以同时传输多个请求和响应,在处理多个请求时更加的高效。
-
服务主动推送:HTTP2.0可以在客户端请求一个资源时,将其他相关资源一并推送给客户端,减少了客户端的请求次数。
-
二进制帧:HTTP2.0使用二进制帧进行数据传输,相较于HTTP1.1文本格式的报文更加的高效。
注意:HTTP1.1和HTTP2.0都与HTTPS有直接关系。HTTP1.1和HTTP2.0都是HTTP协议的版本,而HTTPS是在HTTP协议的基础上加入了SSL/TLS协议进行加密的协议。因此,当使用HTTPS时,实际上是在使用HTTP协议(无论是HTTP1.1还是HTTP2.0)进行加密通信。具体来说,HTTP1.1和HTTP2.0可以与HTTPS一起使用,以提供加密和安全通信。在实际应用中,许多网站使用HTTPS来保护用户的个人信息和其他敏感数据,而HTTP1.1和HTTP2.0都可以作为HTTPS协议的一部分来使用。
7.HTTP2.0和HTTP3.0有什么区别?
-
传输协议:HTTP2.0是基于TCP协议实现的,HTTP3.0采用了QUIC(UDP的升级版,在其基础上新增了加密、重传等功能)协议来实现可靠的传输。
-
安全性:HTTP2.0使用TSL协议进行加密,而HTTP3.0基于QUIC协议,包含了内置的加密和身份验证机制,可以提供更强的安全性。
-
连接建立和错误恢复:HTTP3.0相较于HTTP2.0在连接建立上更快,也有更好的错误恢复机制。
8.URI和URL的区别是什么?
-
URI是统一资源标识符,可以唯一标识一个资源,比如一张图片,一段音频。
-
URL是统一资源定位符,可以提供该资源的路径,就是如何指向这个资源。
URI准确来说是包含URL的,比如说有一张图片,他同时放在了tomcat服务器中的两个不同文件夹中,对于URI来说就是一张图片资源,而URL可以有多个,访问的文件夹路径不同,URL不同,但最终得到的就是这一张图片资源。
9.Cookie和Session的区别?
因为我学习的时候接触的是JWT,没有采用Cookie+Session这种方案,对Cookie和Session的过程只是了解。因为HTTP协议是无状态的,Session的主要作用就是通过服务端记录用户的状态,Session是在服务端的,Cookie是在客户端的,所以Cookie中不能存储敏感信息,最好是将Cookie信息加密存储然后使用到的时候再去服务器端解密。
基本认证流程如下:
10.GET和POST的区别?
-
使用场景:get请求一般用于获取或查询资源,而post请求一般用于创建和修改资源。
-
缓存:浏览器一般会对get请求进行缓存,而post请求不会缓存。
-
安全性:如果使用HTTP协议的话,其实都不安全,因为HTTP协议本身是明文传输。但相对来说POST请求比GET请求更安全一些,因为GET请求的参数通常放在URL中。
-
格式:GET请求的URL长度受到浏览器和服务器的限制,而POST请求的body大小没有明确的限制。