http3,tcp,udp
500 服务器内部错误 501 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。 502 Bad Gateway错误 503 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。(服务不可用) 504 Bad Gateway timeout 网关超时 505 服务器不支持请求中所用的 HTTP 协议版本。(HTTP 版本不受支持)
301 永久重定向 后续请求直接访问新的url地址
302 临时重定向 先访问旧的地址,然后重定向到新的地址
301与302真正的区别在于默认的缓存机制。301的第一个请求默认会被浏览器缓存下来,再次请求老接口时,会直接从disk cache里获取。而302默认情况下,还是会去跟服务器进行老接口的交互。所 以,如果是无痕状态下,那么301与302完全没区别。
https://blog.csdn.net/weixin_45030000/article/details/135876606
304表示命中浏览器缓存
307也是重定向,但是重定向的过程后 方法保持原有不会强制改为get
HTTP状态码100是"Continue",它表示服务器已经收到了客户端发来的请求头部,并且客户端可以继续发送请求体(Request Body)部分。
通常情况下,当客户端发送一个包含较大数据的请求时,为了减少传输延迟,客户端会在发送请求体之前先发送请求头部,服务器在接收到请求头部后,如果确定接收请求体,就会返回状态码100给客户端,告诉客户端可以继续发送请求体部分。这样客户端就不用等待服务器处理完整个请求再发送请求体,可以提高传输效率。
http3的优点
1.握手时间,http1.0/1.1,http2都是使用tcp进行传输,http3基于udp传输 连接建立时只需要一次交互,半个握手时间。
2.多路复用丢包时线头阻塞,quic保留了多路复用,quic一个链接上的多个stream之间没有依赖,发生丢包时只会影响到当前的stream
3.优化重传策略,优化重传旧的重传机制无法判断是旧的ack包,还是重传的ack包,优化后初始和重传每一个封包都改用一个新的编号,每个编号严格递增,依据编号判断哪次ack的封包
4.流量控制,限制单stream的流量控制,优化前如果存在一个流量极慢的stream会用掉接收端所有的资源
5.连接迁移,tcp 连接基于四元组(源ip,源端口,目标ip,目标端口)wifi 变化时要进行重新连接,quic连接会生成一个connectionId,connectionId无变化,连接依然维持
ftp 文本传输协议,http 超文本传输协议,telnet远程登录协议,ip协议 ,imcp控制信息协议,dhcp动态主机配置协议,arp解析物理地址协议
tcp 和udp 的区别
tcp协议基于连接,udp无连接
tcp面向字节流,udp面向报文
tcp传输数据无差错,不丢失,不重复,udp可能丢包
tcp首部开销字节最小为20,udp为8字节
tcp连接只能点对点,udp 可以一对多,多对多通信
http1.1解决了http1.0 利用长链接,管道化,长链接使请求管道化变为可能,并行需要多个tcp连接接 (因为请求是串行的传输的管道中),存在队头阻塞,这个并行其实是指的不同tcp连接,可以发送多个不同的tcp连接和同一tcp连接上可以并行发送多个请求,但是返回还是先后顺序返回 相比http1.0(他只能上一个请求结束后才能发送下一个请求), 同一个tcp连接上的还是存在队头阻塞的问题(如果同一个tcp连接中有多个请求)
http2如何解决http1.x的同一个tcp的队头阻塞?
在应用层、传输层中间设置二进制分帧层,能在一个tcp链接上面进行任意数量的http请求(1024) 采用多路复用
http是应用层协议,tcp是传输层协议,http2在应用层、传输层中间设置二进制分帧层 解决了http层的队头阻塞,给每个帧打上流id,接收方可以拼接成流,做到乱序响应
ack = 上次seq + length
seq = 上次ack