转载forcht
HTTP协议和TCP/IP协议族内的其他众多协议相同,用于客户端和服务器之间的通信。(TCP/IP是互联网相关的各类协议族的总类。)
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会自动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
由于HTTP在每次请求结束后都会自动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即使不需要任何数据,客户端也要保持每隔一段固定时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
HTTP协议规定,请求从客户端发出,最后服务端响应请求并返回。也就是说肯定从客户端开始建立通信,服务端在没有接受到请求之前不会发送响应。
请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。
HTTP请求方法:
GET:获取资源,GET方法用来请求访问已被URI识别的资源。GET没有副作用,如果失败完全可以重复执行GET,而不用担心有任何的问题。指定的资源经服务器端解析后返回响应内容。也就是说,如果请求的是文本,那就原样返回,如果是像CGI那样的程序,则返回经执行过后的输出结果。
POST:用来传输实体的主体。虽然GET方法也可以传输实体的主体,但一般不用GET方法进行传输。而是用POST。
PUT:PUT方法用来传输文件,就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件的内容,然后保存在请求URI指定的内容。
DELETE:DELETE方法用来删除文件,是与PUT相反的方法,按请求URI删除指定资源。
HEAD:与GET方法一样,只是不返回报文主体部分,用于确认URI的有效性以及资源更新的日期时间等。
OPTIONS:询问支持的方法,OPTIONS方法用来查询针对请求URI指定资源支持的方法。
TRACE:跟踪路径,TRACE方法让WEB服务器端将之前的请求通信返回给客户端。
在发送请求时,在Max-Forwards首部字段中填入数值,没经过一个服务器端就会将该数字减一,当数值刚好减到0时,就停止传输,最后接受到请求的服务器端则返回状态码200 OK的响应。
CONNECT:要求用隧道协议连接代理,CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL和TLS协议将通信内容加密之后经网络隧道传输。
CONNECT方法格式:CONNECT 代理服务器:端口号 HTTP版本
HTTP报文:用于HTTP协议交互的信息被称为HTTP报文。请求段的HTTP报文叫做请求报文,响应段的叫做响应报文。HTTP报文是由多行数据构成的字符串文本。
HTTP报文可分为报文首部和报文主体两部分,通过空行(CR+LF)来划分。通常并不一定要有报文主体。
实体:作为请求或相应的有效载荷数据被传输,其内容有实体首部和实体主体组成。通常报文主体等于实体主体。只要当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。