# 纲要 > 主干纲要、Hint/线索/路标 - **域名**:对 IP 地址的易读性标识; - **URI**(统一资源标识符):对互联网上资源进行**唯一标识的字符串**,包括 URL 和 URN 两种 - **URL**(统一资源定位符):用于**定位**互联网上资源的字符串,包括**访问协议、主机地址或域名、资源路径、查询参数等** %% # Q&A #### 已明确 #### 待明确 > 当下仍存有的疑惑 **❓<font color="#c0504d"> 有什么问题?</font>** %% <br> # 域名 域名 (Domain Name) 是**以句点 `.` 分隔的名称**,用于 "**==替代/标识某一个 IP 地址==**",**方便人类记忆**。 例如,域名 `www.baidu.com` **对应着 IP 地址** `183.240.98.161`。 > [!NOTE] 域名与 IP 地址唯一对应 > > 互联网上的域名由 **域名注册商** 提供,**每个域名与一个 IP 地址唯一对应**。 > 域名注册商管理域名的注册,并将 "**域名-IP 地址**" 这一映射信息存放在 DNS 服务器中,以供查询。 > [!NOTE] 计算机只能识别 IP 地址,因此需要==将域名翻译成 IP 地址==才能进行访问—— DNS 域名解析即是完成这一转换过程 > [!NOTE] 每台主机上都有 "本地定义" 的域名 `localhost`,该域名默认映射为环回地址 `127.0.0.1` > > localhost 是一个**域名**,其指向的 ip 地址**可以自定义配置**。 > 在大多数系统上,其**默认指向 IPv4 的 `127.0.0.1` 以及 IPv6 的 `::1`**。 (windows 下可查看 `hosts` 文件) > > ![img|472](_attachment/02-开发笔记/07-计算机网络/应用层/域名%20&%20URL%20&%20URI.assets/IMG-域名%20&%20URL%20&%20URI-528ABA8D16B5DAC5FDF409434F7BE00E.jpg) > ^munya2 <br> ## 域名规范 - **域名不区分大小写**:`Example.com` 和 `example.com` 被视为相同的地址 - **域名的合法字符** - 可以包含字母、数字以及**连字符**(`-`),但不能以连字符开头或结束。 - 一些特殊字符,如下划线(`_`),通常不允许在域名中使用,但可能出现在子域名中 ## 域名的层次结构 域名遵循**一个标准的层次结构**,由几个部分组成,各部分**由点 `.`分隔**,**==从右往左==**,**越靠右的层级越高**: 1. **根域** 2. **顶级域** 3. **二级域名** 4. **子域名** > [!NOTE] 域名层级结构 > > ![[_attachment/02-开发笔记/07-计算机网络/应用层/域名 & URL & URI.assets/IMG-域名 & URL & URI-09C50F9613325376FFA64E7D26367C80.png|479]] > [!example] 示例: > > - ``www.example.com`` > - `www` 是子域名,`example` 是二级域名,`.com` 是顶级域名 > - `shop.london.co.uk` > - `shop` 是子域名,`london` 是二级域名,`.co.uk` 是顶级域名,其中`.uk` 是国家代码级域名,`.co` 通常表示商业组织。 > > ##### 根域 **根域名为 `.`**(唯一),位于**最末尾**,通常会**被省略**。 例如,域名 `www.server.com` 的完整域名实际为 `www.server.com.` 。 ##### 顶级(Top-Level Domain, TLD) - 常见的**通用顶级域名**: `.com`, `.org`, `.net`, `.gov`, `.edu` 等。 - 国家代码顶级域名: `.cn`(中国)、 `.uk`(英国)、`.de`(德国)等。 - 新的通用顶级域名: `.app`,`.blog`, `.tech` 等。 ##### 二级域(**Second-Level Domain,SLD**) 位于顶级域之前,通常是公司或组织的名称, `google.com` 中的`google`。 ##### 子级域 位于二级域名之前的、更低一级的域名,常用于标识网站的不同部分或不同的服务。 常见子级域包括 `www`,`blog` 等。 ## 域名-IP 之间的映射查询 参见 [[02-开发笔记/07-计算机网络/应用层/DNS 相关|DNS 相关]] <br><br> # URI **==统一资源标识符==**(Uniform Resource Identifier,**URI**) 是一个用于 **==标识互联网资源==的字符串**, 其提供了**一种通用的方式来标识和访问资源**,可以是文档、图像、服务、网页等。 Web 上的任何资源—HTML 页面、图像、视频片段、程序等,都由一个 URI 进行定位。 **统一资源标识符 URI** 包括两种具体形式: - **==URL==**(Uniform Resource Locator,**统一资源定位符**) - URL是一种特定的URI,用于指定资源的**位置**和如何**访问**该资源。 - 例如,`https://www.example.com/index.html`是一个URL,其中指定了资源的网络位置以及使用的协议(HTTPS) - **==URN==**(Uniform Resource Name,**统一资源名称**) - URN用于标识资源的**名称**,而不包含其的具体位置或如何访问它。 - 例如 `urn:isbn:978-3-16-148410-0`,表示一本书的**国际标准书号**(ISBN) > [!NOTE] URL 是 URI 的一个子集,是 URI 的一种。 > > ![image-20231229160940534|376](_attachment/02-开发笔记/07-计算机网络/应用层/域名%20&%20URL%20&%20URI.assets/IMG-域名%20&%20URL%20&%20URI-582DAEBA216A8ACD7CC874139EB1FCBF.png) > [!NOTE] HTTP 通信下的 URI > > 在网络传输场景,URI 通常指的是 URL 中域名后缀里的 "**==资源路径==**" 部分。 > > 例如在 URL `https://www.google.com/index.html` 中,**URI 特指 "`/index.html`"**,这一 URI 会**用于 HTTP 请求的==请求行==中**。 > 例如,请求行为 `GET /index.html HTTP1.1` <br><br> # URL > URL **(Uniform Resource Locator,统一资源定位符)** URL 俗称 **"==网址=="**,是描述互联网上的资源位置的**标准地址格式**,用于在网络上定位资源——**指向 Web 服务器上的特定资源**,如网页、图片、视频等。 浏览器客户端向 Web 服务器请求数据,实际上就是**请求服务器里的"文件资源"**,而 URL 就是描述这一文件资源所在位置的标识符。 URL 可用于 HTTP (S)、FTP (S)、SSH 通信等。 ### URL 格式 URL 的基本结构如下: ```http scheme:[//authority]path[?query][#fragment] ``` > [!example] > ![image-20231228220436259|702](_attachment/02-开发笔记/07-计算机网络/应用层/域名%20&%20URL%20&%20URI.assets/IMG-域名%20&%20URL%20&%20URI-860FEFC48F4A750ABEE23B18BE781CDF.png) - **scheme 方案**: - 定义了**访问资源的协议或方式**,例如`http`、`https`、`ftp`等。 - **authority 权限** :该部分完整格式为 `[username:passwd@]host[:port]` - `user-info`:用户名密码(可选) - `host`:**资源所在的==服务器地址==**,可以是 **"域名"** 或者 "**IP 地址**", - `port`:**端口号**(可选),指定访问的服务器的端口(默认可省略,例如HTTP的默认端口是80,HTTPS 为 443 端口) - **path 路径** - 指定**服务器上特定资源的位置**。 - 例如,在 `https://www.example.com/path/to/file` 中,`"/path/to/file"` 是路径 - **query 查询字符串**(可选) - 以问号 `?` 开始,键值对形式出现,多个参数以`&` 分隔,通常用于**传递参数或信息给服务器**。 - 例如,在 `https://www.example.com/search?q=query&id=123&name=example` 中,`?` 后面携带了三个查询参数。 - **fragment 片段标识符**(可选) - 以井号 `#` 开始,指定在资源内部的一个位置(文档中某个位置或片段),**常用于网页中的==锚点==**。 - 例如,在 `https://www.example.com/page#section` 中,`#section`是片段标识符。 > [!example] URL 示例 > > > ```url > https://zh.wikipedia.org:443/w/index.php?title=随机页面 > ``` > > - `https` 是传输协议 > - `zh.wikipedia.org` 是服务器地址(可以用域名或者直接使用 IP 地址) > - `443` 是端口号 > - `/w/index.php` 是文件路径,表明请求位于服务器 `/w/` 路径下的`index.php` web 文件。 > - `title=随机页面` 是查询参数 ### URL 解析 ![URL 解析|680](_attachment/02-开发笔记/07-计算机网络/应用层/域名%20&%20URL%20&%20URI.assets/IMG-域名%20&%20URL%20&%20URI-1FA470D4B95D033DB15FC7BA236C291F.jpg) 当没有路径名时,就代表访问**根目录下**事先设置的**默认文件**,也就是 `/index.html` 或者 `/default.html` 文件。 <br><br> # Buffer ## 闪念 > sudden idea ## 候选资料 > Read it later # 参考资料 # Footnotes