當使用者輸入網址後按下 enter 鍵後,實際上發生了什麼事情呢?
在網路基礎的面試題當中,這一題真的是必須要會的題目!
當使用者在瀏覽器中輸入網址並按下 Enter 鍵時:
Step 1. 使用者輸入 URL:使用者在瀏覽器中輸入網站的 URL,例如 https://www.example.com
Step 2. 域名解析:瀏覽器將 URL 中的域名 www.example.com 解析為對應的 IP 地址。
通常涉及到 DNS(域名系統)查詢,瀏覽器向 DNS 伺服器發送請求以獲取目標網站的 IP 地址。
更詳細的介紹可以參考:DNS 的運作流程!
Step 3. 建立 TCP 連接:瀏覽器使用目標網站的 IP 地址和 HTTP 或 HTTPS port(通常是 80 或 443)建立一個 TCP 連接。這是通過使用 TCP/IP 協定的三次握手過程來實現的,確保了客戶端和伺服器之間的可靠通信。
Step 4. 發送 HTTP Request:瀏覽器向伺服器發送一個 HTTP GET 請求,該請求包含瀏覽器所需的網頁資源的資訊,例如網頁文件、圖像、腳本等。
Step 5. 伺服器處理 Request:伺服器接收 HTTP 請求,然後根據請求的內容和資源位置,處理請求並準備要返回給瀏覽器的數據。
Step 6. 伺服器發送 HTTP Response:伺服器將處理後的資源打包成一個 HTTP Response,並將其發送回到瀏覽器。
Step 7. 瀏覽器接收 Response:瀏覽器接收伺服器的 HTTP Response,該 Response 包含網頁的 HTML 內容以及可能的其他資源,如圖片、CSS 和 JavaScript 文件。
Step 8. 解析和渲染,完成頁面載入:瀏覽器解析 HTML 和其他資源,並根據這些資源渲染出網頁。
以上是一個簡化的描述,實際上還有更多細節和機制,如緩存、SSL/TLS加密等,涉及到瀏覽器、伺服器和網絡基礎設施的多方互動。
回歸本章主題:TCP/IP 協定
在上述了解簡單的背後運作邏輯之後,我們要接著聊聊 TCP/IP 協定 (Transmission Control Protocol/ Internet Protocol)。
Protocols 透過一些制定好的規則,定義資訊在不同設備和系統之間如何進行交換,確保傳輸與接收雙方收發正常。網路通訊協定是一種層級式(Layering)的架構,每一層呼叫下一層提供的服務來完成自己的需求。
TCP/IP 協定的四個層級
# 應用層(Application Layer)
使用特定的應用層協議來處理應用程序特定的通信,並向用戶提供服務。
使用特定的應用層協議的常見例子:
- HTTP(Hypertext Transfer Protocol)
使用瀏覽器訪問網站時,實際上是使用 HTTP 協議來檢索和顯示網頁內容。 - SMTP(Simple Mail Transfer Protocol)
發送電子郵件時,郵件客戶端使用 SMTP 將郵件發送到郵件伺服器,以供傳遞到接收方郵件伺服器。 - FTP(File Transfer Protocol)
用於文件傳輸的協議。FTP 允許上傳和下載文件到和從遠程伺服器,這在網站維護和文件共享方面非常常見。 - POP3(Post Office Protocol version 3)和
IMAP(Internet Message Access Protocol)
這兩種協議用於檢索電子郵件。POP3 下載郵件到你的電子郵件客戶端,而 IMAP 則在郵件伺服器上保留郵件的副本,以便可以從多個設備讀取郵件。 - DNS(Domain Name System)
用於域名解析的協議。在瀏覽器中輸入網址時,DNS 協議將域名轉換為 IP 地址,以定位和訪問相應的伺服器。 - Telnet
用於遠程訪問伺服器或設備的協議。通過 Telnet,可以遠程登錄到伺服器或設備,並通過命令行界面進行操作和管理。 - SNMP(Simple Network Management Protocol)
用於管理和監控網絡設備的協議。SNMP 允許管理者收集關於路由器、交換機、伺服器等設備的性能和狀態信息。
# 傳輸層(Transport Layer)
這一層負責端到端的數據傳輸,確保數據的可靠傳遞。使用協議如 TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)來分段、重組數據,並提供錯誤檢測和恢復功能。
TCP(Transmission Control Protocol)
TCP 提供可靠的數據傳輸,確保數據在傳輸過程中不丟失、不重複和按順序到達目的地。
主要用於應用程序需要可靠傳輸的情況,如網頁瀏覽、文件下載、電子郵件等。
TCP 使用三次握手建立連接,並使用流控制和錯誤檢測和恢復功能,以確保數據完整性和可靠性。UDP(User Datagram Protocol)
UDP 是一種無連接的協議,提供一種簡單的數據傳輸機制,但不提供可靠性保證。
主要用於需要快速傳輸和不需要可靠性的應用,如音頻/視頻流媒體、遊戲、DNS 等。
UDP 不建立連接,也不提供流控制、錯誤檢測和恢復,因此數據包可能丟失、重複或無序到達目的地。特點 TCP UDP 連接 使用三次握手建立連接 無連接,無需建立連接 可靠性 提供可靠的數據傳輸,確保數據完整性 不提供可靠性保證,數據可能丟失或重複 錯誤檢測和恢復 提供錯誤檢測和恢復功能 不提供錯誤檢測和恢復功能 數據順序 確保數據包按順序到達目的地 不確保數據包按順序到達目的地 數據包頭部大小 較大,包含順序號、確認號、控制位等 較小,僅包含源和目的端口號 使用場景 用於需要可靠傳輸的應用,如文件傳輸 用於快速數據傳輸的應用,如流媒體 例子應用 HTTP、FTP、SMTP 等 DNS、VoIP、遊戲等
# 網絡層(Internet Layer)
將資料從源網路傳輸到目的網路,並選擇路徑,網絡層協議包括IP、ICMP(互聯網控制消息協議)等。
# 網絡接口層(Network Access Layer)
位於最底層,負責實際的硬體設備和媒體的操作,包括網絡卡、網絡纜線、以太網等。
這一層也被稱為鏈路層,通常包括與硬體相關的協議和技術,如以太網、Wi-Fi、PPP(點對點協議)等。
這四個層次組成了 TCP/IP 協定,是網路上資料通信的基礎,並允許不同設備和操作系統之間的網路通信。不過,需要注意的是,這個分層模型與 OSI 模型有些不同,但 TCP/IP 協定是更廣泛使用的且更符合實際情況的模型。
參考資料:
➫ OSI Model vs TCP/IP Model
➫ OSI七層架構 和 TCP/IP通訊協定 的比較
➫ 《 網路架構 》TCP/IP 四層架構 & OSI七層架構
➫ 從傳紙條輕鬆學習基本網路概念
➫ [知識篇]TCP/IP
➫ [第六週] 網路基礎 — TCP/ IP