自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TCP/IP模型的通俗理解,從Hello World實(shí)例開始

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
前幾天,BetterExplained上有一篇文章,很通俗地解釋了這個(gè)模型。我讀后有一種恍然大悟的感覺,第一次感到自己理解了互聯(lián)網(wǎng)的總體架構(gòu)。

TCP/IP模型是互聯(lián)網(wǎng)的基礎(chǔ)。

想要理解互聯(lián)網(wǎng),就必須理解這個(gè)模型。但是,它不好懂,我就從來(lái)沒有搞懂過(guò)。

前幾天,BetterExplained上有一篇文章,很通俗地解釋了這個(gè)模型。我讀后有一種恍然大悟的感覺,第一次感到自己理解了互聯(lián)網(wǎng)的總體架構(gòu)。

下面,我按照自己的理解,寫一下互聯(lián)網(wǎng)到底是怎么搭建起來(lái)的。說(shuō)得不對(duì)的地方,歡迎指正。

[[272267]]

什么是TCP/IP模型?

TCP/IP模型是一系列網(wǎng)絡(luò)協(xié)議的總稱,這些協(xié)議的目的,就是使計(jì)算機(jī)之間可以進(jìn)行信息交換。

所謂"協(xié)議"可以理解成機(jī)器之間交談的語(yǔ)言,每一種協(xié)議都有自己的目的。TCP/IP模型一共包括幾百種協(xié)議,對(duì)互聯(lián)網(wǎng)上交換信息的各個(gè)方面都做了規(guī)定。

TCP/IP模型的四層結(jié)構(gòu)

這些協(xié)議可以大致分成四個(gè)層次,上一層的協(xié)議都以下一層的協(xié)議為基礎(chǔ)。就像下面這張圖:

從下到上的四層,分別為連接層(Link Layer)、網(wǎng)絡(luò)層(Internet Layer)、傳輸層(Transport Layer)、應(yīng)用層(Application Layer)。

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

1)連接層負(fù)責(zé)建立電路連接,是整個(gè)網(wǎng)絡(luò)的物理基礎(chǔ),典型的協(xié)議包括以太網(wǎng)、ADSL等等;

2)網(wǎng)絡(luò)層負(fù)責(zé)分配地址和傳送二進(jìn)制數(shù)據(jù),主要協(xié)議是IP協(xié)議;

3)傳輸層負(fù)責(zé)傳送文本數(shù)據(jù),主要協(xié)議是TCP協(xié)議;

4)應(yīng)用層負(fù)責(zé)傳送各種最終形態(tài)的數(shù)據(jù),是直接與用戶打交道的層,典型協(xié)議是HTTP、FTP等。

理解這個(gè)結(jié)構(gòu)的關(guān)鍵,在于理解科學(xué)家在70年代設(shè)計(jì)互聯(lián)網(wǎng)的原始目的,就是為了傳輸文本。所有協(xié)議最初都是為了這個(gè)目標(biāo)而設(shè)計(jì)的,互聯(lián)網(wǎng)架構(gòu)的核心就是文本對(duì)話。

實(shí)例:用Telnet建立HTTP對(duì)話

為了觀察文本在互聯(lián)網(wǎng)上是如何傳輸?shù)模覀冏鲆粋€(gè)小實(shí)驗(yàn)。

第一步:在"開始"菜單中,點(diǎn)擊"運(yùn)行"命令,輸入"telnet google.com 80"。

telnet命令本身就是一個(gè)應(yīng)用層協(xié)議,它的作用是在兩臺(tái)主機(jī)間,建立一個(gè)TCP連接,也就是打開兩臺(tái)主機(jī)間文本傳輸?shù)囊粋€(gè)通道。

"telnet google.com 80"表示建立本機(jī)與google.com在80端口的一個(gè)文本傳輸通道。所謂"端口"其實(shí)是TCP協(xié)議的一個(gè)參數(shù),用來(lái)幫助TCP協(xié)議判斷對(duì)方主機(jī)傳來(lái)的文本,到底使用的是哪一種應(yīng)用層協(xié)議。80端口是HTTP協(xié)議的端口,就是我們平時(shí)瀏覽網(wǎng)頁(yè)的端口。常見端口列表可以參考這里。

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

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

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

好了,這個(gè)時(shí)候你就可以直接同google.com主機(jī)進(jìn)行對(duì)話了。

 

第三步:你可以試著同Google隨便說(shuō)句話,看看有什么反應(yīng)。

我輸入了"Hello World!"。

結(jié)果,Google的回答是這樣的:

"400 Bad Request"說(shuō)明Google看不懂你的發(fā)言。這是毫不奇怪的,因?yàn)檫@時(shí)你是在TCP文本通道中,進(jìn)行HTTP對(duì)話。所以,你的發(fā)言必須遵守HTTP協(xié)議,這樣Google才能看懂。

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

Google的回應(yīng)如下:

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

總結(jié)

上面這個(gè)例子用的是HTTP協(xié)議,如果要使用其他"應(yīng)用層協(xié)議"與主機(jī)進(jìn)行對(duì)話,你只要改變端口就行了。比如,"telnet ftp.website.com 21",表示用ftp協(xié)議進(jìn)行對(duì)話。

所有這些對(duì)話的底層協(xié)議,都是TCP協(xié)議,因?yàn)檫@是負(fù)責(zé)文本傳輸?shù)膮f(xié)議;而TCP協(xié)議又必須依靠IP協(xié)議,進(jìn)行二進(jìn)制數(shù)據(jù)的傳輸;而二進(jìn)制數(shù)據(jù)的傳輸,離不開最底層負(fù)責(zé)網(wǎng)絡(luò)連接的物理協(xié)議。

所以,通過(guò)這樣四層的網(wǎng)絡(luò)架構(gòu),就實(shí)現(xiàn)了整個(gè)互聯(lián)網(wǎng)的通信。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2023-05-23 08:01:10

Netty網(wǎng)絡(luò)通信

2021-01-20 07:48:28

TechFlow前端網(wǎng)站

2016-12-13 14:12:25

程序機(jī)制

2016-12-14 14:41:20

Hello World程序運(yùn)行機(jī)制

2012-03-06 10:22:00

程序

2011-03-21 09:45:52

Hello WorldObjective-C生命周期

2019-05-20 07:37:00

TCPIP網(wǎng)絡(luò)協(xié)議

2024-03-13 13:53:10

C++程序開發(fā)

2015-03-03 10:52:48

TCPIP

2014-12-19 10:07:10

C

2017-11-23 17:45:46

Yii框架IntelYii框架深度剖析

2019-04-08 08:44:10

TCPIP網(wǎng)絡(luò)協(xié)議

2010-06-13 14:49:40

TCP IP協(xié)議優(yōu)化

2016-02-19 17:54:42

智慧醫(yī)療大數(shù)據(jù)

2009-07-30 13:21:17

Scala入門Hello World

2009-09-16 17:15:19

OSGi Bundle

2009-08-11 10:32:23

什么是Groovy

2023-01-06 08:18:44

2023-09-04 07:30:03

Wasm匯編語(yǔ)言

2011-06-08 14:39:06

Qt 教程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)