面试官:今天想聊聊HTTP吗?考生:嗯,HTTP“协议”是客户端和服务器之间“交互”的一种通信格式考生:所谓的交互其实就是“请求”和“响应”面试官:你知道各种不同的区别吗HTTP版本?考生:HTTP1.0默认为短连接。每次与服务器交互时,都需要打开一个新的连接。考生:HTTP1.1最重要的是“默认持久连接”。只要客户端服务器不断开TCP连接,它就会保持连接状态,并可以发送多个HTTP请求。考生:第二个是“Chunkedtransfer-coding”。使用HTTP消息头使用chunkedtransferencoding将实体主体分成chunk进行传输“流量控制”,最重要的是HTTP/2支持“多路复用”(多个请求和响应消息通过并行“发起”单个TCP连接)面试官:好吧,打断一下。我知道HTTP1.1有流水线理论,但它默认是关闭的。流水线与HTTP/2的“多路复用”非常相似。它们之间有什么区别?候选题:HTTP1.1提出的“流水线”只能是“串行的”(一个response必须在下一个请求开始传输之前完全返回)候选题:HTTP/2多路复用使用“分帧”数据流,分解HTTP协议成“相互依存”的帧(按“顺序”发送每个帧,收到回来时按顺序重新组织),然后“乱序”发送,避免“一定程度上”成为队首候选人阻塞问题:但是无论是HTTP1.1还是HTTP/2,response响应的“处理顺序”总是需要和request请求的顺序保持一致。如果请求的响应很慢,仍然会出现阻塞问题。考生:这个受限于HTTP的底层传输协议是TCP,没有办法彻底解决“队头阻塞”的问题。面试官:哦,好的。考生:HTTP/3和之前版本最大的区别是HTTP1.x和HTTP/2的底层是TCP,而HTTP/3的底层是UDP。使用HTTP/3可以减少RTT“往返延迟”(TCP三向握手,TLS握手)面试官:你了解HTTPS的流程吗?考生:嗯,在我的理解中,HTTPS是一种“安全”的HTTP协议(在客户端和服务器之间的传输链路中加密)。Candidate:HTTPS首先要解决的是:认证的问题服务器使用HTTPS,需要向经过认证的CA组织申请“数字证书”。数字证书包含证书持有者、证书有效期、“服务器公钥”等信息。申请人:CA组织也有自己的公钥和私钥。公共信任机构,它会内置到浏览器或操作系统中,所以客户端会有一个公钥)。此时,客户端会判断“证书是否可信/是否被篡改”这里,“认证”的问题解决了,至少客户端可以保证是在和“真实服务器”通信。考生:解决了“认证”问题,还要解决“保密”问题。客户端与服务端的通信内容在传输过程中不会泄露给第三方。候选人:客户端从CA获得数字证书后,将获得服务器公钥的候选人:客户端生成一个Key作为“对称加密”的秘钥,并使用服务器的“公钥加密””传递给服务端候选:服务端用自己的“私钥解密”客户端候选对称加密密钥:之后客户端和服务端就可以愉快的使用“对称加密密钥”收发消息了Talk关于不同的东西!【在线面试官+从头写一个Java项目】持续高强度更新!明星原创不易!!一连求三!!
