目录
[1 域名](#1 域名)
[1.1 域名的概念](#1.1 域名的概念)
[1.2 域名的核心作用](#1.2 域名的核心作用)
[1.3 域名的组成和分类](#1.3 域名的组成和分类)
[1.4 域名的工作原理](#1.4 域名的工作原理)
1 域名
1.1 域名的概念
域名 是互联网中用于标识和定位计算机或服务的易记的文本名称 ,它替代了难以记忆的数字IP地址(如
192.168.1.1或2404: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 域名的工作原理
-
DNS解析 :当用户在浏览器输入域名(如 example.com)时,计算机会向DNS服务器发起查询。DNS服务器最终返回对应的IP地址
用户输入 → example.com → DNS查询 → 返回IP 93.184.216.34 → 浏览器访问该IP -
域名与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" 的元素 |
补充
- 协议的加密性:
https:// 通过 SSL/TLS 加密数据传输,推荐用于所有需要安全性的场景(如登录、支付)
http:// 为明文传输,易被窃听或篡改
- 路径的虚拟性:
现代 Web 服务器(如 Nginx、Apache)可通过配置将 URL 路径映射到任意物理目录或动态路由(如 REST API 的 /api/users/1)
- 相对路径的解析:
相对路径(如 blog/1)会基于当前 URL 的路径解析。例如:
当前页面为 https://example.com/articles/,链接 blog/1 会解析为 https://example.com/articles/blog/1(可能返回 404)
更安全的做法是使用绝对路径(如 /blog/1)或根相对路径(如 //example.com/blog/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协议格式

请求报文
- 结构:请求行 + 请求报头 + 空行 + 请求正文
- 请求报文至少包含请求行与空行,请求报头与请求正文可选
- 分隔符 :每一行由**\r\n** 结尾,整体是一个包含分隔符的大字符串
- 请求行:由方法(如GET)、URL、版本(如HTTP/1.1)组成
- 请求行格式:
方法 URL HTTP版本,空格分隔,一般只间隔一个空格 - 请求报头:Key-Value形式,包含 User-Agent(客户端信息)Content-Length(正文长度)等
响应报文
- 结构:状态行 + 响应报头 + 空行 + 响应正文
- 响应报文至少包含状态行与空行,响应报头与响应正文可选
- 状态行:包含HTTP版本、状态码(如200)、状态码描述(如OK)
- 状态行格式:
HTTP版本 状态码 状态描述,空格分隔,一般只间隔一个空格 - 响应正文返回的资源内容(如 HTML、JSON、图片等)
关键机制
- 编码:URL中的特殊字符会被转义为 % 加十六进制形式,由浏览器和服务器自动编解码
- HTTP 通过版本协商机制(如请求/响应行中的版本号声明)和向后兼容设计(如 HTTP/1.1 支持 1.0 特性、HTTP/2/3 通过升级或 ALPN 回退),确保不同版本客户端与服务器能协同工作;同时,只要网络不断,服务器会为所有请求(包括错误请求)返回响应(如 4xx/5xx 状态码),以维持协议的可靠性
- Telnet 可通过直接连接服务器端口手动发送请求并查看原始响应 ,适合基础协议调试 ;Fiddler 作为代理工具 拦截并解析本地流量,捕获所有经过的 HTTP/HTTPS 请求/响应,提供可视化抓包和请求修改功能 ;Postman 则以图形化界面简化请求构造与调试 ,专注于构造、发送和管理 HTTP 请求,支持自动化测试和脚本扩展
