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

相关推荐
七歌杜金房8 小时前
我终于又有了自己的 Linux 电脑
linux·debian·mac
tntxia1 天前
linux curl命令详解_curl详解
linux
扛枪的书生1 天前
Linux 网络管理器用法速查
linux
顺风尿一寸2 天前
Java Socket 内核之旅:从 SocketChannel.read() 到 tcp_recvmsg 与 epoll 的完整调用链路
linux
XIAOHEZIcode2 天前
Ubuntu 终端美化全栈指南:Bash 到 Kitty 踩坑实录
linux·ubuntu·命令行
唐青枫2 天前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux
AlfredZhao4 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐5 天前
Linux内存扩容指南
linux
zylyehuo5 天前
Linux 彻底且安全地删除文件
linux
用户805533698036 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式