HTTP 协议

作者: Gakki0725 | 来源:发表于2022-02-09 10:22 被阅读0次
    作者:Gakki

    01. HTML 简介

    • HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
    • HTTP 是一个基于 TCP/IP 通信协议来传递数据。HTTP 是一个属于应用层的面向对象的协议。
    • HTTP 协议工作于客户端-服务端架构为上。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。WEB 服务器根据接收到的请求后,向客户端发送响应信息。

    02. 主要特点

    • 简单快速:客户向服务器发送请求服务时,只需传送请求方法和路径。请求方法常用的有:GET、POST、DELETE等。由于 HTTP 协议简单,所以 HTTP 服务器的程序规模小,因此通信速度很快。
    • 灵活:HTTP 协议允许传输任意类型的数据对象。传输的类型由 Content-Type 加以标记。
    • 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。但是却不利于客户端与服务器保持会话连接。
    • 无状态:是指协议对于事物处理没有记忆能力。无状态意味着如果后续处理需要前面的信息,它必须重新传递,这样就可能导致每次连接传递的数据量增大。另一方面,在服务器不需要先前信息时,它的应答就比较快速。为了弥补这个缺点,产生了两个 HTTP 状态的技术。即:Cookie 与 Session 。
    • 支持 B/S 及 C/S 模式

    03. URL

    • URL(Uniform Resource Locator):统一资源定位符;负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符 URL。
    • 下面以这个URL为例,介绍下普通URL的各部分组成:
      https://www.jianshu.com:80080/u/3f6551b9da15.html?id=312312&page=3#work
      一个完整的 URL 包括以下部分:
      1. 传输协议:用来传输客户端和服务器交互信息的;常用的传输协议:HTTP、HTTPS、FTP;本例中使用的是 HTTPS 协议。在 " https " 后面的 “ // ” 为分隔符。
      2. 域名:该 URL 的域名部分为“www.jianshu.com”。一个 URL 中,也可以使用IP地址作为域名使用。
      3. 端口部分:用来区分同一台服务器上不同的服务的标识,不同服务之间一般是不能使用相同的端口号的。HTTP 端口号 80;HTTPS 默认端口号 443;FTP 默认端口号 21。跟在域名后面的是端口号,域名和端口之间使用 “ : ” 作为分隔符,端口不是一个 URL 必须的部分,如果省略端口部分,将采用默认端口号。
      4. 路径:以 “ / ” 字符区别路径中的每一个目录名称。
      5. 查询:以 “ ? ” 为起到,每个参数以 “ & ” 隔开,再以 “ = ” 分开参数名称与数据。
      6. 片段:以 “ # ” 字符为起点。

    04. 报文结构

    请求报文
    响应报文
    • HTTP 请求报文和响应报文都由三个部分组成,两种报文格式的区别是开始行不同。

    GET 请求:

    GET /users/3f6551b9da15/courses?page=1&count=10 HTTP/1.1
    Host: www.jianshu.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
    Accept: application/json
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate, br
    Connection: keep-alive
    
    • 请求行:请求方法( GET ) + 统一资源标识符( /users/3f6551b9da15/courses?page=1&count=10 ) + 所使用的 HTTP 版本( HTTP/1.1 )。如:GET /users/3f6551b9da15/courses?page=1&count=10 HTTP/1.1
    • 请求头部:用来说明服务器要使用的附加信息。从第二行起为请求头部。
    • 空行:请求头部后面的空行是必须的。即使第四部分的请求数据为空,也必须有空行。
    • 请求数据:也叫主体,可以添加任意的其他数据。

    GET 响应:

    HTTP/1.1 200 OK
    Server: Tengine
    Date: Tue, 08 Feb 2022 10:14:34 GMT
    Content-Type: application/json; charset=utf-8
    Connection: keep-alive
    Content-Encoding: gzip
    
    • 状态行:HTTP 版本 ( HTTP/1.1 ) + 状态码 ( 200 ) + 状态码描述 ( OK ) ;如:HTTP/1.1 200 OK。
    • 响应头部:用来说明客户端要使用的一些附加信息。字段名 + 冒号 + 值;如:Content-Type: application/json; charset=utf-8。
    • 空行:消息报文后面的空行是必须的。
    • 响应正文:服务器返回给客户端的文本信息。

    HTTP 响应状态码

    • 最常见的 HTTP 状态码:

      • 200:请求成功
      • 301:资源(网页等)被永久转移到其他 URL
      • 404:请求的资源(网页等)不存在
      • 500:内部服务器错误
    • HTTP 状态码分类共分为 5 类:

    分类 描述
    1** 信息,服务器收到请求,需要请求者继续执行操作
    2** 成功,操作被成功接收并处理
    3** 重定向,需要进一步的操作已完成请求
    4** 客户端错误,请求包含语法错误或无法完成请求
    5** 服务器错误,服务器在处理请求的过程中发生了错误

    常见的 HTTP 状态码
    HTTP 常用的请求方式、区别和用途
    TCP 连接与释放相关的核心问题
    TCP/IP 三次握手四次分离
    HTTP 常用的请求方式、区别和用途
    HTTP和HTTPS协议?
    常见的 HTTP 状态码
    GET与POST的区别?
    关于Token、Session、Cookie的区别
    SSL认证与CA认证的区别

    相关文章

      网友评论

        本文标题:HTTP 协议

        本文链接:https://www.haomeiwen.com/subject/vtobkrtx.html