1、get和post的请求的区别?
答: 区别:
- 应用场景: Get请求一般用于对服务器资源不会产生影响的场景,比如请求一个网页资源,而Post一般用于对服务器有影响的操作,比如注册用户
- 是否缓存: 浏览器一般会对Get请求进行缓存,很少对post请求缓存。
- 发送报文的格式: Get请求的报文中实体部分为空,Po
- st请求的报文中实体部分一般为向服务器发送的数据。
- 安全性: Get请求将请求参数放在url中相对post而言不太安全。url会被保留在历史记录中。
- 请求长度: get请求url长度限制1024字节。
2.post和put请求的区别?
答:
- put请求是向服务器端发送请求,从而修改数据的内容,但是不会增加数据的种类,也就是更新操作。
- post是向服务器端发送数据,他可以创建新的内容。
3.Cache-Control是什么?有什么作用?
答: Cache-Control是HTTP协议中的一个请求头和响应头的字段,用于控制缓存的行为。
-
请求头中的cache-control:
-
- no-cache:表示客户端要求服务器不使用缓存响应,每次都必须向服务器发送请求,并在服务器返回响应前进行验证。
-
- no-store:表示客户端不希望请求和响应的任何部分被缓存,每次都必须向服务器发送请求并获取最新的响应。
-
- max-age:指定资源在被认为过期之前可以被缓存的时间,以秒为单位。例如,max-age=3600表示资源可以被缓存一小时。
-
- must-revalidate:表示如果缓存的资源过期,客户端必须向服务器发送请求进行验证。如果服务器返回响应码为304 Not Modified,则可以使用缓存的副本。
-
-
响应头中的cache-control:
- public:表示响应可以被任何缓存代理(包括客户端和中间代理服务器)缓存。
- private:表示响应只能被客户端缓存,中间代理服务器不能缓存。
- no-cache:表示响应可以被缓存,但在被使用之前必须向服务器发送请求进行验证。
- no-store:表示禁止缓存响应。
- max-age:指定响应在被认为过期之前可以被缓存的时间,以秒为单位。
4.常见的HTTP请求头和响应头?
答:
HTTP Request Header 常见的请求头:
- Accept:浏览器能够处理的内容类型
- Accept-Charset:浏览器能够显示的字符集
- Accept-Encoding:浏览器能够处理的压缩编码
- Accept-Language:浏览器当前设置的语言
- Connection:浏览器与服务器之间连接的类型
- Cookie:当前页面设置的任何Cookie
- Host:发出请求的页面所在的域
- Referer:发出请求的页面的URL
- User-Agent:浏览器的用户代理字符串
HTTP Responses Header 常见的响应头:
-
Date:表示消息发送的时间,时间的描述格式由rfc822定义
-
server:服务器名称
-
Connection:浏览器与服务器之间连接的类型
-
Cache-Control:控制HTTP缓存
-
content-type:表示后面的文档属于什么MIME类型
5.常见的HTTP请求方法?
答:
-
GET: 向服务器获取数据;
-
POST:将实体提交到指定的资源,通常会造成服务器资源的修改;
-
PUT:上传文件,更新数据;
-
DELETE:删除服务器上的对象;
-
HEAD:获取报文首部,与GET相比,不返回报文主体部分;
-
OPTIONS:询问支持的请求方法,用来跨域请求;
- 1.实现预检请求(preflight request):在进行跨域请求时,浏览器会先发送一个OPTIONS请求,询问服务器是否可以发送真实的请求。服务器通过返回合适的响应头来告知浏览器是否允许跨域访问。
- 2.查询服务器支持的方法:通过发送OPTIONS请求,客户端可以了解服务器对某个资源支持的HTTP方法,从而决定后续的请求如何发送。
-
CONNECT:要求在与代理服务器通信时建立隧道,使用隧道进行TCP通信;
-
TRACE: 回显服务器收到的请求,主要⽤于测试或诊断。
6.HTTP 1.1 和 HTTP 2.0的区别?
答:
- 1.二进制协议: HTTP 1.1采用的文本的传输方式,效率低,而HTTP 2.0使用了二级制编码的传输方式,有效压缩了传输的数据,提高了性能。
- 2.多路复用: HTTP 1.1在同一个连接上每次只能发送一个请求,需要建立多个链接来获取多个资源,增加了开销。而HTTP2.0支持多路复用,同一个连接上可以发送多个请求和相应。
- 3.支持服务器推送: HTTP1.1不支持服务器推送,即服务器无法主动的向客户端发送未经请求的资源。HTTP2.0可以主动发送。
-
- 头部压缩: HTTP1.1带有大量的头部信息,HTTP2.0对头部信息进行了压缩处理。
7.HTTP和HTTPS协议的区别?
答: 主要区别如下:
- 1.HTTPS协议需要CA证书,费用较高,而HTTP协议不需要。
- 2.HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则具有安全性的SSL加密传输。
- 3.HTTP协议端口是80,HTTPS协议端口是443
8. 从浏览器地址栏输入 url 到请求返回发生了什么
-
输入 URL 后解析出协议、主机、端口、路径等信息,并构造一个 HTTP 请求。
-
缓存判断: 浏览器会判断所请求的资源是否在缓存里,如果请求的资源在缓存里并且没有失效,那么就直接使用,否则向服务器发起新的请求。
- 强制缓存:通过Cache-Control: max-age=3600的字段去设置强制缓存,当浏览器第一次发送请求到服务器时,服务器会在响应头中设置一个缓存有效期,下次再次请求资源时,游览器会先判断缓存有效期是否过期,如果没有过期,则直接使用本地缓存,否则在去浏览器中请求资源。
- 协商缓存:通过If-Modified-Since或If-None-Match字段来实现,当浏览器第一次发送请求给服务器时,服务器会在响应头设置资源的Last-Modified时间或Etag唯一标识。当再次请求资源时,浏览器还是会发送请求到服务器,服务器会根据If-Modified-Since(值为上次响应的Last-Modified时间)或If-None-Match(值为上次响应的ETage)去判断资源是否更新,若未更新,则返回304 Not Modified状态码,此时,游览器就从本地获取资源。若更新,则会返回最新的资源文件。
-
DNS 域名解析。(字节面试被虐后,是时候搞懂 DNS 了)
-
TCP 连接。
总是要问:为什么需要三次握手,两次不行吗?其实这是由 TCP 的自身特点可靠传输决定的。客户端和服务端要进行可靠传输,那么就需要确认双方的接收和发送能力。第一次握手可以确认客服端的发送能力,第二次握手,确认了服务端的发送能力和接收能力,所以第三次握手才可以确认客户端的接收能力。不然容易出现丢包的现象。
-
http 请求。
-
服务器处理请求并返回 HTTP 报文。
-
浏览器渲染页面。
-
- 解析HTML,构建DOM树
-
- 解析CSS,生成CSS规则树
-
- 合并DOM树和CSS规则,生成render树
-
- 布局render树(Layout/reflow),负责各元素尺寸、位置的计算
-
- 绘制render树(paint),绘制页面像素信息 。
- 绘制render树(paint),绘制页面像素信息 。
- 断开 TCP 连接。(TCP四次回收)
9.keep-alive是什么?
答: keep-alive是HTTP协议中的一种机制,用于在同一TCP连接上进行多个HTTP请求和响应,以减少连接建立的开销和提高网络性能。设置Connection: keep-alive。他的连接保持时间很短,往往只有几秒。
10.页面有多张图片,HTTP是怎么样的加载表现?
答:
- 在HTTP 1中,浏览器对一个域名下最大TCP连接数是6,所以会多次请求。
- 在HTTP 2中,支持多路复用,一个TCP连接中可以发送多个HTTP请求,所以可以一瞬间加载出来。
11. URL有哪些组成部分?
以下面的URL为例:www.aspxfans.com:8080/news/index.…
从上面的URL可以看出,一个完整的URL包括以下几部分:
-
协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符;
-
域名部分:该URL的域名部分为
-
端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口(HTTP协议默认端口是80,HTTPS协议默认端口是443);
-
虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”;
-
文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名;
-
锚部分:从“#”开始到最后,都是锚部分。使用锚部分可以实现页面内部的定位和导航效果。当用户点击包含锚部分的链接时,浏览器会自动滚动到对应的锚点位置。
-
参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
12.什么是HTTPS协议?
答: 超文本传输安全协议(Hypertext Transfer Protocol Secure,简称HTTPS)是一种通过计算机网络安全通信的传输协议。HTTPS经由HTTP进行通信,利用SSL/TLS来加密数据包。
主要是新增了安全层,主要职责就是对发起的HTTP请求的数据进行加密操作和对接收到的HTTP的内容进行解密操作。
13. TSL/SSL 的工作原理
答:
14.HTTP状态码的区别?
(1)2XX 成功
- 200 OK,表示从客户端发来的请求在服务器端被正确处理
- 204 No content,表示请求成功,但响应报文不含实体的主体部分
- 205 Reset Content,表示请求成功,但响应报文不含实体的主体部分,但是与 204 响应不同在于要求请求方重置内容
- 206 Partial Content,进行范围请求
(2)3XX 重定向
- 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
- 302 found,临时性重定向,表示资源临时被分配了新的 URL
- 303 see other,表示资源存在着另一个 URL,应使用 GET 方法获取资源
- 304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
- 307 temporary redirect,临时重定向,和302含义类似,但是期望客户端保持请求方法不变向新的地址发出请求
(3)4XX 客户端错误
- 400 bad request,请求报文存在语法错误
- 401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
- 403 forbidden,表示对请求资源的访问被服务器拒绝
- 404 not found,表示在服务器上没有找到请求的资源
(4)5XX 服务器错误
-
500 internal sever error,表示服务器端在执行请求时发生了错误
-
501 Not Implemented,表示服务器不支持当前请求所需要的某个功能
-
503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求
15.OSI七层网络协议?
16.TCP和UDP协议的区别?
答;
- TCP是可靠的、面向连接的协议,提供了可靠的数据传输机制,保证了数据的完整性和有序性,TCP使用三次握手建立连接,通过流控制、拥塞控制、错误检测和重传机制来确保数据的可靠传输,TCP适合传输可靠性比较高的场景,比如电子邮件、网页游览
- UDP是一种不可靠、无连接的协议,UDP不提供数据的可靠性保证,不进行数据重传和流量控制。适合实时性比较高的场景,比如视频通话,直播等。
17.三次握手协议是什么?为什么不是两次?
答:
- 1.**第一次握手:**客户端向服务端发送连接请求报文段。
- 2.第二次握手: 服务端收到连接请求报文段后,如果同意连接,则会发送一个应答。
- 3.第三次握手: 当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。此时连接建立成功。
为什么不是两次?
答:
为了确认双方的接收能力和发送能力都正常。如果使用两次的话,
-
- 假设主机A(客户端)向主机B(服务器)发送一个连接请求报文段,但在网络传输中延迟了很长时间。
-
- 主机A第二次重新发起连接请求,这次能够到达主机B。
-
- 主机B接收到连接请求报文段后向主机A发送确认报文段,建立连接。
-
- 但是延迟的第一个连接请求报文段在之前到达了主机B,并继续建立了连接。
18.四次挥手协议是什么?
答:
- 第一次挥手: 若客户端认为数据发送完成,则它需要向服务端发送连接释放请求。
- 第二次挥手:服务端收到连接释放请求后,此时表明客户端到服务端的连接已经释放,不再接收客户端发的数据了。但是因为 TCP 连接是双向的,所以服务端仍旧可以发送数据给客户端。
- 第三次挥手:服务端如果此时还有没发完的数据会继续发送,完毕后会向客户端发送连接释放请求
- 第四次挥手: 客户端收到释放请求后,向服务端发送确认应答,此时客户端进入 TIME-WAIT 状态。
19.WebSocket是什么?
websocket是浏览器和服务器进行全双工通讯的技术,浏览器和服务器只需要一次握手,两者就直接可以创建持久性的连接,并进行双向数据传输。
最大的特点: 服务器可以向客户端主动推送消息,客户端也可以主动向服务器推送消息。性能要求很大。
19.即时通讯有哪些实现方法?区别是什么?
答:
- 1.短轮询的基本思路: 浏览器每隔一段时间向浏览器发送http请求,服务器端在收到请求后,不论是否有数据更新,都直接进行响应。
- 2.长轮询的基本思路: 首先客户端向服务器发起请求,当服务器收到客户端发来的请求后,服务器端不会直接进行响应,而是先将这个请求挂起,然后判断服务器端数据是否更新,如果有更新,则进行响应,如果没有更新,则达到一定时间的限制以后,才返回。
- 3.使用流信息向客户端推送信息: http协议无法做到服务器主动推送消息,但是有一种变动的方法,就是服务器向客户端表明,接下来发的是流信息,也就是说,发送的不是一次性的数据包,而是一个数据流,这时,客户端就不会关闭连接,会一直等着服务器发送新的数据流。
- 4.WebSocket的基本思想: WebSocket是一个全双工的协议,也就是通信双方是平等的,
可以相互发送消息。适合于聊天室这种场景。 对于这四种即时通信协议,从性能的角度来看: WebSocket > 长连接(SEE) > 长轮询 > 短轮询 但是,我们如果考虑浏览器的兼容性问题,顺序就恰恰相反了: 短轮询 > 长轮询 > 长连接(SEE) > WebSocket 所以,还是要根据具体的使用场景来判断使用哪种方式。
20. TSL/SSL 加密算法?
对称加密
对称加密是指加密和解密所使用的密钥是相同的加密方式。在对称加密算法中,只有持有密钥的人才能够解密被加密的信息。对称加密的优点是加密解密速度快,适用于大量数据的加密传输。但是,对称加密的缺点是密钥的传输存在安全隐患,如果密钥被泄漏,那么加密的信息就会失去保密性。因此,在HTTPS协议中,对称加密只用于加密数据传输过程中的对称密钥。
非对称加密
非对称加密又叫公钥加密,它使用一对密钥,其中一个是公开的公钥,另一个是私有的私钥。公钥可以自由发布给任何人,而私钥只能由密钥持有者保管。在非对称加密算法中,使用公钥进行加密,只有持有相应私钥的人才能够解密。非对称加密的优点是密钥不需要传输,因此相对于对称加密更为安全。在HTTPS协议中,非对称加密用于传输对称加密密钥的过程中。