《HTTP权威指南》笔记

简介

2020年春节假期被被新型冠状病毒阻止了,呆在家里太无聊了。就读书充实自己吧!这份笔记后续还会不断补充完整,毕竟一本书不是一天就能看完的。原文链接

HTTP中资源的定义方式

  1. URI(Uniform Resource Identifier): 统一资源标识符
  2. URL(Uniform Resource Locator): 统一资源定位符
  3. URN(Uniform Resource Name): 用特定命名空间的名字标识资源

三者关系型如下:

URI是一类更通用的资源标识符,URL是它的一个子集。URI是一个通用概念,由两个主要的子集URL和URN构成,URL是通过描述资源的位置来标识资源的,URN是通过名字来识别资源的,与它们所处位置无关。

HTTP网络协议栈

浏览器从远程服务器获取资源的大致流程

报文

报文分为请求报文和响应报文,HTTP报文包含三个部分

  1. 起始行:
  2. 在请求报文中用来说明要做些什么
  3. 在响应报文中说明出现了什么情况
  4. 首部字段:
  5. 在响应报文中用来说明需要的MIME类型
  6. 在响应报文中说明了返回文档的MIME类型
  7. 主体
  8. 在请求报文中说明要传递的请求参数
  9. 咋响应报文中说明服务器返回内容

TCP/IP

HTTP 是个应用层协议。HTTP无序操作网络通信的具体细节,它把互联网的细节都交给了通用、可靠的因特网传输协议TCP/IP,TCP/IP 提供了:

  1. 无差错的数据传输
  2. 按序传输(数据总是按照发送的顺序到达)
  3. 未分段的数据流(可以在任意时刻一任意尺寸将数据发送出去)

URL的三个组成部分

https://www.haicheng.website/passages/about-centos-firewall/

  • https: 协议
  • www.haicheng.website: 主机(端口为80)
  • passages/about-centos-firewall/ : 资源路径

HTTP状态码

版本号

在比较HTTP版本时,每个数字都必须进行单独比较,以便确定那个版本更高,比如:HTTP/2.22就比HTTP/3的版本要高,因为22大于3

HTTPS和HTTP在网络协议栈上的位置

HTTP就是"HTTP over TCP over IP"这个"协议栈"中的最顶层,其安全版本的HTTPS就是在HTTP和TCP之间插入了一个密码加密层。

TCP是如何传输数据的

  1. HTTP以流的形式将报文数据的内容通过一条打开的TCP连接按序传输
  2. TCP收到数据流之后,将其砍成段
  3. 将数据段封装在IP分组中
  4. 通过因特网传输

TCP是如何保证连接的正确性

通过4个值确保TCP建立正确的连接

  1. 源IP
  2. 源端口
  3. 目的IP
  4. 目的端口

有关TCP的性能考虑

  • 影响HTTP时延的几个因素:

    • DNS
    • TCP建立连接和建立连接之后服务器返回的应答
    • 服务器对业务的处理
    • 服务器回送HTTP响应
  • 影响TCP时延的几个因素:(后面细看)

    • TCP连接建立握手
    • TCP慢启动拥塞控制
    • 数据聚集的Nagle算法
    • 用于捎带确认的TCP延时确认算法
    • TIME_WAIT时延和端口耗尽

操作和优化连接的HTTP技术

什么是串行事务时延?

在一个网页中包含3个图片,浏览器需要发起四次HTTP事务完成页面加载;每个事务都需要一条新的连接,那么连接时延和慢启动时延就会叠加起来

在这里插入图片描述

解决串行事务时延 的技术:

  1. 并行连接:通过多条TCP连接发起并行HTTP请求
  2. 持久连接:重用TCP连接,以消除连接及关闭时延
  3. 管道化连接:通过共享的TCP连接发起并发的HTTP请求
  4. 复用连接:交替传送请求和响应报文

Web服务器会提供哪些服务?

  1. 建立连接
  • 如果客户端已经打开了一条到服务器的持久连接,可以使用那条连接来发送它的请求。否则客户端需要打开一条新的到服务器的连接;当客户端与服务器建立连接之后,服务器判断另一端是哪个客户端并解析出IP地址并做好监视连接上的数据传输。(此处会用到客户端识别技术)
  1. 接收连接
    • 完成请求报文读取
    • 连接的输入/输出处理结构:
      • 单线程Web服务器
      • 多进程及多线程Web服务器
      • 复用I/O的服务器
      • 复用的多线程Web服务器
        在这里插入图片描述
  2. 处理请求
  3. 访问资源
    • 资源映射
  4. 构建响应
    • 若Web服务器识别出了资源,就执行请求中描述的动作,并返回响应报文
    • 重定向用于以下情况:
      • 永久删除的资源 状态码:301
      • 临时删除的资源 状态码:33或307
      • URL增强 状态码:33或307
      • 负载均衡 状态码:33或307
      • 服务器关联 状态码:33或307
      • 规范目录请求
  5. 发送响应
    • 对于持久连接:正确计算Content-Length,并发送响应
    • 对于非持久连接:服务器端发送响应后,关闭连接
  6. 记录事务处理过程
    • 记录请求日志
      在这里插入图片描述
发布了47 篇原创文章 · 获赞 11 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章