应用层协议HTTP

一.HTTP基本概念和用途

HTTP(超文本传输协议),他定义了客户端(浏览器)与服务器之间是如何的通信的,用以交换或传输超文本(像是HTML文档)

HTTP协议规定了客户端向浏览器发送请求,服务器收到客户端请求后进行处理并响应。

HTTP协议是一个无连接,无状态的协议,所以每次的请求都需要重新建立http连接,并且服务器不会保存客户端的信息

二.什么是url

我们常说的网址就是url

URI(Uniform Resource Identifier)和URL(Uniform Resource Locator)是两个容易混淆但又有区别的概念。以下是它们的具体区分:

1. 定义差异

  • URI(统一资源标识符)

    • 示例:urn:isbn:0451450523(这是一本书的URN标识符)
  • URL(统一资源定位符):是URI的一个子集,不仅标识资源,还提供访问该资源的具体位置和方法。url也是uri的一种

    • 示例:https://www.example.com/index.html(这是一个网页的具体访问地址)

2. 功能特点

  • URI可能包含:

    • URN(统一资源名称):仅标识资源而不指定位置,如urn:issn:0167-6423
    • URL:既标识又定位资源
  • URL必须包含:

    • 访问协议(如http/https/ftp)
    • 主机地址(如www.example.com
    • 具体路径(如/index.html)

3. 结构对比

典型URL结构示例:

复制代码
https://www.example.com:443/path/to/resource?query=string#fragment
  \___/   \_____________/\__/\_______________/\_________/\________/
  协议       主机       端口     路径          查询参数    片段标识

而URI的结构范围更广,可以是:

  • 上述完整的URL
  • 或简短的URN格式:mailto:user@example.com

4. 实际应用场景

  • 当需要精确访问网络资源时使用URL

  • 当需要持久标识而不关心位置时使用URI:

三.HTTP各种常见的方法

form 表单链接 https://www.runoob.com/html/html-forms.html

GET

get用于请求url的指定资源,指定资源会经过服务器解析后返回响应内容

GET /index.html HTTP/1.1

POST

通常用来提交数据 传输实体的主体

POST /submit.cgi HTTP/1.1

put

用于传输文件 将文件保存在url指定的位置

PUT /example.html HTTP/1.1

类似与get获取报文资源,head不返回报文全部,只返回报头

delete

删除文件,与put作用相反

options

⽤于查询针对请求URL指定的资源支持的方法,也就是返回post,get等

四.HTTP的状态码

常见的HTTP状态码

1xx 信息类状态码

  • 100 Continue:服务器已收到请求头,客户端应继续发送请求主体
  • 101 Switching Protocols:服务器已理解客户端请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成请求

2xx 成功类状态码

  • 200 OK:请求成功(GET请求的资源,POST/PUT/PATCH请求处理完成)
  • 201 Created:请求已被实现,且新资源已被创建(常见于POST/PUT请求)
  • 202 Accepted:服务器已接受请求,但尚未处理完成
  • 204 No Content:服务器成功处理请求,但不需要返回任何实体内容

3xx 重定向类状态码

  • 301 Moved Permanently:请求的资源已永久移动到新位置
  • 302 Found:请求的资源临时从不同的URI响应请求
  • 304 Not Modified:资源未被修改,可使用缓存的版本
  • 307 Temporary Redirect:临时重定向,请求方法和请求体不变

4xx 客户端错误类状态码

  • 400 Bad Request:请求语法错误,服务器无法理解
  • 401 Unauthorized:请求需要用户认证
  • 403 Forbidden:服务器理解请求但拒绝执行
  • 404 Not Found:服务器找不到请求的资源
  • 405 Method Not Allowed:请求方法被禁止
  • 408 Request Timeout:服务器等待请求时超时
  • 429 Too Many Requests:用户在给定的时间内发送了太多请求

5xx 服务器错误类状态码

  • 500 Internal Server Error:服务器遇到意外情况无法完成请求
  • 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效响应
  • 503 Service Unavailable:服务器暂时过载或维护中
  • 504 Gateway Timeout:服务器作为网关或代理,未及时从上游服务器获取请求

五.HTTP协议的常见Header

Content-Type: 指定数据格式(如text/html)

• Content-Length: 表示请求/响应主体的字节长度

• Host: 指明请求的目标主机和端口号

• User-Agent: 提供客户端操作系统和浏览器版本信息

• Referer: 记录跳转到当前页面的来源地址

• Location: 配合3xx状态码使用,指示客户端重定向目标地址

• Cookie: 客户端存储机制,常用于会话(session)管理

connection报头

HTTP中的Connection字段是报文头部的重要组成部分,用于管理客户端与服务器之间的连接状态。

该字段的主要功能是控制持久连接,允许多个客户端请求共享同一个TCP连接。在完成请求响应后,连接不会立即断开,从而实现单个连接上的多次请求与响应交互。

版本差异:

  • HTTP/1.1:默认采用持久连接机制。只要客户端和服务器未明确要求关闭连接,该连接就会保持开启状态,供后续请求复用。
  • HTTP/1.0:默认使用非持久连接。如需启用持久连接功能,必须在请求头中显式添加"Connection: keep-alive"字段。
相关推荐
阿巴~阿巴~1 小时前
Cookie与Session:HTTP认证机制解析
服务器·网络·网络协议·http·cookie·session
袁煦丞 cpolar内网穿透实验室1 小时前
node_exporter无需公网 IP 也能远程监控服务器!cpolar内网穿透实验室第 583 个成功挑战
服务器·网络协议·tcp/ip·远程工作·内网穿透·cpolar
谷粒.1 小时前
API测试全解析:从基础到性能压测
java·运维·网络·人工智能·python·测试工具·自动化
中云DDoS CC防护蔡蔡1 小时前
国外服务器延迟高怎么办
服务器·经验分享·http·网络安全·ddos
TTc_1 小时前
详细讲解Vue+Java的websocket通讯,整合进微服务,XXL Job调用通讯流程
websocket·网络协议·微服务
云计算小黄同学1 小时前
CC攻击和DDOS的特征与防护(基于阿里云)
网络·安全·阿里云·ddos
阿巴~阿巴~1 小时前
HTTP头部字段:高效通信的关键
服务器·网络·网络协议·http·http头部字段
木易 士心2 小时前
EACCES: permission denied 的深度诊断与解决指南
网络协议·系统安全
xixixi777772 小时前
二值化——将具有丰富灰度或彩色信息的图像,转换为仅由两种像素值(通常是0和1,或0和255) 组成的图像,即黑白图像
网络·图像处理·人工智能·学习·计算机视觉·信息与通信