HTTP方法:
GET:
PUT
DELETE
POST
HEAD
状态码:
200到299之间的状态码表示成功;300到399之间的状态码表示资源已被移走;400到499之间的状态码表示客户端请求出错了;500到599之间的状态码表示服务器出错了。
整体范围 | 已定义范围 | 分类 |
100~199 | 100、101 | 信息提示 |
200~299 | 200~206 | 成功 |
300~399 | 300~305 | 重定向 |
400~499 | 400~415 | 客户端错误 |
500~599 | 500~505 | 服务器错误 |
- 200:OK。文档正确返回
- 302:Redirect(重定向)。到其他地方获取资源
- 404:Not Found(没找到)。无法找到这个资源
HTTP报文:
请求报文格式:
<method> <request-URL> <version> -----------------------------------------------起始行
<headers> -----------------------------------------------首部字段
<entity-body> ------------------------------------------------主体
响应报文格式:
<version> <status> <reason-phreae> ------------------------------------------------起始行
<headers> ------------------------------------------------首部字段
<entity-body> -------------------------------------------------主体
起始行:
首部字段:
主体(可选):
URL组件:
<scheme>://<user>:<password>@<host>:<port>/<path>:<params>?<query>#<frag>
方案:访问服务器以获取资源时要使用哪种协议。无默认值
- 使用什么协议访问资源
用户:某些方案访问资源时需要的用户名。默认值:匿名
密码:用户名后面可能要包含的密码,中间由冒号(:)分隔。默认值:<E-mail 地址>
主机:资源宿主服务器的主机名或点分IP地址。无默认值
端口:资源宿主服务器正在监听的端口号。HTTP的默认值:80
路径:服务器上资源的本地名,由一个斜杠(/)将其与前面的URL组件分隔开来。无默认值
参数:某些方案会用这个组件来指定输入参数。参数为名值对。URL中可以包含多个参数字段,他们相互之间以及与路径的其余部分之间用分号(;)分隔
查询:某些方案会用这个组件传递参数已激活引用程序。用字符“?”将其与URL的其余部分分隔开来
片段:一小片或一部分资源名称。引用对象时,不会将frag字段传送给服务器,这个字段是在客户端内部使用的。通过字符“#”将 其与URL的其余部分分隔开来
TCP性能
串行HTTP事务的时间线
HTTP时延就是有TCP网络时延构成
HTTP事务的时延主要原因:
- 客户端首先需要根据UTI(URL)确定Web服务器的IP地址和端口号。
- 客户端会向服务器发送一条TCP连接请求,并等待服务器回送一个请求接受应答。
- 一旦连接建立起来了,客户端就会通过新建立的TCP管道来发送HTTP请求。
- Web服务器会回送HTTP响应
性能聚焦区域:
- TCP连接建立握手
- TCP慢启动拥塞控制
- 数据聚集的Nagle算法
- 用于捎带确认的TCP延迟确认算法
- TIME_WAIT时延和端口耗尽
HTTP连接的处理
connection首部