瀏覽器(Chrome)運作原理
Chrome 運作機制
Chrome 是多程序(multi-process)架構,不同的 process 之間透過 IPC(Inter-process communication) 溝通。Process 包括:
browser process
: 負責瀏覽器的主要功能,如地址欄、書籤管理、網絡請求等renderer process
: 每個網頁標籤(或分頁)都運行在獨立的 render process 中,以實現網頁渲染和互動。主要的 renderer process 負責解析 HTML 字串並生成 DOM 樹。如果發現需要下載的資源,它會通過 IPC 與 browser 的 network thread 進行通信,發出網絡請求以獲取資源。plugin process
: 控制網頁使用的插件,如 Adobe Flash Player 或 PDF 閱讀器GPU process
: 處理跨核心的工作和 3D 圖形渲染,以提高性能
process 下又可切分不同的 thread 負責不同功能
- browser process 下包括以下 thread:
ui thread
: 處理瀏覽器的使用者界面network thread
: :負責處理網絡請求和回應
- renderer process 包括以下 thread:
main thread
:負責解析 HTML 字串並產生 DOM treeworker thread
:處理一些後台工作
URL 是什麼?
URL(Uniform Resource Locator)是統一資源定位符的縮寫,它是用於指定訪問互聯網上資源的路徑的格式。URL 包括以下部分:
- 協議類型(Protocol):通常是 "https" 或 "http",指定了訪問資源的協議。
- 伺服器位址(Server Address):這是資源所在的伺服器的位址,可以是域名或 IP 位址。
- 埠號(Port):指定伺服器上提供該資源的通信埠號。
- 資源路徑(Resource Path):指定資源在伺服器上的路徑或位置。在 UNIX 文件系統中,這可以類似於文件路徑。
- 查詢(Query):以問號 "?" 開頭,用於傳遞參數和查詢資源。多個參數可以用 "&" 分隔。
- 片段 ID(Fragment ID):以哈希符號 "#" 開頭,通常用於定位網頁中的特定部分。
舉例來說:
https://localhost:3000/page/index.html?keyword=abc&name=abc#test-1
https - 協定類型
localhost - 伺服器位址
3000 - 埠號
/page - 資源路徑
index.html - 檔案名
?keyword=abc&name=abc - 查詢(以問號 ? 開始,並以 & 分隔 )
#test-1 - 片段 ID,以 hash 開頭,常用於定位
DNS 解析
在訪問網站時,瀏覽器需要將網址(例如:www.example.com)轉換為電腦可以理解的 IP 地址(例如:192.168.1.1),這個過程稱為 DNS 解析。
DNS 解析是通過查找 DNS 伺服器來完成的,通常依次按以下步驟進行查找:
step1: 瀏覽器查找本地 DNS 快取(電腦上保存之前查詢過的網址和它們對應的 IP 地址的地方),以查找之前已解析過的域名 step2: 如果在本地快取中找不到,瀏覽器會查找操作系統的主機文件(hosts file) step3: 如果仍然找不到,瀏覽器會向 DNS 伺服器發出請求,該伺服器將回覆對應的 IP 地址