HTTP概述

文章目录

    • [1. HTTP的基本介绍](#1. HTTP的基本介绍)
    • [2. HTTP的特性](#2. HTTP的特性)
    • [3. HTTP请求协议(Request)](#3. HTTP请求协议(Request))
      • [3.1 请求行](#3.1 请求行)
        • [3.1.1 请求方法](#3.1.1 请求方法)
        • [3.1.2 URI、URL、URN](#3.1.2 URI、URL、URN)
        • [3.1.3 HTTP版本](#3.1.3 HTTP版本)
      • [3.2 请求头](#3.2 请求头)
      • [3.3 请求体](#3.3 请求体)
    • [4. HTTP响应协议(Response)](#4. HTTP响应协议(Response))
      • [4.1 响应行](#4.1 响应行)
      • [4.2 响应头](#4.2 响应头)
      • [4.3 响应体](#4.3 响应体)

1. HTTP的基本介绍

  • HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议 ,规定了客户端(如浏览器)与服务器之间数据传输的规则(最终体现为在网络上传输的数据包的格式)。

2. HTTP的特性

的特性

  • HTTP 协议的设计具有以下几个核心特点,使得它成为互联网中最广泛使用的协议之一:
  1. 基于TCP协议: HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的。

    TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全

  2. 基于请求-响应模型(Request-Response Model): 客户端发送 HTTP 请求 (Request),服务器处理并返回一个 HTTP 响应 (Response),一次请求对应一次响应(先请求后响应)。

  3. 无状态性(Stateless):每次请求都是独立的,服务器不会自动保存任何前一次请求的上下文信息。

    • 缺点: 多次请求间不能共享数据

    • 优点: 速度快

    • 这种无状态设计简化了服务器的实现,但为了满足需要"记住"用户状态的场景(如登录),可以通过 Cookie 或 Session 等机制实现状态管理。

  4. 无连接性(Connectionless)

    • HTTP 协议在早期版本中是无连接的,即每次请求完成后,连接就会关闭。
    • 从 HTTP/1.1 开始,加入了 Keep-Alive 机制,使得连接可以被复用,从而提高了效率。
  5. 灵活性(Flexibility)

    • HTTP 支持传输多种类型的数据,如纯文本(text/html)、图片(image/jpeg)、音频(audio/mp3)、视频(video/mp4)等。
    • 数据类型由响应中的 Content-Type 字段指定,客户端会根据这个字段解析内容。
  6. 扩展性(Extensibility)

    • HTTP 协议支持通过自定义头部字段或扩展功能(如 WebSocket)来满足新的需求。这种设计让 HTTP 能够不断适应互联网的变化。
  7. 跨平台性与普适性

    • HTTP 是与平台无关的协议,几乎所有支持网络通信的设备和编程语言都可以实现 HTTP 客户端或服务器。

    拓展:HTTP与HTTPS的差异:(HTTP 的通信是明文的,数据在传输过程中容易被截获或篡改,而 HTTPS(HTTP Secure) 是基于 HTTP 协议的一种安全协议,通过加入 SSL/TLS 加密层确保数据安全性。)

    特性 HTTP HTTPS
    安全性 数据明文传输,易被窃听或篡改 数据加密传输,确保机密性和完整性
    端口号 默认端口为 80 默认端口为 443
    加密机制 通过 SSL/TLS 加密
    性能 较快,但不安全 略慢(需要加解密),但更安全

3. HTTP请求协议(Request)

  • 请求协议:浏览器将数据以请求格式发送到服务器。包括:请求行请求头请求体

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.1 请求行

  • 请求行:请求行包括请求方法URI(Uniform Resource Locator)协议版本,请求行是 HTTP 请求的第一行,它明确了请求的基本信息。
3.1.1 请求方法
  1. 请求方法:HTTP 定义了一系列请求方法,用于描述客户端对资源的操作,常见请求方法如下所示:

    序号 方法 描述 是否幂等 是否安全 常见用途 适用版本号
    1 GET 从服务器获取资源,用于请求数据而不对其进行更改。例如:获取网页、图片等。 获取网页、文件、数据 HTTP 1.0、HTTP 1.1
    2 POST 向服务器发送数据以创建新资源。常用于提交表单或上传文件,数据包含在请求体中。 表单提交、数据上传 HTTP 1.0、HTTP 1.1
    3 PUT 更新或替换服务器上的资源,如果资源不存在则创建。通常是幂等的。 文件覆盖更新、新建资源 HTTP 1.0、HTTP 1.1
    4 DELETE 从服务器删除指定资源,使用资源标识符指定要删除的内容。 删除文件或数据 HTTP 1.0、HTTP 1.1
    5 PATCH 对资源进行部分修改,只更改资源的一部分而不是替换整个资源。 部分更新资源 HTTP 1.1
    6 HEAD 类似于 GET,但只返回响应头部,不返回实际数据。常用于检查资源的元数据。 检查资源状态或存在性 HTTP 1.0、HTTP 1.1
    7 OPTIONS 返回服务器支持的 HTTP 方法,常用于跨域资源共享(CORS)中的预检请求。 检查支持的请求方法 HTTP 1.1
    8 TRACE 回显服务器收到的请求,用于诊断 HTTP 请求在服务器的处理路径。 请求调试 HTTP 1.1
    9 CONNECT 建立一个到服务器的隧道,通常用于 HTTPS 连接,可通过隧道发送加密数据。 HTTPS 代理隧道 HTTP 1.1

    其中常用的请求方式有GET和POST,它们的差异如下:

    区别方式 GET请求 POST请求
    请求参数 请求参数在请求行中,格式如 ?key=value,数据暴露在地址栏。 例:/brand/findAll?name=OPPO&status=1 请求参数在请求体中,适合传输大数据或复杂结构
    请求参数长度 请求参数长度有限制(浏览器不同限制也不同) 请求参数长度没有限制
    安全性 安全性低。原因:请求参数暴露在浏览器地址栏中。 数据包含在请求体中,结合HTTPS加密传输,安全性相对高
    缓存机制 通常会被浏览器缓存,可重复利用相同资源 默认不被缓存,更适合提交动态数据
    幂等性 幂等,多次相同请求不会改变服务器状态 不幂等,每次请求可能改变服务器状态
3.1.2 URI、URL、URN
  1. URI的定义:URI(Uniform Resource Identifier)即统一资源标识符,是一个用于标识某一互联网资源名称的字符串。

  2. URI的分类:它可以分为 URL(Uniform Resource Locator)和 URN(Uniform Resource Name)。

  3. URI的结构:

    [scheme:][//host:port][path][?query][#fragment]。其中 authority 又可以分为 host:port 的形式,冒号前的是 host(主机),冒号后的是 port(端口)
    
  4. URI的作用:URI 以某种统一的方式标识资源,允许用户对任何资源通过特定的协议进行交互操作。

  5. URL 和 URN 的区别:

    • URL:是 URI 的最普遍形式,即统一资源定位符。它描述了一台特定服务器上某资源的特定位置,通过协议、主机 IP 地址和资源具体地址来定位资源。例如,"https://www.example.com/page.html",其中 "https" 是协议,"www.example.com" 是主机 IP 地址,"/page.html" 是资源具体地址。

    • URN:是 URL 的一种更新形式,统一资源名称。它不依赖于位置,用于命名资源而不指定地址。例如,"urn:isbn:0-486-27557-4",这个 URN 标识了莎士比亚的戏剧《罗密欧与朱丽叶》的某一特定版本,但没有给出资源的具体位置。

      总的来说,URI 是一个广义的概念,URL 和 URN 都是其子集。URL 侧重于定位资源,而 URN 侧重于命名资源。在实际应用中,我们常常使用 URL 来访问互联网上的各种资源,而 URN 的应用相对较少,但它在一些特定的场景下,如唯一标识图书的 ISBN 系统中,发挥着重要的作用。

3.1.3 HTTP版本

3.2 请求头

  • 作用:HTTP是个无状态的协议,所以在请求头设置浏览器的一些自身信息和想要响应的形式。这样服务器在收到信息后,就可以进行相应的操作。

  • 格式:header 的整体格式是键值对结构,每个键值对占一行,键和值之间使用 冒号+空格 进行分割,以下介绍几个常见的报头:

    报头 作用
    Host 目标服务器的主机名
    Content-Type 请求主体的数据类型
    Content-Length 数据主体的大小(单位:字节)
    User-Agent: 浏览器版本。 例如:Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79 ,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko
    Accept-Language 表示浏览器偏好的语言,服务器可以据此返回不同语言的网页
    Accept-Encoding: 表示浏览器可以支持的压缩类型,例如gzip, deflate等
    Accept: 表示浏览器能接收的资源类型,如text/*,image/或者/*表示所有

    如下介绍Content-Type的三种类型:

    1. application/x-www-form-urlencoded

      这是 form 表单提交的数据格式,此时 body 的格式就类似于 query string(是键值对的结构,键值对之间使用 & 分割,键与值之间使用 = 分割

    2. multipart/form-data

      这是 form 表单提交的数据格式(需要在 from 标签上加上 enctyped="multipart/form-data"),通常用于 HTML 提交图片或者文件

    3. application/json

      此时 body 数据为 json 格式,json 格式就是源自 js 的对象的格式。用一个 { } 括住,里面有多个键值对,键值对之间使用逗号分割,键和值之间使用冒号分割

3.3 请求体

  • 请求体(以上图中绿色部分) :存储请求参数
    • 请求体和请求头之间是有一个空行隔开(作用:用于标记请求头结束)

4. HTTP响应协议(Response)

  • HTTP的请求一样,HTTP响应的数据也分为3部分:响应行 响应头响应体

4.1 响应行

  • 响应行(以上图中红色部分):响应数据的第一行。响应行由协议及版本响应状态码状态码描述组成。

  • 常见的响应状态码如下:

    状态码分类 说明
    1xx 响应中 --- 临时状态码。表示请求已经接受,告诉客户端应该继续请求或者如果已经完成则忽略
    2xx 成功 --- 表示请求已经被成功接收,处理已完成
    3xx 重定向 --- 重定向到其它地方,让客户端再发起一个请求以完成整个处理
    4xx 客户端错误 --- 处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
    5xx 服务器端错误 --- 处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等

    状态码大全:https://cloud.tencent.com/developer/chapter/13553

4.2 响应头

  • 响应头包含有关响应的元数据,描述服务器返回的内容和状态。

  • 常见的响应头如下:

    头部字段 描述 示例
    Date 响应生成时间 Wed, 29 Nov 2024 12:00:00 GMT
    Server 服务器软件信息 Apache/2.4.1 (Unix)
    Content-Type 响应内容的媒体类型(MIME 类型) text/html; charset=UTF-8
    Content-Length 响应内容的长度,单位为字节 3145
    Content-Encoding 响应体的压缩方式 gzip 或 deflate
    Content-Language 响应内容的语言 zh-CN
    Cache-Control 缓存控制指令 no-cache、max-age=3600
    Connection 连接选项(保持活跃或关闭) keep-alive 或 close
    Set-Cookie 资源最后修改时间 sessionId=abc123; Path=/; Secure
    ETag 设置客户端的 Cookie 信息 "33a64df551425fcc55e6"
    Last-Modified 资源版本标识符,用于缓存验证 Wed, 29 Nov 2024 11:00:00 GMT
    Location 重定向目标的 URI /new-resource
    Strict-Transport-Security 强制 HTTPS 安全策略 max-age=31536000; includeSubDomains
    X-Frame-Options 防止点击劫持攻击 SAMEORIGIN 或 DENY
    X-Content-Type-Options 禁止浏览器推测 MIME 类型 nosniff
    X-XSS-Protection 浏览器的 XSS 保护指令 1; mode=block

4.3 响应体

  • 响应体(以上图中绿色部分): 响应数据的最后一部分。存储响应的数据
    • 响应体和响应头之间有一个空行隔开(作用:用于标记响应头结束)

参考博客:

  1. HTTP 协议详解-CSDN博客
  2. 【计算机网络】HTTP 协议详解_3.简述浏览器请求一个网址的过程中用到的网络协议,以及协议的用途(写关键点即可)-CSDN博客
  3. HTTP详解_htttp协议-CSDN博客
相关推荐
朝小槿、3 小时前
zerotier已配置但ip连不上?
网络·tcp/ip·ssh
黑客Ash4 小时前
什么是网络安全
网络·数据库·web安全
HUODUNYUN5 小时前
电子邮件安全及核心概念
网络·人工智能·安全·电子邮件
计算机毕设定制辅导-无忧学长5 小时前
HTTP 缓存机制详解
网络协议·http·缓存
梅塔文·欧帕西安卡琼5 小时前
【网络篇】IP知识
网络·网络协议·tcp/ip
秋说5 小时前
【网络协议】DHCP(动态主机配置协议)
网络协议·dhcp