zoukankan      html  css  js  c++  java
  • 计算机网络 HTTP协议

      一、HTTP协议介绍

      HTTP协议由两个部分实现,他们运行在不同的端系统中(一个客户机程序,一个服务器程序),通过交换HTTP报文,进行会话。Web浏览器实现了HTTP协议的客户机端,即浏览器是Web应用的用户代理;Web服务器实现了HTTP的服务器端。

      每个URL地址由两部分组成:存放对象的服务器主机名和对象(所请求资源)的路径名。

      HTTP使用TCP作为底层运输协议。HTTP客户机先发起一个与服务器的TCP连接,一旦建立连接,浏览器和服务器进程就可以通过套接字访问TCP(TCP为HTTP提供一个可靠的数据传输服务)。

      HTTP服务器不保存关于客户机的任何信息,所以HTTP是无状态协议。

      二、HTTP报文

      (可以参考这篇文章)

      1、HTTP请求报文

    • 请求行(request-line):  方法——URL——HTTP协议/版本
    • 请求头(headers):  请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息。
    • 空行(blank line)
    • 请求正文(request-body):使用GET方法,正文为空;POST方法,会有正文(提交表单),此时正文为用户的输入值;HEAD类似GET,服务器会对此进行响应,但是不返回请求对象(可用于故障跟踪)。
      /*典型的HTTP请求报文*/
      /*请求方法为GET,所以没有请求主体*/
      GET /somedir/page.html HTTP/1.1
      Host:www.someschool.edu
      Connection:close
      User-agent:Mozilla/4.0
      Accept-language:fr

        

      2、HTTP响应报文

    • 状态行(status-line): 协议版本(HTTP Version)——状态码(Status Code)——短语(Reason Phrase)
    • 响应头(headers):
    • 空行(blank-line)
    • 响应正文(response-body):
    /*上述请求的响应报文*/
    //状态行
    HTTP/1.1 200 OK        
    //下面是响应首部行
    //告诉客户机在报文发送完后关闭了该TCP连接
    connection:close
    Date:Thu,03 Jul 2003 12:00:15 GMT
    Server:Apache/1.3.0(Unix)
    //对象创建或最后修改的日期和时间
    Last-Modified:Sun, 5 May 2003 12:23:24 GMT
    //表明被发送对象的字节数
    Content-Length:6821
    //表明实体中的对象是HTML文本
    Content-Type:text/html
    
    (data  data  data  data ...)
    
    /*常见的状态码和短语*/
    /*
    200 OK:请求成功,信息包含在返回的响应报文中
    301 Mover Permanently:请求的对象已经被永久转移了,新的URL在响应报文的Location:首部行中指定。
    400 Bad Request:一个通用差错代码,表示该请求不能被服务器解读。
    404 Not Found:被请求的文档不在该服务器上。
    505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本
    */

       另一个请求报文:

    HTTP/1.1 200 OK
    Date: Sat, 31 Dec 2005 23:59:59 GMT
    Content-Type: text/html;charset=ISO-8859-1
    Content-Length: 122
    
    <html>
    <head>
    <title>Wrox Homepage</title>
    </head>
    <body>
    <!-- body goes here -->
    </body>
    </html>

      3、浏览器和响应器(包括缓存服务器)都可以向请求报文或响应报文中的头部插入信息,具体插入哪些信息和诸多因素有关。

      三、用户与服务器交互——cookie

      HTTP服务器是无状态的,即它不保存关于客户机的任何信息。cookie技术则实现了对用户信息的跟踪。

      1、cookie技术由四个部分组成:

      (1)HTTP响应报文中有一个cookie首部行;

      (2)HTTP请求报文中有首部行;

      (3)用户端系统中保留有一个cookie文件,由浏览器管理;

      (4)在Web站点有一个相关的后端数据库(记录用户信息)

     

      2、cookie如何被使用

    • 浏览器访问使用cookie技术的网站,如电商,发送请求;
    • web服务器收到请求,将会为用户产生一个唯一的识别码,并以次为索引在它的后端数据库产生一个项;
    • 接着,用一个包含set-cookie(识别码)首部行的响应报文发送给浏览器;
    • 浏览器收到报文,在它管理的特定cookie文件中添加记录:服务器主机名和识别码
    • 此后的每一个请求,浏览器都会从cookie文件中获取同网站的识别码,放入报文头

    四、Web缓存

      Web缓存服务器,也叫代理服务器,能够代表初始服务器满足HTTP请求的中间服务器。它自己的磁盘存储空间,保存最近请求过的资源对象的拷贝。

      1、应用过程

      (1)浏览器建立到代理服务器的TCP连接,向它里面的对象发送HTTP请求;

      (2)代理Server检查本地是否存储了对象的拷贝,若有,直接做出响应;

      (3)若没有,代理服务器与对象资源所在的初始Server建立TCP连接,向它发出请求,初始服务器会做出应答。

      (4)代理服务器收到了相应的对象,在本地拷贝一份,然后响应转发给浏览器

      2、一个问题:存放在代理服务器中的对象的拷贝已经过时了,如何处理?

      通过条件GET方法——HTTP协议有一种机制,允许缓存服务器证实它的对象是最新的。

      条件GET请求报文——请求报文使用GET方法;请求报文中包含一个if-Modified-Since首部行

      因为代理服务器存储的拷贝对象存储了最后的修改时间,所以当这个对象在隔一段时间又被浏览器请求时,缓存器会发送一个条件GET给初始服务器(有上次修改的时间)。然后,初始服务器向代理Server发送一个响应报文,其中的状态码会只是代理服务器是否可以使用拷贝对象。(304 Not Modified)

      

  • 相关阅读:
    AD预测论文研读系列2
    hdu 5795
    sg函数的应用
    二分查找
    快速幂
    筛选法素数打表
    多校hdu-5775 Bubble sort(线段树)
    多校hdu5754(博弈)
    多校hdu5738 寻找
    多校hdu5726 线段树+预处理
  • 原文地址:https://www.cnblogs.com/bigbigbigo/p/8679580.html
Copyright © 2011-2022 走看看