学习HTTP权威指南

177 阅读3分钟

关于HTTP报文

关于请求方法: 常见的请求方法我就不多说了,这里说下Options Options方法请求Web服务器,让其告知客户端它都支持哪些方法,或者是对哪些资源有些特殊的支持。 这为客户端提供了一种手段,让客户端不用实际访问那些资源就能判断访问各种资源的最优方式。

关于请求成功状态码: 也列出常见的:

请求状态码和原因短语
200--
203Non-Authoritative Information实体首部包含的信息不是来源于服务端,而是来源于资源的一份副本。如果中间节点上有一份资源副本,但无法或者没有对它所发送的与资源有关的元信息(首部)进行验证,就会出现这种情况。
204No Content响应报文中包含若干首部和一个状态行,但是没有实体的主体部分。主要用于在浏览器不转为显示新文档的情况下,对其进行更新(比如刷新一个表单元素)
20Patial Content成功执行了一个部分或者Range(范围)请求。客户端可以通过一些特殊的首部来获取部分或者某个范围内的文档————这个状态码就说明请求成功了。

Http 的首部包括 通用首部,请求首部,响应首部

举例: 通用首部: Date 请求首部: Accept-* If-* 安全请求首部: Authorization Cookie 代理请求首部 proxy-Connection 响应请求首部: Server 协商首部: Accept-Range Vary 安全响应首部 实体首部:Content-* ETag Expires Last-Modified

关于Tcp连接管理 网络时延主要又下面几种原因:

  1. 如果是一个新的URL,需要通过DNS将URI中的主机名转换成一个IP地址。可能要数十秒时间。(但是现在大半部分HTTP客户端都有了小的DNS缓存,这个查询变得很快)。
  2. TCP的连接会有时延。
  3. 传输报文,服务端解析报文都需要时间。
  4. 回传HTTP报文也需要时间。

这些TCP的时延取决于硬件速度,网络和服务器的负载,请求响应报文的尺寸,已经客户端和服务端的距离。

性能聚焦区域

最常见的TCP相关时延,其中包括:

  1. TCP连接建立握手
  2. 慢启动拥塞控制
  3. 用于捎带确认的TCP延迟确认算法

TCP握手连接需要3步:

  1. 客户端向服务端发送一个小的TCP分组,这个分组中设置了一个SYN标记,说明这是个连接请求
  2. 如果服务器接受了,会进行一些计算,然后向客户端回送了一个TCP分组,这个分组中SYN ACK都被置位,说明连接请求已经被接收。
  3. 最后客户端向服务器发送一条确认信息,ACK被置位,通知它连接已经成功

HTTP 关闭连接

TCP连接是双向的,TCP连接的每一端都有输出连接和输入连接,在关闭连接时,先关闭输出连接总是很安全的。关闭输入的信道很危险,除非你知道另一端已经不打算传输数据了。如果另一端向你已经关闭的输入信道发送信息,操作系统就会回送两一端一条 “连接被对端重置”的报文。大部分操作系统会将这视为很严重的问题,会删除对端还没有读取的所有缓存数据。