Linux网络HTTP协议

1.认识URL

我们常说的"网站"其实就是URL

URL (统一资源定位符) 是用于唯一标识并访问互联网上资源的标准化字符串。其完整语法结构遵循以下通用格式:

<协议>://[<用户信息>@]<主机名>[:<端口>]/<路径>?<查询字符串>#<片段标识符>

各组成部分的术语定义如下:

  1. 协议 (Scheme) :指定访问资源所使用的应用层协议(如 httphttpsftpmailto)。

  2. 用户信息 (Userinfo):可选的认证字段,通常包含用户名和密码,用于身份验证(现代应用中因安全风险已较少使用)。

  3. 主机 (Host):承载资源的服务器地址,可以是域名(FQDN)或 IP 地址。

  4. 端口 (Port):传输层协议(TCP/UDP)的入口点。若省略,则隐式使用协议的默认端口号。

  5. 路径 (Path):服务器上资源的具体层级或位置,通常以斜杠分隔的层次结构表示。

  6. 查询字符串 (Query) :由键值对组成的非层级数据,通常以 ? 起始,多个参数间用 & 分隔,用于向服务器传递动态参数。

  7. 片段标识符 (Fragment) :指向资源内部的次级定位点(如 HTML 文档中的某个锚点),以 # 起始,该部分仅在客户端本地处理,不发送至服务器。

2.HTPP协议请求与响应格式

2.1.HTTP协议请求

HTTP(HyperText Transfer Protocol,超⽂本传输协议)是⼀个⾄关重要的协议。它定义了客⼾端(如浏览器)与服务器之间如何通信,以交换或传输超⽂本(如HTML⽂档)。HTTP协议是客⼾端与服务器之间通信的基础。客⼾端通过HTTP协议向服务器发送请求,服务器收到请求后处理并返回响应。HTTP协议是⼀个⽆连接、⽆状态的协议,即每次请求都需要建⽴新的连接,且服务器不会保存客⼾端的状态信息。HTTP请求报文的格式以及具体样例如下。

HTTP的请求方法。

2.2.HTTP应答

HTTP协议应答报文分为,首行:[版本号]+[状态码]+[状态码解释]、报头、空行、响应正文组成。Header: 请求的属性, 冒号分割的键值对;每组属性之间使⽤\r\n分隔;遇到空⾏表⽰Header部分结束。

2.2.1.HTTP常见的Header

Content-Type:表示正文的数据类型(text/html等)。Content-Length: 正文的长度。Host:客户端告诉服务端需要的资源在哪个主机的哪个端口上。Referer:表示当前页面是从哪个页面跳转过来的。User-Agent:声明用户的操作系统和浏览器的版本信息。Location:通常搭配3xx状态码使用,告诉客户端接下来要去哪里访问资源。Cookie:用于在客户端存储少量信息,通常用于实现保持会话的功能。

3.HTTP的状态码

HTTP的状态码可以分为5个种类,分别是1xx到5xx,具体如下。

最常见的状态码有200(OK),404(Not Found),403(Forbidden),302(Redirect,重定向),504(Bad Gateway)。其中301和302都是重定向,只不过301(Moved Permanently)是永久跳转,搜索引擎会把权重、收录转移到新地址,浏览器会缓存重定向下次直接访问新地址。302(Found)是临时跳转,每次都要先走源地址再跳转到新地址。它们都依赖状Location选项。

相关推荐
小鹏linux2 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
在角落发呆3 小时前
Linux转发配置:解锁网络互联的核心密码
linux·运维·网络
齐潇宇3 小时前
Zabbix 7 概述与配置
linux·zabbix·监控告警
江公望4 小时前
Ubuntu htop命令,10分钟讲清楚
linux·服务器
哎呦,帅小伙哦4 小时前
Linux 时间:从原子钟到 clock_gettime 的每一面
linux·运维·服务器
张小姐的猫5 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
YuanDaima20485 小时前
Linux 进阶运维与 AI 环境实战:进程管理、网络排错与 GPU 监控
linux·运维·服务器·网络·人工智能
lolo大魔王7 小时前
Linux 数据文件处理实战:排序、搜索、压缩、归档一站式详解
linux·运维·服务器
starvapour7 小时前
Ubuntu切换到Fcitx5中文输入法
linux·运维·ubuntu
lolo大魔王8 小时前
Linux的监测程序
linux·运维·github