1、第一章
2、第二章
3、第三章
4、第四章
主要描述了客户端如何从服务器获取资源

在这个过程中需要通过DNS服务来解析域名以获取服务器IP地址

三大特性
主要描述关于URL的细节
概念: 统一资源定位符, 是互联网上标准资源的地址
语法:
scheme: HTTP, FTP, SMTP, file frag: 一小片或一小部分资源名称。不会被发送到服务器, 是客户端在服务器获取响应后在客户端进行响应操作 path: 由多个path segment组成[由/分割开], 每一个path segment都会有自己对应的params port: HTTP中默认80, HTTPS默认443 query: 名/值对 组成,多个 名/值对 由 = 连接
快捷方式
从 基础URL 中获取方案、主机、端口、路径等 相对URL 中缺失的部分
方式: 主机名扩展、历史扩展
会对特殊字符进行转义
主要讲报文
报文方向: 流入[服务器]; 流出[从服务器流出]。 报文流向对象: 上游、下游 => 报文始终是从上游流向下游。上、下游的概念是相对的
组成部分:起始行[请求行、响应行], 首部, 实体
起始行
请求行:
种类: GET, HEAD, OPTIONS, POST, PUT, DELETE, TRACE 安全方法: GET, HEAD
GET和HEAD的区别: HEAD不会返回实体
PUT和POST的区别: PUT是将请求的主体部分存储在服务器上, POST是向服务器发送需要处理的数据
1xx 信息性状态码 100:服务器、客户端、代理[客户端请求中带有实体部分, 服务器必须要给出响应]
2xx 成功状态码 3xx 重定向状态码 4xx 客户端错误状态码 5xx 服务器错误状态码
通用首部 信息性首部, 通用缓存首部[Cache-Control, Pragma]
请求首部 Accept首部, 信息性首部, 条件请求首部, 安全请求首部, 代理请求首部
响应首部 信息性首部, 协商首部, 安全响应首部 实体首部 信息性首部[Allow, Location], 内容首部, 实体缓存首部[ETag, Expires, Last-Modified]
HTTP如何使用TCP连接 TCP连接的时延、瓶颈以及存在的障碍 HTTP的优化, 包括并行连接、keep-alive(持久连接)和管道化连接 管理连接时应该以及不应该做的事情
HTTP使用TCP连接的优点: 可靠、无损、按序连接
可靠: TCP为HTTP提供了一条可靠的比特传输管道
按需: TCP流是分段的, 由IP分组传送
IP分组

一个IP分组首部(通常为20字节)
源和目的IP地址、长度、其他一些标记
一个TCP段首部(通常为20字节)
TCP端口号、TCP控制标记、用于数据排序和完整性检查的一些数字值
一个TCP数据块(0个或多个字节)
TCP连接正确运行
<源IP地址、源端口号、目的IP地址、目的端口号> => 唯一确定一条连接
TCP客户端和服务器是如何通过TCP套接字接口进行通信的

TCP连接时间长短
服务器距离远近, 服务器负载情况, 因特网拥挤程度
HTTP事物延误
TCP网络时延[主要因素], 客户端或服务器超载, 正在处理复杂的动态资源
HTTP事物的时间线

影响TCP性能
握手延迟, 延迟确认, TCP慢启动, TIME WAIT累积与端口耗尽[TCP关闭连接],
Nagle算法与TCP NODELAY[关于IP分组中TCP数据块的大小]
握手延迟
关于TCP连接时的四次握手

TCP慢启动
目的: 限制一个TCP端点在任意时刻可以传输的分组数, 防止因特网突然过载或拥塞
connection首部中有三种标签
tips:
TCP连接: 串行连接, 并行连接, 持久连接, 管道连接, 复用连接
串行连接

并行连接

持久连接
管道化连接

概念: 一个事务执行多次结果相同, 则为幂等
每条HTTP响应都应该有精准的Content-Length首部, 用以描述响应主体的尺寸

不安全的关闭会导致重置错误[连接被对端重置]