计算机网络 之 【http协议】(域名、url、http协议格式与细节)

目录

[1 域名](#1 域名)

[1.1 域名的概念](#1.1 域名的概念)

[1.2 域名的核心作用](#1.2 域名的核心作用)

[1.3 域名的组成和分类](#1.3 域名的组成和分类)

[1.4 域名的工作原理](#1.4 域名的工作原理)

2.url(统一资源定位符)

标准结构

补充

示例

3.网络行为

4.http协议格式

请求报文

响应报文

关键机制


1 域名

1.1 域名的概念

域名 是互联网中用于标识和定位计算机或服务的易记的文本名称 ,它替代了难以记忆的数字IP地址(如 192.168.1.12404:6800:4005:805::200e),使人类能够更方便地访问网站、发送邮件或使用网络服务

1.2 域名的核心作用

(1)替代IP地址:计算机通过IP地址(如 93.184.216.34)通信,但数字难以记忆,域名(如 example.com)通过DNS解析为IP地址,实现"人类友好"的访问方式

(2)分层结构 :域名采用层级结构,从右到左依次表示范围从小到大(与日常阅读方向相反)

复制代码
www . sub . example . com
│     │     │       │
│     │     │       └── 顶级域名(TLD)
│     │     └── 二级域名(SLD)
│     └── 三级域名(Subdomain)
└── 主机名(Hostname,可选)

1.3 域名的组成和分类

  • 顶级域名

位于域名最右侧,分为两类:

通用顶级域名(gTLD):如 .com(商业)、.org(组织)、.net(网络)

国家代码顶级域名(ccTLD):如 .cn(中国)、.us(美国)、.jp(日本)

新通用顶级域名(new gTLD):如 .app、.blog、.online,提供更多选择

  • 二级域名

位于顶级域名左侧,是域名的核心部分,通常由注册者自定义

如 example 在 example.com

需通过域名注册商购买并注册,具有唯一性

  • 三级域名及子域名

位于二级域名左侧,用于进一步细分服务或组织结构(如 www、mail、blog)

mail.example.com:邮件服务专用子域名

shop.example.com:电商子站点

无需额外注册:子域名可由域名所有者自由创建(需配置DNS记录)

  • 完全限定域名

包含完整层级结构的域名(如 www.example.com.,末尾的点表示根域名)。

日常使用中通常省略末尾的点(如 www.example.com

1.4 域名的工作原理

  1. DNS解析 :当用户在浏览器输入域名(如 example.com)时,计算机会向DNS服务器发起查询。DNS服务器最终返回对应的IP地址

    复制代码
    用户输入 → example.com → DNS查询 → 返回IP 93.184.216.34 → 浏览器访问该IP
  2. 域名与IP的映射关系:域名与IP地址是有对应关系的(一对一、一对多、多对一),浏览器最终通过该IP地址访问互联网中对应主机

2.url(统一资源定位符

定义 :用于唯一标识互联网上资源的字符串,遵循标准化格式,便于客户端(如浏览器)定位和访问资源

标准结构

复制代码
协议://域名:端口/路径?查询参数#片段标识
组件 格式/示例 说明
协议 http:// https:// ftp:// file:// ws:///wss:// - 定义访问资源的网络协议类型 - 常见协议及默认端口 : ▸ http:// → 端口 80 ▸ https:// → 端口 443 ▸ ftp:// → 端口 21 ▸ file:// → 本地文件系统 ▸ ws://(非加密 WebSocket)/wss://(加密 WebSocket)
域名 www.example.com 192.168.1.1(不推荐生产环境) - 资源的服务器地址 - 支持域名或 IP 地址(IP 仅用于测试/内网环境)
端口 :80(可省略) :8080(非默认端口) - 服务器监听的端口号 - 省略规则 :当端口为协议默认值时(如 http:// 的 80)可省略 - 示例: ▸ http://example.com:80/http://example.com/https://example.com:443/https://example.com/
路径 /blog/posts/1 api/users(相对路径) - 资源在服务器上的虚拟路径(不一定对应物理目录) - 路径规则 : ▸ 层级用 / 分隔 ▸ 绝对路径以 / 开头(如 /blog/1) ▸ 相对路径省略 /(依赖当前 URL 解析,如 blog/1) - 示例/blog/posts/1 可能由 Web 框架动态生成
查询参数 ?q=python&page=1 - ? 后跟键值对,用于传递参数(如搜索、分页) - 格式key1=value1&key2=value2 - 示例/search?q=python&page=1 表示搜索关键词为 python,第 1 页
片段标识 #installation - # 后的部分,指向页面内的锚点(如章节标题) - 示例/docs#installation 会滚动到页面中 id="installation" 的元素

补充

  1. 协议的加密性:

https:// 通过 SSL/TLS 加密数据传输,推荐用于所有需要安全性的场景(如登录、支付)

http:// 为明文传输,易被窃听或篡改

  1. 路径的虚拟性:

现代 Web 服务器(如 Nginx、Apache)可通过配置将 URL 路径映射到任意物理目录或动态路由(如 REST API 的 /api/users/1)

  1. 相对路径的解析:

相对路径(如 blog/1)会基于当前 URL 的路径解析。例如:

当前页面为 https://example.com/articles/,链接 blog/1 会解析为 https://example.com/articles/blog/1(可能返回 404)

更安全的做法是使用绝对路径(如 /blog/1)或根相对路径(如 //example.com/blog/1)

  1. 查询参数的编码:

特殊字符(如空格、/、?)需编码为 %XX 形式(如空格 → %20)

示例:/search?q=hello world 应编码为 /search?q=hello%20world
编码规则:将需要转码的字符转为 16 进制,然后从右到左,取 4 位 ( 不足 4 位直接处理 ) ,每 2 位做一位,前面加上 % ,编码成 %XY
不用记忆,网上有现成的编码解码工具

示例

URL 协议 域名 端口 路径 查询参数 片段标识
https://www.example.com/blog/1 https www.example.com 默认 443 /blog/1
http://localhost:8080/api?id=1 http localhost 8080 /api id=1
file:///C:/docs/report.pdf file 本地文件系统 /C:/docs/report.pdf

3.网络行为

网络行为主要分为两种:下载(获取资源)和上传(提交数据)

4.http协议格式

请求报文

  1. 结构:请求行 + 请求报头 + 空行 + 请求正文
  2. 请求报文至少包含请求行与空行,请求报头与请求正文可选
  3. 分隔符 :每一行由**\r\n** 结尾,整体是一个包含分隔符的大字符串
  4. 请求行:由方法(如GET)、URL、版本(如HTTP/1.1)组成
  5. 请求行格式:方法 URL HTTP版本,空格分隔,一般只间隔一个空格
  6. 请求报头:Key-Value形式,包含 User-Agent(客户端信息)Content-Length(正文长度)等

响应报文

  1. 结构:状态行 + 响应报头 + 空行 + 响应正文
  2. 响应报文至少包含状态行与空行,响应报头与响应正文可选
  3. 状态行:包含HTTP版本、状态码(如200)、状态码描述(如OK)
  4. 状态行格式:HTTP版本 状态码 状态描述,空格分隔,一般只间隔一个空格
  5. 响应正文返回的资源内容(如 HTML、JSON、图片等)

关键机制

  1. 编码:URL中的特殊字符会被转义为 % 加十六进制形式,由浏览器和服务器自动编解码
  2. HTTP 通过版本协商机制(如请求/响应行中的版本号声明)和向后兼容设计(如 HTTP/1.1 支持 1.0 特性、HTTP/2/3 通过升级或 ALPN 回退),确保不同版本客户端与服务器能协同工作;同时,只要网络不断,服务器会为所有请求(包括错误请求)返回响应(如 4xx/5xx 状态码),以维持协议的可靠性
  3. Telnet 可通过直接连接服务器端口手动发送请求并查看原始响应适合基础协议调试Fiddler 作为代理工具 拦截并解析本地流量,捕获所有经过的 HTTP/HTTPS 请求/响应,提供可视化抓包和请求修改功能Postman 则以图形化界面简化请求构造与调试 ,专注于构造、发送和管理 HTTP 请求,支持自动化测试和脚本扩展
相关推荐
Shanxun Liao2 小时前
WIN2022 搭建 HTTP 文件索引服务的完整步骤
网络·网络协议·http
%小农13 小时前
在cursor中使用server
网络·网络协议·http
西红市杰出青年16 小时前
MCP 的三种数据传输模式教程(stdio / SSE / Streamable HTTP)
网络·网络协议·http·ai
.select.16 小时前
HTTPS 如何优化?
网络协议·http·https
三三有猫18 小时前
HTTP、HTTPS和SOCKS代理怎么选?
网络协议·http·https
牛奶21 小时前
你发送的消息,微信到底怎么送到的?
前端·websocket·http
曹牧1 天前
HTTP 401
网络·网络协议·http
ADRU1 天前
SSE 到底是什么?它和 HTTP 有什么关系?Java/Spring 怎么实现流式输出(可直接上手)
java·spring·http
.select.1 天前
HTTPS ECDHE 握手解析
网络协议·http·https