PHP学习(第三天)
网站访问流程
一、静态网站访问流程(如 index.html
)
1. 流程是怎么样的?
静态网站的页面内容固定,不需要服务器做额外计算,直接把文件返回给浏览器。访问流程大致如下:
-
用户输入网址或点击链接
用户在 个人设备(PC/手机) 的浏览器中输入 URL(Uniform Resource Locator,统一资源定位符)。
浏览器会 向 DNS 服务器 查询对应域名的 IP 地址,找到目标服务器。例如访问:
http://localhost:8080/index.html
对应的 IP 是
127.0.0.1
(本机地址)。 -
浏览器发送 HTTP 请求
-
浏览器向该 IP + 端口发起 TCP 连接(比如 8080)。
-
通过这个连接,浏览器发送 HTTP 请求,例如:
GET /index.html HTTP/1.1 Host: localhost:8080
-
-
服务器响应请求
- Web 服务器(Apache、Nginx 等)接收 TCP 连接,并处理 HTTP 请求。
- 服务器找到对应的
index.html
文件(例如通过 Apache 或 Nginx 挂载部署在指定目录下)。 - 找到文件后,服务器 直接返回文件内容给浏览器。
-
浏览器渲染页面
- 浏览器解析 HTML、CSS、JS 并显示页面。
- 页面中如果有图片、字体或其他资源,会继续发请求加载。
特点:服务器只是“送文件”,不需要额外计算。
这里的“计算”指的是:运行程序、处理逻辑或生成动态内容(比如 PHP、Node.js 等动态网站才会做这些)。
2.TCP 和 HTTP 是什么?
- TCP(传输层)
- 全称:Transmission Control Protocol —— 传输控制协议
- 作用:保证数据能从浏览器传到服务器、再从服务器返回浏览器。
- 类比:TCP 就像邮差,负责送信。
- 浏览器先通过 TCP 建立连接(握手),确认可以安全传输数据。
- HTTP(应用层)
- 全称:HyperText Transfer Protocol —— 超文本传输协议
- 作用:定义具体要做什么,比如“我要哪个网页”。
- 类比:信里的内容,例如“GET /index.html HTTP/1.1”。
- HTTP 的请求和响应是通过 TCP 这个“邮差”发送的。
3.DNS如何在因特网中找到对应的域名的ip?
3.1 DNS 查询流程(分层查找)
- 本地 DNS 缓存
- 先在操作系统或浏览器缓存里找有没有对应的 IP。
- 如果有,就直接返回,不用向外部查询。
- 向本地/ISP DNS 服务器查询
- 如果本地没有,电脑会向配置好的 DNS 服务器(通常是 ISP 提供的)发请求。
- 逐级查找域名(递归/迭代)
如果 ISP DNS 也没有缓存,会向上查询:- 根 DNS 服务器(Root):负责顶级域(比如
.com
、.org
、.cn
)信息 - 顶级域(TLD)DNS 服务器:负责二级域名解析
- 权威 DNS(Authoritative DNS)服务器:最终返回域名对应的 IP
- 根 DNS 服务器(Root):负责顶级域(比如
- 返回结果给本地 DNS,再到电脑
- ISP DNS 缓存查询结果,下次再查同样域名就直接返回
- 浏览器拿到 IP,就可以建立 TCP 连接访问网站了
二、动态网站访问流程(如 index.php
)
动态网站需要服务器先执行程序(如 PHP)生成页面,再返回给浏览器。流程如下:
-
浏览器发起请求
- 浏览器访问
http://example.com/index.php
- 先通过 DNS 查到服务器 IP
- 再通过 TCP 建立连接到服务器端口(如 80/443)
Web 服务器接收请求
- Apache 或 Nginx 收到请求后,检查请求的是 PHP 文件
- 不是直接返回 HTML,而是交给 PHP 解析器(如 PHP-FPM)处理
PHP 生成 HTML
- PHP 脚本运行:处理业务逻辑、查询数据库、生成动态内容
- 输出最终 HTML
Web 服务器发送响应
- PHP 生成的 HTML 返回给 Web 服务器
- Web 服务器再通过 TCP 连接,按照 HTTP 协议把响应发送给浏览器
浏览器渲染页面
- 浏览器收到 HTML,解析、渲染,加载 CSS/JS/图片,显示页面
- 浏览器访问
特点:
- 页面内容可以动态生成(例如显示不同用户信息、数据库内容)。
- 每次访问可能生成不同的 HTML。
核心理解:
- Web 服务器负责监听端口、接收请求、返回响应,处理 HTTP/TCP 层的通信。
- PHP负责生成动态内容(HTML),只是 Web 服务器的一个“内容提供者”。
- 浏览器最终接收到的是 HTML,底层仍是 TCP + HTTP 协议传输。
三.总结对比
3.1 静态网站VS动态网站
特性 | 静态网站 | 动态网站(PHP/Node/Python等) |
---|---|---|
页面内容 | 固定,提前写好(HTML/CSS/JS) | 动态生成,根据请求或数据库数据生成 |
URL 示例 | /index.html | /index.php |
请求处理 | Web 服务器直接返回文件 | Web 服务器交给应用程序(PHP/FPM/Node)生成页面 |
服务器计算 | 不需要,直接“送文件” | 需要,执行程序、处理逻辑、查询数据库 |
HTTP 响应 | 直接返回静态文件内容 | 返回程序生成的 HTML 内容 |
TCP/HTTP 流程 | 浏览器 → TCP → Web 服务器 → HTTP → 浏览器 | 浏览器 → TCP → Web 服务器 → 调用 PHP → 生成 HTML → HTTP → 浏览器 |
特点 | 简单、高速、压力小 | 灵活、可定制、服务端压力大 |
适用场景 | 企业官网、博客、文档站点 | 电商网站、论坛、社交网站、需要动态内容的应用 |
3.2 SPA vs SSR
角度 | SPA | SSR |
---|---|---|
HTML 生成 | 浏览器端 | 服务器端 |
页面内容 | 动态(客户端渲染) | 动态(服务器渲染) |
服务器作用 | 提供静态资源 + API 数据 | 生成 HTML + 提供 API 数据 |
类比传统网站 | 静态入口 + 动态数据 | 纯动态网站 |