zoukankan      html  css  js  c++  java
  • [转]HTTP协议详解

    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功能很强大,大家可以自行研究下。

    http://www.cnblogs.com/it-cen/p/4234852.html

  • 相关阅读:
    电商交易背景知识合集第二季
    技术高手如何炼成
    #研发解决方案#基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案
    电商交易背景知识合集第一季
    真刀真枪压测:基于TCPCopy的仿真压测方案
    安全基础教育第二季第1集:屡战屡败的找回密码
    #研发解决方案#从宏观到微观——天机与鹰眼联手
    挖坑和踩雷
    我们过去几年做对了哪些事
    小伙伴们手滑集
  • 原文地址:https://www.cnblogs.com/wincai/p/4901101.html
Copyright © 2011-2022 走看看