http协议报文

http协议的报文由三部分组成,start line(起始行)、header(首部)、body(主体)。
其中start line和header是由行分隔符分隔的ASCII文本,主体和header之间由两个换行符分隔,主体是一个可选的数据块,header中content-type和content-length分别标识主体的类型和长度。

报文的分类

请求报文和响应报文。
请求报文的格式:

  



响应报文格式

  



http连接

http之间的通信使用Tcp/ip承载,一旦连接建立起来,客户端和服务器之间交换的报文就永远不会丢失,受损和失序。
tcp的数据通过名为ip分组的小数据块发送,tcp收到数据流之后,会将数据流拆分成多个小数据块,成为段,并将段封装在IP分组中,通过internet传输,所有工作有TCP/IP程序处理,对用户透明。
每个ip分组中包括:
一个ip分组首部(源和目的ip地址长度及一些其他标记)
一个tcp端首部(端口号,控制标记,数据排序和完整性检查的数据值)
一个tcp数据块。

http事务性能

http的事务性能完全取决于其下层的tcp的性能。
http事务时延的原因:
1,DNS域名解析,将主机名转换为ip地址
2,客户端向服务器发送tcp连接请求,并等待服务器会送一个请求接受应答。如果同时又数百个http事务的话,时间会积累。
3,新建tcp连接之后使用新建立的tcp管道发送http请求数据,服务器从tcp连接中读取请求报文,处理。
4,服务器响应请求。

tcp连接的握手时延

建立一条新的TCP连接时,tcp软件之间会交换一系列的IP分组,对链接的有关参数进行沟通。
1,发送一个晓得tcp分组,分组中设置一个特殊的syn标记,说明这是连接请求;
2,服务器接受连接,对参数进行计算,并向客户端会送一个tcp分组,分组中syn和ack标记被置位,说明连接已经接受;
3,客户端向服务器回送一条确认信息,通过他连接已成功建立。

时延确认

每个tcp端都有一个序列号和数据完整性校验和,每个短的接收者收到完好的段时都会向发送者回送一个小的确认分组,如果发送者在指定的窗口期内没有收到确认信息,就认为该分组已经被破坏或损毁,需要重新发送。

tcp慢启动

为了防止互联网的特然过载和拥塞,tcp连接会随着时间进行自我调整,起初限制连接的最大速度,如果数据成功传输,会随着时间的推移提供传输的速度。

http/1.0 keep-alive连接

http持久连接http/1.0版本,默认不使用,由客户端首部激活keep-alive,客户端发送Connection:keep-alive首部将一条连接保持在打开状态。参数:
timeout:由响应首部发送,保持活跃状态的时间;
max:由相应受不发送,多少个保持此链接的活跃状态。
作为http代理,不能转发Connections首部和所有名字出现在Connection值中的首部,例如Proxy-Authenticate,Proxy-COnnection,Transfer-Encoding和uprade。

http/1.1 持久链接

与keep-alive的目的相同,像是机制更优越。在默认情况下激活,除非特殊指定否则http/1.1的连接都是持久连接。在事务结束时显示的添加Connection:Close首部。


http代理

公共代理,私有代理,顾名思义。为多个客户端提供代理服务的代理为公共代理,否则为私有代理。
代理与网关的区别:代理连接两端使用相同的协议;网关则相当于协议转换器。
根据代理部署的位置,可分为如下几种:
出口代理
部署在本地网络的出口点,控制本地网络与互联网之间的流量。
访问(入口)代理
部署在ISP访问点上,处理来自客户的聚合请求。
反向代理
部署在网络边缘,web服务器之前。
网络交换代理
放在网络之间。

你可能感兴趣的:(http协议报文)