简介
2020年春节假期被被新型冠状病毒阻止了,呆在家里太无聊了。就读书充实自己吧!这份笔记后续还会不断补充完整,毕竟一本书不是一天就能看完的。原文链接
一
HTTP中资源的定义方式
- URI(Uniform Resource Identifier): 统一资源标识符
- URL(Uniform Resource Locator): 统一资源定位符
- URN(Uniform Resource Name): 用特定命名空间的名字标识资源
三者关系型如下:
URI是一类更通用的资源标识符,URL是它的一个子集。URI是一个通用概念,由两个主要的子集URL和URN构成,URL是通过描述资源的位置来标识资源的,URN是通过名字来识别资源的,与它们所处位置无关。
HTTP网络协议栈
浏览器从远程服务器获取资源的大致流程
报文
报文分为请求报文和响应报文,HTTP报文包含三个部分
- 起始行:
- 在请求报文中用来说明要做些什么
- 在响应报文中说明出现了什么情况
- 首部字段:
- 在响应报文中用来说明需要的MIME类型
- 在响应报文中说明了返回文档的MIME类型
- 主体
- 在请求报文中说明要传递的请求参数
- 咋响应报文中说明服务器返回内容
TCP/IP
HTTP 是个应用层协议。HTTP无序操作网络通信的具体细节,它把互联网的细节都交给了通用、可靠的因特网传输协议TCP/IP,TCP/IP 提供了:
- 无差错的数据传输
- 按序传输(数据总是按照发送的顺序到达)
- 未分段的数据流(可以在任意时刻一任意尺寸将数据发送出去)
二
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是如何传输数据的
- HTTP以流的形式将报文数据的内容通过一条打开的TCP连接按序传输
- TCP收到数据流之后,将其砍成段
- 将数据段封装在IP分组中
- 通过因特网传输
TCP是如何保证连接的正确性
通过4个值确保TCP建立正确的连接
- 源IP
- 源端口
- 目的IP
- 目的端口
有关TCP的性能考虑
-
影响HTTP时延的几个因素:
- DNS
- TCP建立连接和建立连接之后服务器返回的应答
- 服务器对业务的处理
- 服务器回送HTTP响应
-
影响TCP时延的几个因素:(后面细看)
- TCP连接建立握手
- TCP慢启动拥塞控制
- 数据聚集的Nagle算法
- 用于捎带确认的TCP延时确认算法
- TIME_WAIT时延和端口耗尽
操作和优化连接的HTTP技术
什么是串行事务时延?
在一个网页中包含3个图片,浏览器需要发起四次HTTP事务完成页面加载;每个事务都需要一条新的连接,那么连接时延和慢启动时延就会叠加起来
解决串行事务时延 的技术:
- 并行连接:通过多条TCP连接发起并行HTTP请求
- 持久连接:重用TCP连接,以消除连接及关闭时延
- 管道化连接:通过共享的TCP连接发起并发的HTTP请求
- 复用连接:交替传送请求和响应报文
四
Web服务器会提供哪些服务?
- 建立连接
- 如果客户端已经打开了一条到服务器的持久连接,可以使用那条连接来发送它的请求。否则客户端需要打开一条新的到服务器的连接;当客户端与服务器建立连接之后,服务器判断另一端是哪个客户端并解析出IP地址并做好监视连接上的数据传输。(此处会用到客户端识别技术)
- 接收连接
- 完成请求报文读取
- 连接的输入/输出处理结构:
- 单线程Web服务器
- 多进程及多线程Web服务器
- 复用I/O的服务器
- 复用的多线程Web服务器
- 处理请求
- 访问资源
- 资源映射
- 构建响应
- 若Web服务器识别出了资源,就执行请求中描述的动作,并返回响应报文
- 重定向用于以下情况:
- 永久删除的资源 状态码:301
- 临时删除的资源 状态码:33或307
- URL增强 状态码:33或307
- 负载均衡 状态码:33或307
- 服务器关联 状态码:33或307
- 规范目录请求
- 发送响应
- 对于持久连接:正确计算Content-Length,并发送响应
- 对于非持久连接:服务器端发送响应后,关闭连接
- 记录事务处理过程
- 记录请求日志
- 记录请求日志