面试引发的有关TCP & HTTP2协议的思考

2018-04-19  本文已影响187人  HotCatLx

Ⅰ-Introduce


Ⅱ-TCP协议

1 简介

2 数据包

  * 第一个包的编号是随机的,假设是0号包,第一个包内存储的字节是100字节
  * 那么第二个包的编号就是100
  * 也可以由第二个包的编号和第一个包的编号确定第一个包内包含的数据负载是多少

3 数据传输和丢包处理


Ⅲ-HTTP 1.0 & HTTP 1.1

1.HTTP(超文本传输协议)简介

2.HTTPの请求

   * GET & POST (我也就只用过这两个....)
   * HEAD作用: 只请求资源的首部/检查超链接的有效性/检查网页是否被修改
   * PUT:请求服务器存储一个资源
   * DELETE 请求服务器删除一个资源
   * TRACE 请求服务器回送收到的请求消息,主要用于测试或者诊断  
   * CONNECT (Keep-Alive)
   * OPTIONS 请求查询服务区的性能,查询与资源相关的选项和需求

3.HTTPの响应

  * 200 OK //客户端请求成功
  * 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
  * 401 Unauthorized //请求未经授权,这个状态代码必须和
WWW-Authenticate 一起使用
  * 403 Forbidden //服务器收到请求,但是拒绝提供服务
  * 404 Not Found //请求资源不存在,eg:输入了错误的 URL
  * 500 Internal Server Error //服务器发生不可预期的错误
  * 503 Server Unavailable//服务器当前不能处理客户端的请求,一段时间后,//可能恢复正常
  * Accept:用于指定客户端接受哪些类型的信息 
  * Accept-Charset 请求报头域用于指定客户端接受的字符集 (未设置,则是任何字符集都可接受) 
  * Accept-Encoding  可接受的内容编码,没有服务器假定客户端对各种内容编 码都可以接受
  * Accept-Language 
  * Authorization 当浏览器访问一个页面时 ,如 果收到服务器的响应代码为 401(未授权),可以发送一个包含 Authorization,要求服务器对其进行验证。
  * Host(必需)
  * User-Agent

4.补充

  1. 文件传输协议 FTP
  2. 电子邮件传输协议 SMTP
  3. 域名系统服务 DNS
  4. 网络新闻传输协议NNTP
this is so boring.JPG

Ⅳ-HTTP 2.0

1. HTTP 2.0 需要解决什么问题

1. 相对于使用 TCP 的HTTP1.1,用户在大多数情况下的感知延迟要有实质上、可度量的改进;
2. 解决 HTTP 中的“队首阻塞”问题;
>  队首阻塞会在下面的HTTP Pipelining解释
3. 并行操作无需与服务器建立多个连接,从而改进TCP的利用率,特别是拥塞控制方面;
4. 保持 HTTP 1.1 的语义,利用现有文档,包括(但不限于)HTTP 方法、状态码、URI,以及首部字段(既向下兼容)
5. 解决突破HTTP1.0 & HTTP1.1 的性能限制,改进传输性能,实现低延迟和高吞吐量

2.主要改变

3.二进制分帧数据层

  1. 组成:流既通道,通道内双向传输消息,消息由帧组成
  2. 流:连接中的一个虚拟信道,可以承载双向的消息;每个流都有一个唯一的整数标识符(1、2…n)
  3. 消息:是指逻辑上的HTTP消息,比如请求、响应等,由一或多个帧组成
  4. 帧:HTTP 2.0 通信的最小单位,每个帧包含帧首部,至少也会标识出当前帧所属的流,承载着特定类型的数据,如HTTP的header 负荷等等,**所有首部数据都会被压缩**
  1. 可以并行交错地发送请求,请求之间互不影响;
  2. 可以并行交错地发送响应,响应之间互不干扰;
  3. 只使用一个连接即可并行发送多个请求和响应;
  4. 消除不必要的延迟,从而减少页面加载的时间;
  5. 不必再为绕过 HTTP 1.x 限制而多做很多工作

4.服务器推送

5.HTTP Pipelining


V-结论

so,这个面试官给的肯定回答也只是五五开喽!!!(卢姥爷曾经而是体面人~)


Ⅵ 参考文档

  1. TCP
  1. 阮一峰TCP协议简介: http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.html
  1. HTTP 2.0
  1. HTTP 2.0 协议详解 : https://blog.csdn.net/zqjflash/article/details/50179235
  2. HTTP的现状 : https://ye11ow.gitbooks.io/http2-explained/content/part2.html
上一篇下一篇

猜你喜欢

热点阅读