網站訪問流程
一、靜態網站訪問流程(如 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 數據 |
類比傳統網站 | 靜態入口 + 動態數據 | 純動態網站 |