http相关面试题
2021-02-18 13:19
标签:sed art 控制 设备 log 优先级 接受 并行执行 ons 参考 HTTPS相当于HTTP+SSL/TLS+TCP/IP 证书申请 端口更改 访问限制 把所有 HTTPS 项目无脑升级成 HTTP/2 会有什么坑吗? HTTPS通过HTTP来传输信息,但是信息通过TLS协议进行加密。其中使用到两种加密技术,分别是对称加密和非对称加密。 对称加密就是双方都有相同的秘钥,都能将密文进行加密或者解密 缺点是秘钥是通过网络传输,一旦秘钥被截获就没有加密的意义了 非对称加密,有公钥和私钥之分,公钥所有人都可以知道,公钥用于给数据加密,但是解密必须使用私钥,私钥只有分发公钥的一方才知道。 简单流程就是服务端(实际产生两个,私钥在自己手里)把公钥给客户端,客户端创建秘钥,然后通过公钥加密并发送给服务端,服务端接收到密文以后通过私钥解密出正确的秘钥,这时候两端就都知道秘钥是什么了。 对称加密主要保护的就是在啊传输过程的安全性,通过公钥加密后的客户端私钥即使被拦截到,没有服务端的私钥也拿不到里面的内容,缺陷就是有加解密的操作流程,所以不能一直用这种方式进行传输。 背景:在HTTP1中,为了性能考虑,我们会引入雪碧图,将小图合并,使用多个域名等方式进行优化,是因为浏览器限制了同一个域名下的请求数量,当发起多个请求会产生队头阻塞,剩余资源需要等待其他资源请求完成后才能发起请求。 HTTP/1.* :一次请求,建立一次连接,用完关闭;在有请求在建立连接,完成传输后关闭; 长连接:客户端和服务端可以通过keep-alive的方式完成约定,当服务端返回response后不关闭TCP连接;同样客户端在接受完报文后也不关闭连接,在下次发送请求时重用改连接。 多路复用:允许只通过一个TCP连接发起多重请求,并行执行,减少了建立连接等过程,从而达到快速完成加载的目的。 并行:就是一个时间点可以做多个任务(分身术);并发:就是一个时间段能做多个任务(一分钟处理1000请求,并发量1000) HTTP keep-alive 也称为 HTTP 长连接。它通过重用一个 TCP 连接来发送/接收多个 HTTP请求,来减少创建/关闭多个 TCP连接的开销。在http1中请求头中,默认开启keep-alive,除非显式地关闭它: 在HTTP/1.0协议中,如果请求头中包含: 假设 A 为客户端,B 为服务器端。 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。(A:CLOSED? ? B:LISTEN) A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。(A:SYN_SEND? ? B:LISTEN) B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号(期待收到的下一个序号值)为 x+1,同时也选择一个初始的序号 y。(A:LISTEN? ? B:SYN_RECEIVED) A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。(A:ESTABLISHED ? B:SYN_RECEIVED) B 收到 A 的确认后,连接建立。(A:ESTABLISHED? ? B:ESTABLISHED) A 发送连接释放报文,FIN=1。(A:FIN_WAIT1? ? B:ESTABLISHED) B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据。(A:FIN_WAIT_2? ?B:CLOSED_WAIT) 当 B 不再需要连接时,发送连接释放报文,FIN=1。(A:FIN_WAIT_2? ? B:LAST_ACK) A 收到后发出确认,进入 TIME-WAIT 状态,等待 2 MSL(最大报文存活时间)后释放连接。(A:TIME_WAIT? ? B:LAST_ACK) B 收到 A 的确认后释放连接。(B:CLOSED) 防止失效的连接请求到达服务器,从而导致服务器错误的打开连接. 客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。 让服务端发送未发送完的数据. TIME_WAIT状态: 七层模型分为主机和网络两个部分 主机 网络 总结起来就是: 对于HTTP网络应用,我们在网络层用的是IP,在传输层用的是TCP。 http相关面试题 标签:sed art 控制 设备 log 优先级 接受 并行执行 ons 原文地址:https://www.cnblogs.com/bonly-ge/p/12941827.html1. http协议2.0有什么特点
2. 介绍HTTPS;HTTP和HTTPS的区别(必考)
3。
区别
HTTP
HTTPS
协议
运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份
身披SSL外壳的HTTP,运行SSL上,SSL运行与TCP之上,是添加了加密和认证机制的HTTP
端口
80
443
资源消耗
较少
由于加解密处理,会消耗更多的 CPU 和内存资源
开销
无需证书
需要证书
加密机制
无
共享密钥加密和公开密钥加密并用的混合加密机制
安全性
弱
由于加密机制,安全性强
3. 为什么说http是无状态协议,怎么解决无状态协议,用户的信息怎么传递?
也就是说,当客户端一次HTTP请求完成以后,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是一个”老用户“。4. 升级https会有什么坑?
5. HTTPS加密过程方式
6.tcp的长连接和http2多路复用区别?
7. HTTP keep-alive
// 代表开启
Connection: keep-alive
// 关闭
Connection: close
8. tcp拥塞控制和流量控制
9. 三次握手四次挥手,为什么三次和四次
三次握手:
四次挥手:
为什么三次握手:
为什么四次挥手:
确保最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。10. 七层模型-HTTP及HTTPS协议原理解析
打电话信息发出(www) --->发射塔收到不稳定信息流(物理层) ---> 发射塔整理信息流(链路层)---> 发射塔转给离接收人更近的发射塔(网络层IP) ---> 发射塔向接收人发送信息(传输层TCP) ---> 通话建立(会话层) ---> 解码信息(表示层) ---> 发出声音给接收人(应用层HTTP)各协议在HTTP中的用途
参考