在了解HTTP协议前先来看看什么是URL,使用浏览器访问网站时要在浏览器的地址栏里输入网站的地址,这个地址就叫URL(Uniform Resource Locator,同意资源定位符)当在浏览器中输入一个URL或是一个超连接时,URL就确定了要浏览的地址。浏览器通过HTTP协议或者HTTPS协议(加密的HTTP协议),将Web服务器上的网页代码提取出来,再在浏览器上呈现给大家。

如何查看浏览器使用http协议(想知道浏览器是怎么访问网站的)(1)

例如:http://www.xxxxxx.com/china/index.htm 它的含义可以理解为:

http:// 代表超文本传输协议(HTTP协议),通常是默认的可以不用输入,注意如果是HTTPS就需要手动输入了。

www:代表一个web服务器(即网站)。

xxxxxx.com/:代表服务器的域名或站点服务器的名称。

China/:为该服务器上的子目录,类似于文件夹。

HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于冲Web服务器传输超文本文件到本地浏览器的传输协议,现在使用的是HTTP/1.1版本(1997年开始)。HTTP协议不仅保证了计算机正确快速的传输超文本文件,还确定了传送的文件中哪一部分,以及哪部分内容首先显示。

HTTP协议是基于请求/响应的模式(相当于C/S模式)。一个服务器和客户机建立连接后,由客户机发送请求给服务器,请求格式为:URL,协议版本号等,然后服务器接收到请求后返回响应信息,包括了信息的协议版本号,成功或错误的代码,实体信息内容等。

由于HTTP协议通常是发生在TCP/IP连接上,所以缺省的端口号是TCP 80(其他端口也可以使用)HTTP的连接交换信息过程共分四个分别是:建立连接,发送请求信息,发送响应信息,关闭连接。

建立连接:连接的建立是通过申请套接字(Socket)实现的。客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。

发送请求:打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作。

请求消息的格式如下:

请求消息=请求行(通用信息|请求头|实体头) CRLF[实体内容]

请求行=方法 请求URL HTTP版本号 CRLF

方法=GET|HEAD|POST|扩展方法

URL=协议名称 宿主名 目录与文件名

请求行中的方法描述指定资源中应该执行的动作,常用的方法有GET、HEAD和POST。不同的请求对象对应GET的结果是不同的,对应关系如下:

对象      GET的结果

文件      文件的内容

程序      该程序的执行结果

数据库查询   查询结果

HEAD——要求服务器查找某对象的元信息,而不是对象本身。 (页面首部)

POST——从客户机向服务器传送数据,在要求服务器和CGI做进一步处理时会用到POST方法。POST主要用于发送HTML文本中FORM的内容,让CGI程序处理。

头信息又称为元信息,即信息的信息,利用元信息可以实现有条件的请求或应答 。

请求头——告诉服务器怎样解释本次请求,主要包括用户可以接受的数据类型、压缩方法和语言等。

实体头——实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。

实体——请求或应答对象本身。

发送响应:服务器在处理完客户的请求之后,要向客户机发送响应消息。

响应消息=状态行(通用信息头|响应头|实体头)CRLF[实体内容]

状态行=HTTP版本号 状态码 原因叙述

状态码表示响应类型如下:

1××  保留

2××  表示请求成功地接收

3××  为完成请求客户需进一步细化请求

4××  客户错误

5××  服务器错误

响应头的信息包括:服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用。

最后关闭连接:客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话。

根据访问服务器访问资源的不同,HTTP请求的方式是不同的,除了常用的三种外还有很多种,下面对应列举说明。

GET: 请求指定的页面信息,并返回实体主体。

HEAD: 只请求页面的首部。

POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

PUT: 从客户端向服务器传送的数据取代指定的文档的内容。

DELETE: 请求服务器删除指定的页面。

OPTIONS: 允许客户端查看服务器的性能。

TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。

PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。

MOVE: 请求服务器将指定的页面移至另一个网络地址。

COPY: 请求服务器将指定的页面拷贝至另一个网络地址。

LINK: 请求服务器建立链接关系。

UNLINK: 断开链接关系。

WRAPPED: 允许客户端发送经过封装的请求。

这里主要来解释一下GET,POST和HEAD的含义

GET请求最为常见,它后面跟随一个网页的位置,服务器接收请求并返回请求页面。除了页面位置作参数之外,请求还可以跟随协议的版本如HTTP/1.1等作为参数,以发送给服务器更多的信息。

POST请求要求服务器接收大量的信息,除了POST后面跟随的参数外,浏览器还会在后面持续发送数据,让服务器进行处理。

HEAD请求在客户程序和服务器之间进行交流,它不会返回具体的文挡。只请求页面首部。当使用GET和POST时,服务器最后都将结果文挡返回给客户程序,浏览器将刷新显示。而HEAD请求不同,它仅仅交流一些内部数据,这些数据不会影响浏览的过程。因此HEAD方法通常不单独使用,是和其他方式一起使用,起到辅助的作用。

下面已抓包图例说明一下简单的HTTP应用包的主要内容:

如何查看浏览器使用http协议(想知道浏览器是怎么访问网站的)(2)

红色部分就是请求,蓝色是响应部分。

请求方式是GET,HTTP版本是1.1 ,Accept-language使用的语言,user-agent初始化请求的可客户机(浏览器或其他编辑工具),Host主机(请求的对象)等信息。

响应信息返回的协议版本为HTTP/1.1,请求的HTTP版本可以和返回的HTTP不一致。返回的状态码为200 OK。服务器类型,当前日期时间等。Content-type连接的媒体类型等。

,