HTTP

http1.1、2.0

https://blog.csdn.net/ailunlee/article/details/97831912

http1.1 http2.0
长连接(一个tcp连接可以处理多个http请求) 多路复用(一个tcp连接可以并发处理多个http请求)
host字段的增加(一台服务器上有多个虚拟机) 头部数据压缩(节约带宽)
节约带宽(断点续传) 服务端push

多路复用
image.png
服务端push
image.png

http和https的区别?

https://www.bilibili.com/video/BV1w4411m7GL?from=search&seid=8993721188908494900&spm_id_from=333.337.0.0
image.png
image.png

https的端口号?
RPC的底层原理?

常见状态码

200 ok
301 (永久重定向) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
400 (错误请求) 服务器不理解请求的语法。可能是参数传错了
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。

TCP/UDP

TCP连接为什么需要三次握手而不是两次?

避免服务端造成资源浪费。
client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。