【计算机网络基础】URI、URN和URL的区别

本文通过一个生动的例子解释了URI(Uniform Resource Identifier)和URL(Uniform Resource Locator)的区别。URI用于给网络资源标记名称,而URL则用于定位这些资源的具体位置。
    1. 先引用一张关系图

      灰色部分为URI

    2. URI强调的是给资源标记命名,URL强调的是给资源定位。

    3. URI是Uniform Resource Identifier,表示是一个资源; URL是Uniform Resource Locator,表示是一个地址

    4. 举个?:

      1. Cythia是北京某公司的老板,地址在西二旗西北旺30号

        • 现在告诉了大家Cythia的身份,大家都知道了北京某公司的老板是Cythia,有了一个头衔。
        • 说起北京某公司的老板,大家都知道是Cythia
        • URI就是网络资源的头衔,通过URI标记可以把网络世界里面的每一个事物都加以标记并区分开来。

      2. 如果你想亲自和Cythia见一面,你就需要定位他的具体地址(URL)

        • 通过“西二旗西北旺30号”这个地址,你找到了他
        • 网络世界里面的每一个资源不光有自己的头衔,还要能够被人找到。这个地址就叫做URL。
        • 这个定义同时也是一个URI

      3. 而Cythia这个名字就是URN (URN)

        • 因为URN可唯一标识一个实体
        • 这里假设没有同名的现象

    5. 更多例子请参考

      https://juejin.im/entry/566902ca60b25974ff5c7a3c

      https://juejin.im/entry/58ff07b2a0bb9f0065d1667f

转载于:https://www.cnblogs.com/Auyuer/p/11220002.html

<think>好的,我现在需要回答用户关于计算机网络URL是什么以及如何解析的问题。首先,我得确保自己准确理解URL的定义组成部分。URL,即统一资源定位符,是用于定位互联网上资源的地址。接下来,用户可能想知道URL的结构,比如协议、域名、路径、查询参数等。 然后,解析过程是关键。我需要分步骤解释从输入URL到获取资源的整个过程,包括DNS解析、建立TCP连接、发送HTTP请求、服务器处理请求、返回响应以及浏览器渲染等。可能还需要提到HTTPSHTTP的区别,比如SSL/TLS加密。 另外,用户可能对DNS解析的细节感兴趣,比如递归查询、本地DNS缓存、根域名服务器、顶级域名服务器权威域名服务器的层级结构。同时,需要注意URL编码特殊字符的处理,比如百分号编码。 还要考虑常见的相关概念,如URIURN区别,以及URL在Web开发中的实际应用,比如RESTful API设计中的资源定位。此外,可能涉及到的安全问题,比如URL重定向漏洞或钓鱼攻击,可以适当提及但不过多展开,以免偏离主题。 需要确保语言通俗易懂,结构清晰,分点说明。同时,检查是否有技术错误,比如DNS解析步骤是否正确,TCP三次握手TLS握手的过程是否准确。最后,用例子帮助理解,比如举一个具体的URL并分解其各部分,以及解析过程的实例说明。</think>在计算机网络中,URL(Uniform Resource Locator,统一资源定位符)是用于定位访问互联网资源的标准化地址。以下分层次说明其结构与解析过程: --- ### 一、URL的组成结构 通用格式(符合RFC 3986标准): $$ \text{协议} :// \text{主机名} : \text{端口号} / \text{路径} ? \text{查询参数} \# \text{锚点} $$ 示例解析: `https://www.example.com:443/search?q=test#results` 1. **协议**:`https`(决定通信规则) 2. **主机名**:`www.example.com`(通过DNS解析为IP) 3. **端口**:`:443`(默认可省略,HTTP=80/HTTPS=443) 4. **路径**:`/search`(服务器资源路径) 5. **查询参数**:`?q=test`(键值对,可多个用`&`连接) 6. **锚点**:`#results`(客户端定位用,不发送到服务器) --- ### 二、URL解析的核心步骤 #### 1. DNS域名解析(将主机名转为IP地址) - **本地缓存查询**:浏览器缓存 → 系统缓存 → 路由器缓存 - **递归解析流程**: $$ \text{本地DNS} → \text{根域名服务器} → \text{顶级域服务器(.com)} → \text{权威域名服务器(example.com)} $$ 最终获得目标服务器的IP地址(如`93.184.216.34`) #### 2. 建立网络连接 - **TCP三次握手**:客户端与服务器IP的指定端口建立连接 - **TLS握手(仅HTTPS)**:协商加密算法,交换证书(如使用RSA密钥交换) #### 3. 发送HTTP请求 构造符合协议规范的请求报文: ```http GET /search?q=test HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (其他头部信息) ``` #### 4. 服务器处理与响应 - 根据路径参数执行后端逻辑 - 返回状态码(如`200 OK`)响应体(HTML/JSON等数据) #### 5. 客户端渲染(浏览器) - 解析HTML/CSS/JavaScript - 加载嵌入资源(如图片、脚本的新URL) --- ### 三、特殊场景处理 1. **编码转换** - 非ASCII字符转为`%`+十六进制(如空格→`%20`) - 查询参数需通过`encodeURIComponent()`处理 2. **重定向机制** - 响应码`3xx`(如301永久重定向)触发新URL请求 3. **CDN加速** - DNS解析时根据地理位置返回最近的CDN节点IP --- ### 四、URL vs URI vs URN - **URI**(统一资源标识符):包含URLURN的超集 - **URN**(统一资源名称):仅标识资源名称,不依赖位置(如`urn:isbn:0451450523`) --- **示例完整流程**: 当访问`https://api.example.com/data?id=123`时: 1. 提取主机名`api.example.com`,通过DNS解析获得IP 2. 通过TCP+TLS与IP的443端口建立安全连接 3. 发送包含路径`/data`参数`id=123`的HTTPS请求 4. 服务器验证参数后返回JSON数据 5. 客户端解析并展示结果 最终结论:URL解析是网络通信的基础,涉及多层级协议协作,其安全性效率直接影响用户体验(如DNS劫持防护、HTTPS加密等关键设计)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值