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时间,如果没有等到服务器的消息就自己关闭。