从URL到资源获取
我们每天都在通过URL访问各种资源,那么这个过程中发生了什么?。
URL的组成与含义
URL被称为统一资源定位符,它由三部分组成:域名 + 端口号 + 资源路径
例如,访问一个网站时:http://192.168.21.1:8080/images/user.png
-
192.168.21.1 代表的是提供服务设备的IP地址,用于唯一标识网络设备(如服务器/手机),通过IP地址可以在网络上找到该设备
打开cmd 使用ipconfig 可以查看设备的IP地址
-
域名与IP
域名:可以读取网址地址,可以通过DNS系统映射到IP,多个域名可以映射到统一个IP
IP地址:设备的数字标识(如 192.168.1.1 ),含IPv4(32位)和IPv6(128位)格式
www.example.com → 192.168.1.100
-
建立TCP连接,服务端与客户端的链接
- 客户端发送SYN到服务器端口(如8080)
- 服务器返回SYN-ACK
- 客户端发送ACK
此时,连接建立完成,准备传输数据。
-
-
8080 代表的是目标服务的端口号,因为一台设置上一般有多个服务,端口号可以区分同一设备的不同网络服务
3306 → MySQL服务 80 → HTTP服务(默认) 443 → HTTPS服务(默认)
当连接到达服务器的8080端口时,操作系统会将请求交给监听该端口的服务进程处理。
- 服务进程(如Web服务器)是资源分配的最小单位:
- 拥有独立的内存空间
- 管理着所有服务资源
- 监听指定端口(如8080)的请求
- 当请求到达时,服务进程通常会创建线程来处理:
- 线程共享进程资源(如内存、文件描述符等)
- 每个线程独立处理一个请求
- 实现并发处理多个请求
这种架构既保证了资源隔离(进程级别),又实现了高效并发(线程级别)。
- 服务进程(如Web服务器)是资源分配的最小单位:
-
/images/logo.png
表示的是请求的具体资源路径。每个Web服务器都会配置一个文档根目录,这是所有URL路径的起点,实际文件路径 = 文档根目录 + 请求路径服务进程通过监听端口的线程接收HTTP请求,然后创建工作线程来处理请求,根据资源路径(如
/images/logo.png
)找到对应资源,之和组装HTTP响应(状态码、头部、正文),通过建立的TCP连接返回给客户端。