HTTP服务请求步骤:
    (1)建立连接
    (2)接受请求
    (3)处理请求
    (4)访问资源
    (5)构建响应
    (6)发送响应
    (7)记录事务处理过程
http报文:
http事务,一次请求以及与其对应的响应
http方法:get,put,head,post,delete

http请求报文格式:
<method> <request-URL> <version>
<headers> 
            
<entity-body>

    
http响应:response
http响应报文格式:    
<version> <status> <reason-phrase>
<headers>
            
<entity-body>

<method>:请求方法,希望服务器端执行的动作,如GET/HEAD/POST等
<request-url>:请求的资源,可以是相对路径,也是完整的URL
<version>:协议版本,格式HTTP/<major>.<minor>,如http/1.0
<headers>:HTTP首部
<status>:状态码
<reason-phrase>:原因短语,数字状态码易读信息
<entity-body>:主体部分


HTTP首部:
    通用首部:请求和响应都可以使用
    请求首部:
    响应首部:
    实体首部:用于指定实体属性
    扩展首部:非标准的首部,可能是由程序开发者创建的,例如X-Forward-For
    
通用首部:
    Connection:定义C/S之间关于请求/响应的有关选项
        对于http/1.0,Connection:keep-alive
    Via:显示了报文经过的中间节点
    Cache-Contor:缓存指示
    Pragma:
请求首部:
    Accept    */*
    Accept-Encoding    gzip, deflate
    Accept-Language    zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Connection    keep-alive
    Cookie    U_TRS1=0000000e.5a674e57.58f78476.3ab04d22; 
    Host    client.show.sina.com.cn
    Referer    http://www.sinashow.com/
    User-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
    
    Client-IP:
    Host:请求的主机名和端口号
    Refer:指明了请求当前资源的原始资源的URL,可用于防盗链
    User-Agent:用户代理,使用什么工具发出的请求
        
    Accept首部:用于标明客户端更倾向于支持的方式(比如字符集是否要压缩,)
        Accept:指明服务器能发送的媒体类型
        Accept-Charset:支持使用的字符集
        Accep-Encoding:支持使用的编码方式
        Accept-language:支持使用语言
    条件请求首部:
        Expect:期望
        If-Modified-Since:是否在指定时间以来修改过次资源
        If-None-Match
    跟安全相关的请求首部:
        Authorization:客户端提交给服务端的认证数据,如账号和密码
        Cookie:客户端发送给服务器端身份标识
        Cookie2
    
响应首部:
    Age:
    Server:向客户端标明服务器程序名称和版本
        
    协商首部:
        Accept-Ranges:对当前资源来讲,服务器所能接受的范围类型
        Vary:首部列表,服务器会根据列表中的内容挑选出最适合的版本发送给客户端
    跟安全相关的请求首部:
        Set-Cookie:服务器端在某客户端第一次请求时发给令牌
        Set-Cookie2:
        WWW-Authentication:质询,即要求客户端提供账号和密码

实体首部:
    Location:资源的新位置
    Allow:允许对此资源使用的请求方法
        
内容首部:
    Content-Encoding
    Content-Language
    Content-Length
    Content-Location
    Content-Range
    Content-Type
缓存首部:
    ETag:实体标签
    Expires:过期期限
    Last-Modified:上一次的修改时间
            
HTTP请求方法
    安全方法:GET、HEAD、
    POST,提交表单的方法
    PUT、DELETE、OPTION、TRACE、
    扩展方法:LOCK、MKCOL、COPY、MOVE
    
    GET:请求获取一个资源,需要服务器发送(有或者没有)
    HEAD:跟GET相似,但其不需要服务发送资源而仅传回响应首部
    POST:支持HTML表单提交,表单中有用户填入的数据,这些数据会发送到服务器端,由服务器存储至某位置(例如发送处理程序)
    PUT:与GET相反,向服务器写入文档,发布系统
    DELETE:请求删除URL指向的资源
    OPTION:探测服务器端对某资源所支持的请求方法
    TRACE:跟踪请求要经过的防火墙、代理或网关
    
HTTP状态码
    1xx:信息性状态码
        100 请求继续
    2xx:成功状态码
        200:OK
        201:Created
    3xx:重定向的状态码
        301:Moved Permanently 永久重定向  在响应报文中使用"Location:URL"指定资源现在所处的位置
        302:Found 临时重定向  在响应报文中使用首部"Location:URL" 指定临时资源位置
        304:Not Modified,条件或请求中使用
    4xx:客户端类的错误
        403:Forbidden,请求被服务器拒绝
        404:Not Found 服务器无法找到请求的URL
        405:Method Not Allowed,不允许使用此方法请求相应的URL
    5xx:服务器端的错误
        500:Internal Server Error,服务器内部错误(比如权限错误)
        502:Bad Gateway  代理服务器从上游收到的一条伪响应
        503:Service Unavaliable,服务器此时无法提供服务,但将来可能可用

注:本文来自马哥视频学习记录的笔记。