客戶端和服務器
連接到互聯(lián)網(wǎng)的計算機被稱作客戶端和服務器。下面是一個簡單描述它們?nèi)绾谓换サ膱D表:

- 客戶端是典型的Web用戶入網(wǎng)設備(比如,你連接了Wi-Fi的電腦,或接入移動網(wǎng)絡的手機)和設備上可聯(lián)網(wǎng)的軟件(通常使用像 Firefox 和 Chrome的瀏覽器)。
- 服務器是存儲網(wǎng)頁,站點和應用的計算機。當一個客戶端設備想要獲取一個網(wǎng)頁時,一份網(wǎng)頁的拷貝將從服務器上下載到客戶端機器上來在用戶瀏覽器上顯示。
一些概念
我們講的客戶端和服務器并不能完成全部工作。還有其他必要的部分,我們將在下面講述。
現(xiàn)在,讓我們假設 Web 就是一條路。路的一端是客戶端,就像你的家。另一端則是服務器,就像你想去的商店。

感謝:街景照片-Street composing,by Kevin D。
除了客戶端和服務器,我們還需要了解:
- 接入互聯(lián)網(wǎng):允許你在互聯(lián)網(wǎng)上發(fā)送和接受數(shù)據(jù)?;旧虾湍慵业缴痰甑慕值啦畈欢唷?/li>
- TCP/IP:傳輸控制協(xié)議和網(wǎng)絡之間互連的協(xié)議是定義數(shù)據(jù)如何傳輸?shù)耐ㄐ艆f(xié)議。這就像你下訂單,去商店和買東西所使用的交通工具。在這,它們就是開車,騎車,或是走路。
- DNS:域名系統(tǒng)就像寫滿網(wǎng)站的書。當你在瀏覽器內(nèi)輸入一個地址時,瀏覽器獲取網(wǎng)頁之前將會查看域名系統(tǒng)。瀏覽器需要找到存放你想要的網(wǎng)頁的服務器,才能發(fā)送 HTTP 請求到正確的地方。就像你要知道商店的地址才能到達那。
- HTTP:超文本傳輸協(xié)議是一個定義客戶端和服務器間交流的語言的協(xié)議。就像你下訂單時所說的話一樣。
-
組成文件:一個網(wǎng)頁由許多文件組成,就像商店里不同的商品一樣。這些文件有兩種類型:
- 代碼:網(wǎng)頁大體由 HTML、CSS、JavaScript 組成,不過你會在后面看到不同的技術。
- 資源:這是其他組成網(wǎng)頁的東西的集合,比如圖像、音樂、視頻、Word 文檔、PDF 文件。
瀏覽器網(wǎng)絡交互流程
當你在瀏覽器里輸入一個網(wǎng)址時(在我們的例子里就是走向商店的路上時):
- 瀏覽器在域名系統(tǒng)服務器上找出存放網(wǎng)頁的服務器的實際地址(找出商店的位置)。
- 瀏覽器發(fā)送 HTTP 請求信息到服務器來請拷貝一份網(wǎng)頁到客戶端(你走到商店并下訂單)。這條消息,包括其他所有在客戶端和服務器之間傳遞的數(shù)據(jù)都是通過互聯(lián)網(wǎng)使用 TCP/IP 協(xié)議傳輸?shù)摹?/li>
- 服務器同意客戶端的請求后,會返回一個“200 OK”信息,意味著“你可以查看這個網(wǎng)頁,給你~”,然后開始將網(wǎng)頁的文件以數(shù)據(jù)包的形式傳輸?shù)綖g覽器(商店給你商品,你將商品帶回家)。
- 瀏覽器將數(shù)據(jù)包聚集成完整的網(wǎng)頁然后將網(wǎng)頁呈現(xiàn)給你(商品到了你的門口 —— 新東西,好棒!)。
DNS
真正的網(wǎng)址看上去并不像你輸入的那樣美好、容易記憶。它們是一串數(shù)字,像 63.245.217.105。
這叫做 IP 地址,它代表了一個互聯(lián)網(wǎng)上獨特的位置。然而,它并不容易記憶,不是嗎?那就是域名系統(tǒng)被發(fā)明的原因。它們是將你輸入瀏覽器的地址與實際 IP 地址相匹配的特殊的服務器(像 “mozilla.org”)。
網(wǎng)頁可以通過 IP 地址直接訪問。試試通過輸入 63.245.217.105 來訪問 Mozilla 網(wǎng)站。能準確訪問的IP是:63.245.215.20。

包
前面我們用“包”來描述了數(shù)據(jù)從服務器到客戶端傳輸?shù)母袷?。這是什么意思?基本上,當數(shù)據(jù)在Web上傳輸時,是以成千上萬的小數(shù)據(jù)塊的形式傳輸?shù)?。大量不同的用戶都可以在同時下載同一個網(wǎng)頁。如果網(wǎng)頁以單個大的數(shù)據(jù)塊形式傳輸,一次就只有一個用戶下載,無疑會讓Web非常沒有效率并且失去很多樂趣。
原文:《網(wǎng)絡交互流程》(From 《Before Coding》)