HTTP协议详解

1、HTTP是一个应用层协议,由请求和相应构成,是一个标准的客户端服务器模型。HTTP通常承载与TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了常说的HTTPS。默认HTTP端口为80,HTTPS的端口号是443

  HTTP在OSI模型中的位置如下图:

 

2、HTTP协议的模型客户端发起请求,服务器回送相应。HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求没有对应的关系。

3、HTTP协议是如何工作的

  首先,客户端发送一个请求给服务器,服务器接收到这个请求后将生成一个相应返回给客户端。一次HTTP操作成为一个事务。

  其工作过程分为四步:

  (1)、客户机与服务器建立连接。点击某个链接,HTTP协议的工作开始;

  (2)、建立连接后,客户端发送一个请求给服务器。格式为:前边是统一资源标识符(URL),中间是协议版本号,后边的MIME信息(包括请求修饰符、客户机信息和可能的内容);

  (3)、服务器街道请求后,给予相应的信息相应。格式为:首先是一个状态行(包括信息的协议版本号、一个成功或错误的代码),然后是MIME信息(包括服务器信息,实体信息和可能内容);

  (4)、客户端接收到服务器返回的信息并显示在用户的显示屏上,然后客户机与服务器断开连接。

4、下面简单介绍下HTTP协议中的一些主要的概念

(1)、请求

  请求由三部分组成:请求行、消息报头、请求正文;

    <1>请求行包括请求方法、请求URI、协议版本

      请求方法有get、post、head等

    <2>报头格式:名字+:+空格+值

      Host:头域指定请求资源的Internet主机和端口号

      User-Agent:包含浏览者的信息,主要是浏览器的名称版本和所用的操作系统

      Accept:告诉服务器可以接受的文件格式

      Cookie:用来标志一些信息

      Cache-Control:指定请求和响应遵循的缓存机制

      Referer:指定请求URI的源资源地址

      Content-Length:内容长度

      Content-Range:响应资源的范围。可以实现断点续传,迅雷就是基于这个原理,使用多线程分段读取网络上的资源,最后在合并

      Accept-Enconding:指定所能接受的编码方式

       ......

      <3>、请求正文,可以没有

  (2)、响应

  

      状态吗由三位数组成,第一个数字定义了响应的类别,有五种可能取值:

      1XX:指示信息——请求已接收,继续处理

      2XX:成功——请求已被成功接收、理解、接受

      3XX:重定向——要完成请求必须进行更进一步的操作

      4XX:客户端错误——请求由语法错误或请求无法实现

      5XX:服务器端错误——服务器未能实现合法的请求

      常见状态码、状态描述和说明:

      200 OK:客户端请求成功

      400 Bad Request:客户端请求由语法错误、不能被服务器所理解

      401 Unauthorize:请求未经授权

      403 Forbidden:服务器收到请求,但是拒绝提供服务

      404 Not Found:请求资源不存在,例如输入了错误的URL

      500 Internal Server Error:服务器发生不可预期的错误

      503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

5、抓包工具

  分两类:

  (1)、常规抓包工具:已IRIS、Wireshark为代表,这类软件可以抓取到整个局域网内所有的数据包,主要工作在数据传输层

  (2)、专用抓包工具:只抓取某一协议,通常工作在应用层,最常见的就是对HTTP协议的抓取,如Fiddler、HttpWatch等

 

下面介绍一下Fiddler这款抓包软件的工作原理:

  Fiddler是以代理服务器的方式监听系统的网络数据流动。运行软件后,就会在本地打开8888端口,网络数据流通过Fiddler进行中转时,可以监视HTTP/HTTPS数据流的记录并加以分析,甚至可以修改发送和接收的数据。

  其工作原理是在浏览器(或者其他使用HTTP协议的进程)和服务器之间扮演代理的角色,这样所有的通信都要经过它。

  其最大的一个特点就是可以中途修改HTTP通信内容。

  工作原理如图:

  

  Fiddler功能很强大,大家可以自行研究下。

posted @ 2015-01-19 21:52  __kelly_  阅读(2339)  评论(4编辑  收藏  举报