图解HTTP学习(2):简单的HTTP协议

摘要: HTTP/1.1

  1. HTTP协议用于客户端和服务器端之间的通信

    规定:请求从客户端发出,服务器端响应请求,即客户端开始建立通信,报文格式如下


    (1)请求报文格式;请求方法+请求URI+协议版本+可选的请求首部字段+内容实体

    (2)响应报文格式:协议版本+状态吗+解释状态码的原因短语+可选的响应首部字段以及实体主体

  2. HTTP是不保存状态的协议

    (1)无状态协议,即不做持久化处理,之前的访问信息不予记录,每一次都是新的请求,后为了保持状态引入了cookie技

术。

(2)HTTP请求URI定位资源,如果不是访问特定资源而是对服务器本身发起请求,可以使用*代替URI
  1. 告知服务器意图的HTTP方法
    (1)GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。如果请求资源是文本,原样返回;如果是CGI,返回执行后的结果

    (2)POST:用来传输实体的主体(get也可以但一般不用),主要目的并不是获取响应的主体内容,当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据;

    (3)PUT:传输文件,类似FTP,由于任何人都可上传,存在安全性问题,一般不用

    (4)HEAD:与get一样,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期和时间等

    (5)DELETE:删除文件,与PUT相反的方法,请求URI删除指定的资源,不带验证机制,一般不用需配合使用

    (6)OPTIONS:询问支持的方法,用来查询针对请求URI指定的资源支持的方法

    (7)TRACE;追踪路径,让web服务器将之前的请求通信返回给客户端的方法,200 ok等,不常用,易引发XST攻击

    (8)CONNECT:要求用隧道协议连接代理,与代理服务器通信时建立隧道,主要使用SSL和TLS协议把内容加密后隧道传输

  2. 使用方法下达命令
    (1)支持的方法列表
    1 GET 请求指定的页面信息,并返回实体主体。
    2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
    3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
    4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
    5 DELETE 请求服务器删除指定的页面。
    6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    7 OPTIONS 允许客户端查看服务器的性能。
    8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
    9 PATCH 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
    10 MOVE 请求服务器将指定的页面移至另一个网络地址
    11 COPY 请求服务器将指定的页面拷贝至另一个网络地址。
    12 LINK 请求服务器建立链接关系。
    13 UNLINK 断开链接关系。
    14 WRAPPED 允许客户端发送经过封装的请求。
    15 Extension-mothed 在不改动协议的前提下,可增加另外的方法

  3. 持久连接节省通信量

    (1)HTTP初始版本,连接一次要断开一次,麻烦,后来就改成不是每次的请求都造成无谓的TCP建立连接和断开这些开销

    (2)管线化:持久连接使得多数请求以管线化方式发送成为可能,即同时发送多个请求

  4. 使用cookie的状态管理

    (1)不用每次跳转页面重新登录,在请求和响应报文中写入cookie信息控制客户端状态,请求报文(没有cookie信息的状态)—响应报文(服务器端生成cookie信息)—请求报文(自动发送保存着的cookie信息)

参考:
https://my.oschina.net/chumingcheng/blog/634801