计算机网络概论part3|青训营笔记

112 阅读3分钟

先对上一篇文章中标头和载荷部分进行补充说明:网络协议的基本结构是标头和载荷,网络协议在每一层都会将上一层的标头和载荷视为这一层的载荷,并添加自己的标头。

二、Web中的网络

  • HTTP协议的基本结构示例:

WechatIMG1487.jpeg 红色部分是请求,蓝色部分是响应

1.请求部分

  • 第一行也被称作起始行,包含了三个要素:GET / HTTP1.1
  1. 这三个要素分别代表了请求的方法,资源路径,及HTTP版本
    
  • 之后的几行是头部,头部通过:表示,:左边是头部的名称,右边是头部的值。头部的名称不区分大小写

2.响应部分

  • 响应的第一行是响应的状态行,包含三个部分:HTTP1.1 200 OK
  1.  这三个要素分别代表了HTTP版本,状态码,重要消息。重要信息是可以自定义的。
    

WechatIMG1488.jpeg

  • 这张图很好地表明了HTTP网络协议的弊端,即请求-响应模式的情况下,只有当服务端完整的响应了客户端发出的前一个请求,客户端才可以发起第二个请求,这种模式导致网络利用率非常低(会造成队头堵塞问题)
  • 在之后HTTP1.1中针对这种问题提出了HTTP管线模式(HTTP Pipelining),即客户端可一次性发出多个请求,服务端按照顺序进行答复;但这种模式也几乎没有人使用,因为这种模式对于提高网络效率的效果微乎其微,还可能造成一定的风险:当客户端一次性发送多个请求,服务端在传回信息时给出的最终信息回混杂在一起,使客户无法分辨答复属于哪个请求。
  • 在HTTP2中引入了帧,即将多个HTTP请求拆入到各个帧里面,这样的话可以对每个数据包进行标识,不会再出现类似于HTTP1.1管线模式导致的结果不明的情况。 WechatIMG1489.jpeg
  1. 前三个字节是载荷长度,表示当前帧的载荷一共有多少个字节(1 byte = 8 bit)
  2. 第四个字节(Type)是帧的类型
  3. 第五个字节是类型对应的Flags(标志位)
  4. 第六到第九字节:第1位是保留位,第2-32位是流ID
  5. 剩下的所有字节则是当前帧的载荷

HTTP2:帧带来的额外好处

  • 调整响应传输的优先级
  • 头部压缩
  • Server Push

这些功能都可以通过不同类型的帧来实现

HTTP2的小缺陷:
  • 功能够多,但是处理速度很慢,于是产生了HTTP3
  • 仍有可能发生队头堵塞,但是是发生在TCP中
HTTP3针对HTTP2的改进:QUIC
  • Quick UDP Internet Connection
  • 现存网络设备对TCP和UDP支持已僵化
  • UDP不靠谱但是QUIC靠谱
  • QUIC可以为除HTTP协议以外的应用层协议提供支持
  • TCP、UDP、QUIC均为运输层协议,HTTP协议是应用层协议