TCP/IP模型的簡單解釋
TCP/IP模型是網際網路的基礎。想要理解網際網路,就必須理解這個模型。但是,它不好懂,我就從來沒有搞懂過。
前幾天,BetterExplained上有一篇文章,很通俗地解釋了這個模型。我讀後有一種恍然大悟的感覺,第一次感到自己理解了網際網路的總體架構。
下面,我按照自己的理解,寫一下網際網路到底是怎麼搭建起來的。說得不對的地方,歡迎指正。
什麼是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命令本身就是一個應用層協議,它的作用是在兩臺主機間,建立一個TCP連線,也就是開啟兩臺主機間文字傳輸的一個通道。
“telnet google.com 80″表示建立本機與google.com在80埠的一個文字傳輸通道。所謂”埠”其實是TCP協議的一個引數,用來幫助TCP協議判斷對方主機傳來的文字,到底使用的是哪一種應用層協議。80埠是HTTP協議的埠,就是我們平時瀏覽網頁的埠。常見埠列表可以參考這裡。
另外,與Windows 2000和Windows XP不同,Vista系統預設沒有安裝Telnet客戶端,大家可以參考微軟公司的安裝說明自行安裝。如果你使用的是Linux系統,那麼可以直接在命令列視窗中,輸入上面的命令。
第二步:開啟本地顯示。(非Windows系統跳過此步。)
請按以下步驟操作:在Telnet視窗中按下”Ctrl+]”;然後,輸入”set localecho”命令,再連續按下兩次Enter鍵。
好了,這個時候你就可以直接同google.com主機進行對話了。
第三步:你可以試著同Google隨便說句話,看看有什麼反應。
我輸入了”Hello World!”。
結果,Google的回答是這樣的:
“400 Bad Request”說明Google看不懂你的發言。這是毫不奇怪的,因為這時你是在TCP文字通道中,進行HTTP對話。所以,你的發言必須遵守HTTP協議,這樣Google才能看懂。
第四步:輸入”GET / HTTP/1.1″,表示向google索要首頁根檔案,使用的協議是HTTP的1.1版本。
Google的回應如下:
“200 OK”表示要求資料成功。在頭部資訊的下面,就是google在瀏覽器中顯示的首頁檔案的原始碼。
總結
上面這個例子用的是HTTP協議,如果要使用其他”應用層協議”與主機進行對話,你只要改變埠就行了。比如,”telnet ftp.website.com 21″,表示用ftp協議進行對話。
所有這些對話的底層協議,都是TCP協議,因為這是負責文字傳輸的協議;而TCP協議又必須依靠IP協議,進行二進位制資料的傳輸;而二進位制資料的傳輸,離不開最底層負責網路連線的物理協議。
所以,通過這樣四層的網路架構,就實現了整個網際網路的通訊。
相關文章
- TCP/IP模型TCP模型
- TCP/IP 中的OSI分層模型詳解TCP模型
- TCP/IP網路模型TCP模型
- 圖形介面的TCP/IP簡單通訊TCP
- 1.2.3_2 TCP/IP模型TCP模型
- tcp/ip模型中,幀是第幾層的資料單元?TCP模型
- 【TCP/IP】TCP詳解筆記TCP筆記
- TCP、UDP、HTTP及Socket的簡單講解TCPUDPHTTP
- 用簡單易懂的例子解釋隱馬爾可夫模型隱馬爾可夫模型
- TCP/IP五層模型-傳輸層-TCP協議TCP模型協議
- OSI 七層模型與 TCP IP 五層模型模型TCP
- OSI參考模型和TCP/IP參考模型模型TCP
- OSI七層模型與TCP/IP五層模型模型TCP
- OSI七層模型與TCP/IP五層模型TCP
- 大白話聊OSI七層模型和TCP/IP四層模型模型TCP
- OAuth 2.0 的一個簡單解釋OAuth
- TCP/IP 協議及網路分層模型TCP協議模型
- 淺析TCP和nodejs中TCP的簡單應用TCPNodeJS
- 笨辦法學C 練習45:一個簡單的TCP/IP客戶端TCP客戶端
- 限制單個IP併發TCP連線的方法TCP
- TCP/IP中最高大上的鏈路層簡介TCP
- TCP/IP五層模型-應用層-DNS協議TCP模型DNS協議
- 設計模式超級簡單的解釋設計模式
- socket,TCP/IP的理解TCP
- TCP / IP AT命令TCP
- TCP/IP族TCP
- 資料庫表連線的簡單解釋資料庫
- 蘋果IP:如何換IP?換IP最簡單的方法分享蘋果
- TCP/IP、UDP/IP協議TCPUDP協議
- 網路程式設計TCP/IP詳解程式設計TCP
- 帶你瞭解TCP/IP協議族TCP協議
- 《圖解TCP/IP》讀書筆記(一)圖解TCP筆記
- log4j簡單配置解釋
- python中yield的用法詳解——最簡單,最清晰的解釋Python
- tcp 實現簡單http 問題TCPHTTP
- 【TCP/IP】IP地址的劃分及其分類TCP
- Java中的TCP/IP協議和IP地址JavaTCP協議
- OSI和TCP/IPTCP
- 淺談TCP/IPTCP