• 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

  • 相关阅读:
    Apache Calcite对多种异构数据源的支持
    如何成为优秀的技术Leader
    Spring @Scheduled执行原理解析
    Google Guava官方教程
    数据倾斜
    服务框架 Pigeon 的设计与实现
    递归算法的简单应用
    让ListView中的控件失去焦点:android:descendantFocusability="blocksDescendants"
    android:layout_weight的真实含义/android:layout_gravity的条件
    复杂布局的时候,不要复制布局
  • 原文地址:https://www.cnblogs.com/sece/p/10440296.html
Copyright © 2020-2023  润新知