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 多个http阻塞(因为http1.0只能发送一个tcp连接), http2解决了http1.1 多个tcp连接中,一个tcp连接多个http请求的队头阻塞
http0.9
1.只有请求行,没有请求头和请求体
2.没有返回头
3.返回内容都是ASCII字符流传输的
http1.0
1.content-type 响应数据不局限于超文本
2.expires,last-modified缓存头
3.authorization身份认证
http1.1
1.长链接
2.管道化(多个http可以并行发送)
3.支持相应分块 bigpipe 通过transfer-encoding
4.增加cache-control e-tag
http2
1.多路复用
2.服务器推送
3.头部压缩
4.tls
http3
将传输层替换为quic协议 改进的拥塞控制、流量控制、0rtt、传输曾多路复用、链接迁移

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

 

posted @ 2021-10-22 15:53  国服第一李师师  阅读(207)  评论(0编辑  收藏  举报