美文网首页
10-HTTP协议

10-HTTP协议

作者: Mr_十九 | 来源:发表于2018-11-06 11:44 被阅读0次

本人在“极客时间”上购买了一套“趣谈网络协议”的课程,本文为该课程第14讲(第14讲 HTTP协议)的课程笔记。


第十四讲 HTTP协议

1.最常用的协议-HTTP协议
  • HTTP协议为应用层协议
  • http://www.163.com 是个 URL,叫作统一资源定位符。之所以叫统一,是因为它是有格式的。HTTP 称为协议,www.163.com 是一个域名,表示互联网上的一个位置。有的 URL 会有更详细的位置标识,例如 http://www.163.com/index.html 。正是因为这个东西是统一的,所以当你把这样一个字符串输入到浏览器的框里的时候,浏览器才知道如何进行统一处理。
2.HTTP请求的准备
  • DNS域名解析
  • 发送请求前,需要建立TCP连接,HTTP基于TCP协议。
3.HTTP 请求的构建
请求格式

1)请求行

  • URL
  • 版本:HTTP 1.1
  • 方法: GET/POST/DELETE/PUT

2)首部字段

  • Accept-Charset
  • Content-Type
  • Cache-control:用来控制缓存的
  • If-Modified-Since:关于缓存的
  • 缓存相关


4.HTTP请求的发送和返回

1)发送

  • HTTP 协议是基于 TCP 协议的。所以它使用面向连接的方式发送请求,通过 stream 二进制流的方式传给对方。
  • 到了 TCP 层,它会把二进制流变成一个的报文段发送给服务器。
    2)HTTP返回的构建
    返回格式


5.HTTP2.0

1)2.0与1.0的对比

  • HTTP 1.1 在应用层以纯文本的形式进行通信。每次通信都要带完整的 HTTP 的头,在实时性、并发性上都存在问题。
  • HTTP 2.0 会对 HTTP 的头进行一定的压缩,将原来每次都要携带的大量 key value 在两端建立一个索引表,对相同的头只发送索引表中的索引。

2)特点

  • HTTP 2.0 协议将一个 TCP 的连接中,切分成多个流,每个流都有自己的 ID,而且流可以是客户端发往服务端,也可以是服务端发往客户端。它其实只是一个虚拟的通道。流是有优先级的。
  • HTTP 2.0 还将所有的传输信息分割为更小的消息和帧,并对它们采用二进制格式编码。
  • 通过这两种机制,HTTP 2.0 的客户端可以将多个请求分到不同的流中,然后将请求内容拆成帧,进行二进制传输。
    3)举例
  • 假设我们的一个页面要发送三个独立的请求,一个获取 css,一个获取 js,一个获取图片 jpg。
    • 如果使用 HTTP 1.1 就是串行的
    • 但是如果使用 HTTP 2.0,就可以在一个连接里,客户端和服务端都可以同时发送多个请求或回应,而且不用按照顺序一对一对应。


  • HTTP 2.0 其实是将三个请求变成三个流,将数据分成帧,乱序发送到一个 TCP 连接中。


4)HTTP2.0优点
HTTP 2.0 成功解决了 HTTP 1.1 的队首阻塞问题,同时,也不需要通过 HTTP 1.x 的 pipeline 机制用多条 TCP 连接来实现并行请求与响应;减少了 TCP 连接数对服务器性能的影响,同时将页面的多个数据 css、js、 jpg 等通过一个数据链接进行传输,能够加快页面组件的传输速度。

6.QUIC协议(基于UDP)

1)QUIC协议解决了如下问题

  • 由于HTTP 2.0 是基于 TCP 协议的,并且TCP 协议在处理包时是有严格顺序的。
  • 当其中一个数据包遇到问题,TCP 连接需要等待这个包完成重传之后才能继续进行。虽然 HTTP 2.0 通过多个 stream,使得逻辑上一个 TCP 连接上的并行内容,进行多路数据的传输,然而这中间并没有关联的数据。一前一后,前面 stream 2 的帧没有收到,后面 stream 1 的帧也会因此阻塞。

2)QUIC协议的运行机制

  • 自定义连接机制(不以四元组标识,以一个随机ID标识)
  • 自定义重传机制
    • TCP 为了保证可靠性,通过使用序号和应答机制,来解决顺序问题和丢包问题。
    • tcp重传包序号相同,QUIC重传包序号不同
  • 无阻塞的多路复用
    • 有了自定义的连接和重传机制,我们就可以解决上面 HTTP 2.0 的多路复用问题。
    • 同 HTTP 2.0 一样,同一条 QUIC 连接上可以创建多个 stream,来发送多个 HTTP 请求。
    • 但QUIC 是基于 UDP 的,一个连接上的多个 stream 之间没有依赖。
    • 这样,假如 stream2 丢了一个 UDP 包,后面跟着 stream3 的一个 UDP 包,虽然 stream2 的那个包需要重传,但是 stream3 的包无需等待,就可以发给用户。
  • 自定义流量控制
    • TCP 的流量控制是通过滑动窗口协议。
    • QUIC 的流量控制也是通过 window_update,来告诉对端它可以接受的字节数。
    • 但 QUIC 的窗口是适应自己的多路复用机制的,不但在一个连接上控制窗口,还在一个连接中的每个 stream 控制窗口。
7.总结
  • HTTP 协议虽然很常用,也很复杂,重点记住 GET、POST、 PUT、DELETE 这几个方法,以及重要的首部字段;
  • HTTP 2.0 通过头压缩、分帧、二进制编码、多路复用等技术提升性能;
  • QUIC 协议通过基于 UDP 自定义的类似 TCP 的连接、重试、多路复用、流量控制技术,进一步提升性能。

相关文章

  • 10-HTTP协议

    本人在“极客时间”上购买了一套“趣谈网络协议”的课程,本文为该课程第14讲(第14讲 HTTP协议)的课程笔记。 ...

  • 高级10-HTTP

    1.OSI 七层模型指什么 OSI七层模型是通过七个层次化的结构模型使不同的系统不同网络间实现可靠的通讯 1.物理...

  • git协议

    git支持的协议 local协议 https协议 ssh协议 git协议 github常用的协议

  • Dubbo服务 上传文件解决方案以及Hessian协议

    协议支持Dubbo支持多种协议,如下所示: Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebS...

  • Procotol 和 Delegate

    目录 Procotol 协议的概念 协议的分类 协议的定义 协议的遵循 协议的方法 协议的属性 Delegate ...

  • 计算机网络题目

    几种协议分别属于哪一层传输层协议:TCP协议、UDP协议应用层协议:FTP、HTTP、SMTP网络层协议:IP协议...

  • ARP协议

    地址解析协议ARP 网络层四大协议:ARP协议,IP协议,ICMP协议,IGMP协议。 ARP(Address R...

  • IP数据报格式

    前言 先回顾一下TCP/IP协议栈 网络层的协议有IP协议、ARP协议、ICMP协议和IGMP协议。其中IP协议是...

  • 名词解析

    网络层:IP协议 : 网络协议ICMP协议: Internet互联网控制报文协议 ->IP协议的附属协议 IP...

  • 如何将Git仓库备份到本地

    git常用的传输协议传输协议.png哑协议:哑协议传输进度不可见;智能协议传输可见。传输速度:智能协议比哑协议传输...

网友评论

      本文标题:10-HTTP协议

      本文链接:https://www.haomeiwen.com/subject/yuzexqtx.html