Linux网络HTTP协议

1.认识URL

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

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

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

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

  1. 协议 (Scheme) :指定访问资源所使用的应用层协议(如 http、https、ftp、mailto)。

  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选项。

相关推荐
刘胡子大叔32 分钟前
备份包只有 1.5K?
linux·服务器·网络
无足鸟ICT37 分钟前
【RHCA+】RPM包验证和数字证书
linux·运维·服务器
erzong23143 分钟前
Linux操作系统:线程概念与控制
linux·算法
星恒随风1 小时前
Linux线程概念详解:从分页存储、页表、MMU与TLB,深入理解线程和进程的区别与联系
linux·运维·笔记·学习·状态模式
小范的技术工坊1 小时前
Linux应用开发(文件IO)
linux·stm32·单片机
小范的技术工坊1 小时前
Linux应用开发(文件属性)
linux·运维·服务器
wuminyu1 小时前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++
高晶3 小时前
ARM 嵌入式 Linux 文件系统从入门到实战:目录结构、权限管理、选型与挂载排查全攻略
linux·程序员
运维全世界3 小时前
Slurm集群搭建实战踩坑:存储节点无RAID、跨节点GPU无法读取数据彻底解决
linux
帷幕落秋3 小时前
进程服务与文件描述符
linux·运维·面试