一次完整的http请求过程
HTTP协议是无状态协议,依赖瞬间或者近乎瞬间的请求处理。请求信息被立即发送,理想的情况是没有延迟地进行处理;不过,延迟还是客观存在的。HTTP 协议有一种内置机制,在消息的传递时间上有一定的灵活性:超时机制。一个超时就是客户端等待请求消息返回信息的最长时间。
HTTP协议的请求和响应消息如果没有发送并传递成功的话,不保存任何已传递的信息。比如,单击“提交”按牛,如果表单没有发出去,则浏览器将会显示错误信息页,并且返回空白表单。虽然没有提交成功,但是HTTP不保存任何表单信息。
HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。
一次完整的http请求过程
1) 建立连接:客户端与服务器建立TCP连接
域名-->找到对应IP-->三次握手(syn,ack)后建立连接;
2) 发送请求:打开一个连接后,客户端把请求信息发送到服务器的相应端口上,完成请求动作提交;
3) 发送响应:服务器在处理完客户端请求之后,要向客户端发送响应消息;
4) 关闭连接:客户端和服务器端都可以关闭套接字来结束TCP/IP对话。
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
参考文章:
http://www.nowamagic.net/librarys/veda/detail/1339
http://www.cnblogs.com/stg609/archive/2008/07/06/1236966.html