现在的位置: 首页 > 综合 > 正文

快速了解HTTP协议

2019年04月21日 ⁄ 综合 ⁄ 共 2423字 ⁄ 字号 评论关闭

最近要做一个http相关的东西,就学习了一下,自己做了总结和笔记,新手看一遍也能懂个大概

初期简单学习http协议需要知道的东西都列出,不足的地方留言补充

1.版本

      HTTP 1.1 是今天普遍使用的一个版本

2.http是一个无状态协议

3.层次结构

    _______________
    |HTTP
    |____|____TLS SSL_
    |
    |___TCP____
    |
    |___IP_____
    |
    |__链路层__

     由结构可知:1).http是一个应用层协议
                             2).http有时也承载于TSL,SSL,这时候就是我们常說的https
                             3).http是基于TCP的连接

4.端口号

    http的端口号为80,https的端口号为443

5.http永远都是客户端发起请求,服务端响应

6.工作流程
    (1)客户机与服务器建立连接
    (2)客户机发送请求给服务器
    (3)服务器接到请求后,给予相应的响应信息
    (4)客户机获得返回的数据通过浏览器显示,断开连接

7.URL

    http://host[":"port][abs_path]
    http标示通过http协议定位网络资源
    host 指合法的主机名或者IP地址,域名
    port 指定一个端口号,缺省为80
    abs_path 求情资源的URI

8.持久连接和非持久连接
    每个请求/响应都经过单独的TCP连接发送:非持久连接
    对于相同的客户机和服务器在响应后保持该连接,后续的请求和响应通过该连接传送:持久连接
    http默认使用持久连接


9.http报文格式

(1)请求报文
示例:
    GET /somedir/page.html HTTP/1.1        /*请求行*/
    Host: www.someschool.edu            /*定义了目标所在主机*/
    Connection: close                    /*浏览器告诉服务器不需要使用持久连接,请求结束后就关闭连接*/
    User-agent: Mozilla/4.0                /*定义用户代理,及浏览器类型*/
    Accept-langugae: fr                    /*请求对象的语言版本,服务器没有就使用默认版本*/
    /*附加回车换行*/

说明:
    报文是普通的ASCII文本书写的
    每行用回车换行(\r\n)结束
    最后一行附加有回车换行
    该报文有5行,实际上可以有一行或者多行
    第一行叫做请求行,结构为: 方法字段+URL字段+http协议版本
            方法字段有:GET,POST,HEAD,PUT和DELETE,绝大部分报文是GET
            URL字段填写对象地址
            版本字段是自解释的
    后续的行叫做首部行
            最后一行Accept-language 这样的首部行是众多可选协商的首部行之一
            
http的请求通用报文格式:
    请求行: |方法|sp| URL|sp| 版本|cr|lf|
    首部行: |首部行字段名|sp|字段的值|cr|lf|
    首部行:  ...    ...
    附加空行:|cr|lf|
    实体主体 (POST 方法时使用)
    /*当使用扩展的GET方法时就可以不使用报单生成POST方法*/

其他方法
    HEAD方法类似于GET方法,服务器收到HEAD方法时,会用一个http报文响应,不返回请求对象
    PUT方法用于将对象上传到服务器指定路径
    DELETE 方法可以删除服务器上指定对象

(2)HTTP响应报文
对应上面的报文:
    HTTP/1.1 200 OK                                /*状态行*/
    Connection: close                            /*告诉客户机报文发送后关闭TCP连接*/
    Date: Thu, 03 Jul 2003 12:00:15 GMT            /*服务器发送报文的时间*/
    Server: Apache/1.3.0 (Unix)                    /*表明该报文是Apache Web服务器产生的*/
    Last-Modified: Sun, 6 May 2007 09:23:25 GMT    /*对象创建或者最后修改的时间*/
    Content-Length: 6821                        /*被发送数对象的字节*/
    Content-Type: text/html                        /*指示实体中的对象是HTML文本*/
    /*附加换行回车*/
    (data...data...)                            /*实体主体*/

说明:
    第一行初始状态行,然后是首部行,最后是实体主体
    状态行有3个字段:协议版本+状态码+状态信息

http响应报文的通用格式
    状态行: |版本|sp| 状态码|sp| 短语|cr|lf|
    首部行: |首部行字段名|sp|字段的值|cr|lf|
    首部行:  ...    ...
    附加空行:|cr|lf|
    实体主体 

常见的状态码和状态信息
    200 OK:请求成功,信息包含在返回的响应报文中
    301 Moved Permanently:请求的对象被永久移除了,新的URL定义在响应报文的Location:首部行中指定
    400 Bad Request:一个通用的差错代码,请求不能被服务器理解
    404 Not Found:请求的文档不在服务器
    505 HTTP Version Not Supported:服务器不支持的HTTP版本
   

抱歉!评论已关闭.