网络和操作系统面试篇
http和https
https主要有非对称加密,对称加密和数字签名三部分。具体流程是服务器先向证书颁发机构注册和验证。客户端请求服务器的时候,服务器会把自己非对称加密的钥匙发给客户端,这个钥匙是需要数字签名进行盖章的,这样客户端就知道这个网站是合法的而不是钓鱼网站。接收到了服务器非对称加密的钥匙,再把对称加密的钥匙通过这个公钥发给服务器,服务器用私钥进行解密。后续就根据对称加密进行传输。
http的状态码
- 1xx:正在处理的状态,一般见不到
- 2xx:成功状态码
- 3XX:301永久重定向,302临时重定向
- 4XX:401资源未授权,403被屏蔽了,404找不到
- 5XX:500服务器问题。502网关收到了,但是服务器转发有问题
http版本
- http1.0:短链接,一个资源一次tcp。
- http1.1:长连接,但是还是有hol问题,即大文件传输会挡住小文件传输从而影响体验
- http2.0:长连接,通过二进制帧解决了hol的问题,将大文件分成小份传输。同时长连接也改进成了多路复用
- http3.0:tcp+quic(udp)优化了握手,安全性也进行了更新
tcp三次握手
- 客户端先发送同步信号SYN,再带上自己的seq,进入syn-send状态
- 服务器接收到了发送ack和sys,进入syn-recv
- 客户端收到了之后在发送一个ack,建立连接
为什么是三次握手
因为只有三次握手才能使双方都知道各方面正常。
- 第一次握手,客户端什么都不能确认,服务器可以确认自己接受正常,客户端发送正常。
- 第二次握手,客户端可以确认自己发送和接收正常,服务器发送和接收正常;服务器可以确认自己接收正常,客户端发送正常
- 第三次握手,服务器可以确认自己发送和接收正常,客户端发送和接收正常
tcp四次握手
- 客户端发送fin和seq,进入fin-wait-1
- 服务器接收到发送ack和seq,进入close-wait,客户端接收到了变为fin-wait-2
- 可能服务器还会有要发送的,发送完了发送fin,变为last-ack
- 客户端接收到了变为time-wait,等到2ttl时间,如果没有等到服务器的消息就自己关闭。