Analysis of HTTP

HTTP请求的步骤

   1.从url中读取主机名 

   2.利用DNS(domain name service)对主机名进行转换,得到IP地址

   3.如果有端口号的话,读取端口号

   4.根据IP地址和端口号,建立与服务端的TCP(transmission control protocol)/IP连接 

   5.往服务端发送请求报文 

   6.客户端得到响应报文

  7.断开连接

 HTTP的连接方式:

  1.串行连接

  2.并行连接

  3.持久连接:在完成TCP传输后,TCP连接并不会立刻关掉,一般会等到客户端关闭或者服务器主动关掉

  客户端如何使用持久连接:

    1.HTTP/1.0+ Connecttion: Keep-Alive,如果响应中没有Connecttion: Keep-Alive,就认为服务器不支持keep-alive,会在得到响应报文后就关闭连接

    2.HTTP/1.1 persistent

    keep-alive有几个参数,timeout指的是服务器将连接保持在活跃状态的时间,max表示服务器还希望为多少个事务保持此连接的活跃状态

    

    如上图,表示服务器最多会为其他另外5个事务保持连接的打开状态,打开状态保持到连接空闲了2分钟之后。代理与网关:在客户端与服务器进行交互的时候,有可能需要通过代理作为中介来完成交互过程。

HTTP状态码

    响应报文中HTTP状态码表示了客户端HTTP请求的返回结果,得到响应的结果码,有助于了解我们请求时是否成功,如果错误了,是哪种类型的错误。状态码有5种类型,分别表示了对应的返回响应原因。

    1、2XX,表示响应结果为请求被正常处理
      200 OK
      表示客户端发来的请求在服务端被正常处理。
      204 NO Content
     表示处理成功,但是响应中没有任何实体。
     206 Partial Content
     表示服务器成功执行了这部分的请求。

   2、3XX,表示浏览器需要执行某些特殊的处理以正确处理请求。
      301 Moved Permanently
     永久性重定向,表示该资源已经分配了新的URI,原来URI不再使用。
     302 Found
    临时性重定向,跟301类似,也是请求的资源分配了新的URI,但只是临时的,以后可能会换回来。
   304 Not Modified
   表示服务器允许请求访问资源,但是没有满足条件。比如你客户端需要请求一个信息,但是要求该信息是今天编辑的,但是资源里确实有该信息,只是这个信息是昨天编辑的,不符合条件,则服务器返回该状态码。

   3、4XX,表示客户端是发生错误的原因所在
    400 Bad Request
    表示请求报文中存在语法错误。
    401 Unauthorized
    没有认证,表示发送的请求组要进行HTTP认证。
   403 Forbidden
    表示不允许访问这个资源。
    404 Not Found
    表示服务器无法找到请求的资源。

    4、5XX 表示服务器本身发生错误。
     500 Internal Server Error
    表示服务器在执行时发生错误。
     503 Service unavailable
    表示服务器暂时处于超负荷或者正在停机维护,无法处理请求。报文格式

报文格式

其中空行用于区分报文首部和报文主体内容,是由一个回车符和一个换行符组成。

  无论是请求报文还是响应报文都需要有报文首部,当然报文主体有的请求报文是没有的。

一般来说,请求报文的格式如下:

  其中请求首部还包括其他的内容,不一一列举了。

  响应报文格式如下:

最常使用的属性是:

  1 URL, 即http访问的地址

  2 request method, 报文的请求方式

  3 status code, 状态码以及状态短语

  4 Accept Encoding, 内容编码

  5 Connection, 连接方式

  6 Cookie, 添加的cookie内容

  7 Host, 目标主机

  8 User-Agent, 客户端浏览器的相关信息

  9 Set-Cookie, 指定想要在Cookie中保存的内容

部分借鉴于:http://www.cnblogs.com/xing901022/p/4309840.html

posted @ 2019-02-26 21:27  Just_Elyon  阅读(145)  评论(0编辑  收藏  举报