Skip to content
Go back

计算机网络基础概念(二)

Updated:
Edit page

Contents

Open Contents

应用层基础概念

URL 是什么?它的组成结构是什么?

URL(统一资源定位器)是互联网上唯一资源的地址。它是浏览器用来检索已发布资源的关键机制之一,例如 HTML 页面、CSS 文档、图像等。理论上,每个有效的 URL 都指向一个唯一的资源。在实践中,有一些例外,最常见的是指向不再存在或已移动的资源的 URL,它们指向的文件可能已经被重定位到另一个位置,这样就有多个 URL 指向同一个文件。

URL的组成结构
  1. 协议(Scheme):指定用于访问资源的协议类型,常见的有 http://https://ftp://file://mailto: 等。其中 http 是超文本传输协议,而 https 是安全版本,使用 SSL/TLS 加密来保护数据传输的安全性。协议后面通常跟着 :// 分隔符,这是 URL 结构中的重要标识。
  2. 域名(Domain Name):标识服务器在互联网上的位置,由多个部分组成并用点号分隔。例如在 www.example.com 中,com 是顶级域名,example 是二级域名,www 是子域名。域名通过 DNS 系统解析为对应的 IP 地址,这样浏览器才能找到正确的服务器位置。
  3. 端口(Port):指定服务器上运行特定服务的端口号,HTTP协议默认使用80端口,HTTPS 协议默认使用443端口。当使用默认端口时,端口号可以省略不写,格式为域名后加冒号,如 :8080 表示使用8080端口。
  4. 资源路径(Path to the file):指定服务器上资源的具体位置,类似于文件系统中的路径结构。路径以 / 开头,表示从服务器根目录开始,例如 /images/logo.png 表示服务器根目录下 images 文件夹中的 logo.png 文件,/api/users 表示 API 接口路径。
  5. 参数(Parameters):也称为查询字符串(Query String),以 ? 开头并包含键值对形式的参数。多个参数之间用 & 连接,用于向服务器传递额外的信息,例如 ?name=value&id=123 表示传递 name 和 id 两个参数给服务器。
  6. 锚点(Anchor):也称为片段标识符(Fragment Identifier),以 # 开头,用于定位页面内的特定位置。锚点不会发送到服务器,仅在客户端浏览器中使用,例如 #section1 可以跳转到页面中 id 为 section1 的元素位置。

HTTP 与 HTTPS 协议是什么?

HTTP 协议

超文本传输协议(HTTP,HyperText Transfer Protocol) 是一种用于传输超文本和多媒体内容的协议,主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。HTTP 使用客户端-服务器模型,客户端向服务器发送 HTTP Request(请求),服务器响应请求并返回 HTTP Response(响应)。过程如下:

HTTP 响应与请求过程

HTTP 的请求示例:

HTTP Request

HTTP 响应示例:

HTTP Response

HTTP 的主要特点

HTTPS 协议

HTTPS 协议(Hyper Text Transfer Protocol Secure),是 HTTP 的加强安全版本。HTTPS 是基于 HTTP 的,也是用 TCP 作为底层协议,并额外使用 SSL/TLS 协议用作加密和安全认证。

SSL/TLS 的工作原理:SSL/TLS 的核心在于一个叫做“握手 (Handshake)”的过程。这个过程的目标是让客户端和服务器在不安全的网络上,安全地协商出一个共享的、对称的加密密钥。一旦握手成功,后续的所有通信都用这个密钥来加密。

SSL/TLS 的握手过程

这个过程非常精妙,我们可以简化为以下几个步骤:

准备阶段: 网站运营者需要向一个叫做 CA (Certificate Authority,证书颁发机构) 的权威机构申请一张数字证书。这张证书里包含了网站的域名、一个公钥 (Public Key),以及 CA 对此证书的数字签名。网站服务器会保存这个证书和与之配对的私钥 (Private Key)。

握手过程:

  1. 客户端问好 (Client Hello)
    • 你的浏览器向服务器发送一个消息,说:“你好,我想建立一个安全连接。我支持这些加密算法(比如 AES、RSA),这里还有一个随机数(Client Random)。”
  2. 服务器回应与出示证书 (Server Hello & Certificate)
    • 服务器收到后,回应说:“你好,咱们就用你列表里的这个加密算法吧。这是我的‘身份证’(数字证书),里面有我的公钥。这里也有一个我的随机数(Server Random)。”
  3. 客户端验证与密钥交换 (Client Verification & Key Exchange)
    • 验证身份:浏览器会检查服务器发来的证书。
      • 证书是否过期?
      • 证书上的域名和正在访问的域名是否匹配?
      • 证书是不是由一个受信任的 CA 颁发的?(你的操作系统和浏览器里内置了一份受信任的 CA 列表)。
      • 如果验证通过,浏览器就确认了服务器的身份是可信的。
    • 生成“暗号”:浏览器再生成一个随机数(Pre-master Secret)。这个数是后续生成最终加密密钥的关键。
    • 安全地发送“暗号”:浏览器用从证书里拿到的公钥,将这个“暗号”加密,然后发送给服务器。
  4. 服务器解密与生成会话密钥 (Server Decryption & Session Key Generation)
    • 服务器收到加密的“暗号”后,用自己的私钥进行解密,从而得到了和浏览器一样的那个“暗号”(Pre-master Secret)。
    • 现在,客户端和服务器都拥有了三个相同的信息:Client Random、Server Random 和 Pre-master Secret。
    • 双方使用一个预先商定好的算法,将这三个数混合在一起,各自独立地计算出最终用于通信的会话密钥 (Session Key)
  5. 握手完成 (Handshake Finished)
    • 双方互相发送一条用刚刚生成的会话密钥加密的消息,告诉对方:“我这边准备好了,咱们开始用这个新密钥加密通信吧。”
    • 如果对方能成功解密,就证明握手成功。

之后的所有通信(比如 HTTP 请求和响应),都会使用这个会话密钥进行对称加密,既高效又安全。

DNS 域名系统是什么?

参考文档


Edit page
Share this post on:

Next Post
计算机网络基础概念(一)