TCP/IP模型的簡單解釋

TCP/IP模型是互聯網的基礎。想要理解互聯網,就必須理解這個模型。但是,它不好懂,我就從來沒有搞懂過。

前幾天,BetterExplained上有一篇文章,很通俗地解釋了這個模型。我讀後有一種恍然大悟的感覺,第一次感到自己理解了互聯網的總體架構。

下面,我按照自己的理解,寫一下互聯網到底是怎麼搭建起來的。說得不對的地方,歡迎指正。

 TCP/IP模型的簡單解釋

什麼是TCP/IP模型?

TCP/IP模型是一系列網絡協議的總稱,這些協議的目的,就是使計算機之間可以進行信息交換。

所謂"協議"可以理解成機器之間交談的語言,每一種協議都有自己的目的。TCP/IP模型一共包括幾百種協議,對互聯網上交換信息的各個方面都做了規定。

TCP/IP模型的四層結構

這些協議可以大致分成四個層次,上一層的協議都以下一層的協議爲基礎。就像下面這張圖:

TCP/IP模型的四層結構

從下到上的四層,分別爲連接層(Link Layer)、網絡層(Internet Layer)、傳輸層(Transport Layer)、應用層(Application Layer)。

可以這樣理解它們的作用:

1)連接層負責建立電路連接,是整個網絡的物理基礎,典型的協議包括以太網、ADSL等等;

2)網絡層負責分配地址和傳送二進制數據,主要協議是IP協議;

3)傳輸層負責傳送文本數據,主要協議是TCP協議;

4)應用層負責傳送各種最終形態的數據,是直接與用戶打交道的層,典型協議是HTTP、FTP等。

理解這個結構的關鍵,在於理解科學家在70年代設計互聯網的原始目的,就是爲了傳輸文本。所有協議最初都是爲了這個目標而設計的,互聯網架構的核心就是文本對話。

實例:用Telnet建立HTTP對話

爲了觀察文本在互聯網上是如何傳輸的,我們做一個小實驗。

第一步:在"開始"菜單中,點擊"運行"命令,輸入"telnet google.com 80"。

實例:用Telnet建立HTTP對話

telnet命令本身就是一個應用層協議,它的作用是在兩臺主機間,建立一個TCP連接,也就是打開兩臺主機間文本傳輸的一個通道。

"telnet google.com 80"表示建立本機與google.com在80端口的一個文本傳輸通道。所謂"端口"其實是TCP協議的一個參數,用來幫助TCP協議判斷對方主機傳來的文本,到底使用的是哪一種應用層協議。80端口是HTTP協議的端口,就是我們平時瀏覽網頁的端口。常見端口列表可以參考這裏。

另外,與Windows 2000和Windows XP不同,Vista系統默認沒有安裝Telnet客戶端,大家可以參考微軟公司的安裝說明自行安裝。如果你使用的是Linux系統,那麼可以直接在命令行窗口中,輸入上面的命令。

第二步:打開本地顯示。(非Windows系統跳過此步。)

請按以下步驟操作:在Telnet窗口中按下"Ctrl+]";然後,輸入"set localecho"命令,再連續按下兩次回車鍵。

實例:用Telnet建立HTTP對話

好了,這個時候你就可以直接同google.com主機進行對話了。

第三步:你可以試着同Google隨便說句話,看看有什麼反應。

我輸入了"Hello World!"。

實例:用Telnet建立HTTP對話

結果,Google的回答是這樣的:

實例:用Telnet建立HTTP對話

"400 Bad Request"說明Google看不懂你的發言。這是毫不奇怪的,因爲這時你是在TCP文本通道中,進行HTTP對話。所以,你的發言必須遵守HTTP協議,這樣Google才能看懂。

第四步:輸入"GET / HTTP/1.1",表示向google索要首頁根文件,使用的協議是HTTP的1.1版本。

Google的迴應如下:

實例:用Telnet建立HTTP對話

"200 OK"表示要求數據成功。在頭部信息的下面,就是google在瀏覽器中顯示的首頁文件的源代碼。

總結

上面這個例子用的是HTTP協議,如果要使用其他"應用層協議"與主機進行對話,你只要改變端口就行了。比如,"telnet ftp.website.com 21",表示用ftp協議進行對話。

所有這些對話的底層協議,都是TCP協議,因爲這是負責文本傳輸的協議;而TCP協議又必須依靠IP協議,進行二進制數據的傳輸;而二進制數據的傳輸,離不開最底層負責網絡連接的物理協議。

所以,通過這樣四層的網絡架構,就實現了整個互聯網的通信。