HTTP协议-基础篇

定义

1.HTTP协议(超文本传输协议):它可以使浏览器更高效,网络传输减少。它不仅保证正确快速的传输文本,还能确定那一部分内容首先显示(如文本先于图形)。

2.HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型,HTTP是一个无状态的协议。并且永远都是客户端发起请求,服务器回送响应。

解释什么是无状态协议:即同一个客户端的这一次请求和下一次请求没有对应的关系。

 

在TCP/IP协议栈中的位置

3.HTTP经常挂载于TCP/IP之上,有时也承载于TLS、SSL之上,这个时候就成了我们常说的HTTPS。

 

工作流程

 4.一次HTTP操作称之为一个事务,其工作过程分为四步

  1、首先,客户机与服务器需要建立连接。(PS。只要单击某个链接,HTTP的工作就会开始)

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

  3、服务器接到请求以后,给予相应的响应信息,其格式为一个状态行,一个成功或错误的代码,后面是MIME信息,包括服务器信息,实体信息和可能的内容。

  4、客户端接收服务端返回的信息通过浏览器显示在用户的显示屏上。对于用户来说,这些信息是HTTP自己完成的,用户只要用鼠标点击,等待显示信息就可以了。

解释什么是MIME(多用途互联网邮件拓展类型):设定某种拓展名的文件,用一种应用程序来打开的方式类型,当该拓展名文件被访问的时候,浏览器会自动使用制定的应用程序来打开,多用于指定一些客户端定义的文件名,以及一些媒体打开的方式。

 

了解TCP三次握手工作的整个过程

  1. 浏览器向服务器发送连接请求,此为TCP三次握手的第一步。
  2. 服务器回应了浏览器的请求,并要求确认,此为TCP三次握手的第二步。
  3. 浏览器回应了服务器的确认,连接成功,此为TCP三次握手的第三步。

了解HTTP工作的整个过程

    1. 地址解析:示例http://localhost:8080/index.htm

        从中分解出协议名,主机名,对象路径,等信息

        协议名:http

        主机名:localhost:8080

        对象路径:/index.htm

      2. 封装HTTP请求数据包

        把以上部分结合本机自己的信息,封装成一个HTTP请求数据包。

      3.封装TCP包,建立TCP连接(TCP三次握手)

        在HTTP开始工作之前,客户机首先要通过网络与服务器建立连接,该连接时通过TCP来完成,该协议与IP协议共同构建Internet,即著名的TCP/IP协议,HTTP是比TCP更高层次的应用层协议,根据规则,只有在低层次协议建立后,才能建立更高层次的连接,因此首先要建立TCP连接。

      4. 客户机发送请求命令,请求格式为:统一资源标识符,协议版本号,后面是MIME信息,包括请求修饰符,客户机信息和可能的内容。

      5. 服务器响应:服务器接到请求后,给予响应信息,其格式为一个状态行,包括信息的协议版本号,一个成功或错误的代码,后面是MIME信息,包括服务器信息,实体信息,和可能内容。

      6.服务器关闭TCP连接:一般情况下,一旦服务器发送了请求数据,它就会关闭TCP连接,然后如果浏览器或服务器在其头信息加入了这行代码,

          Connection:keep-alive

      TCP连接在发送后仍然保持打开状态,于是浏览器可以通过相同的连接发送请求,节省了建立连接所花的时间,还节约了网络带宽。

 

HTTP几个重要的概念

  1.连接Connection

    一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。

    在http1.1中:request和response的头中,都有可能出现一个Connection的头,此header的含义是,当client和server通信时对于长连接如何进行处理。

          client和server都是默认支持对方长连接的,如果client使用http1.1,但是又不希望使用长连接,则需要在client中指明header的Connection为close,如果server也不想支持长连接则在response中也要指明Connection为close,不论request还是response中包含了close的Connection,都表明当前在使用的TCP连接在当次请求处理完毕后会关掉,以后client在重新请求时必须重新建立TCP连接。

  2.消息:message:HTTP通讯的基本单元,包括一个结构化的八元数组序列,并通过连接传输。

  3.请求:Request:一个客户端到服务器的请求包括:应用于资源的方法,资源的标识符和协议的版本号。

  4.响应:Response:包括HTTP版本号,请求状态和MIME。

  5.资源Resource:uri标识的网络资源对象,

  5.实体Entity:它可能包含在一个请求或响应的,一个实体包括实体头信息和实体的本身内容。

  6.客户机Client:一个未发送请求而建立连接的应用程序。

  7.用户代理UserAgent:初始化一个请求的客户机,它们是浏览器,编辑器,或其他用户工具。

  8.服务器Server:一个接受连接并返回信息的应用程序。

  9.OriginSerVer:一个给定资源并可以在上面驻留的服务器。

  10.Proxy:一个中间程序,可以充当一个服务器,也可以充当一个客户机,为其他客户机建立请求。

       代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处理还没有被用户代理完成的请求。

  11.缓存cache:响应信息的局部存储。

  12.网关:Gateway:一个作为其他服务器中间媒介的服务器,与代理不同的是,网关接受请求就好像对被请求的资源来说,它就是服务器,发出请求的服务机没有意识到它是在和网关打交道。

  13.通道:Tunel:是两个连接的中介程序,一旦被激活,通道被认为不属于HTTP通讯,尽管通道可能是一个被HTTP初始化的,当中继连接两段关闭时,通道就消失。

        当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。

  

  

  

 

posted @ 2017-09-14 11:57  vvning  阅读(170)  评论(0编辑  收藏  举报