http遵循request/response模型

基本流程:web浏览器向web服务器发送请求,web服务器处理请求并回应web浏览器

具体步骤:

1、建立tcp连接

web浏览器通过网络(internet又称TCP/IP网络)和web服务器建立连接,

低层的协议建立之后才能进行更高层协议(HTTP是比TCP更高层的应用层协议)

一般的TCP端口为80

2、web浏览器向web服务器发送请求命令

3、web浏览器发送头信息

以头信息的形式向web服务器发送别的信息,之后发送一空白行,通知服务器结束该头文件的发送

4、web服务器回应

如:HTTP/1.1 200 ok

HTTP/1.1是协议的版本号 200是应答状态码

5、web服务器发送应答头信息

服务器随同应答向用户发送关于它自己的数据几被请求文档

6、web服务器想浏览器发送数据

发送头信息它会发送一个空白行来表示头信息发送到此结束

7、关闭TCP连接

web服务器向web浏览器发送了就要关闭

如果加入connection:keep-aliveTCP将仍保持打开状态,保持连接状态能够节省时间和网络带宽


请求信息3部分:

  1. 请求方法/URL协议/版本

  2. 请求头 

  3. 请求正文

例子:

下面是一个HTTP请求的例子:

GET/sample.jspHTTP/1.1   (1)

Accept:p_w_picpath/gif.p_w_picpath/jpeg,*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

Accept-Encoding:gzip,deflate     (2)

 /* 表示结束的空白行   */

username=jinqiao&password=1234    (3)


总结:

.客户端完整的发送一个请求(请求头+请求体)服务器收到这个信息并处理完成后返回一个响应包HTTP应答,然后连接关闭;

客户端发送请求是一次把请求行和请求体全部发出;

浏览器回根据你在地址栏里输入的url进行DNS解析;

服务器使用常见apache+tomato进行处理,apache用来接收HTTP应答,然后请求给tomato进行处理;

建立TCP连接是在地址栏输入完地址敲下回车后,浏览器有一个DNS解析过程,将域名转成IP然后浏览器根据IP加上默认的80端口建立好TCP连接;

HTTP请求的信息头 \r\n和包体都是一起发送的。