網(wǎng)絡(luò)通信概述
OSI(Open System Interconnection)是一個開放性的通行系統(tǒng)互連參考模型,共包含七層協(xié)議。從上到下分別是應(yīng)用層、表示層、會話層、傳輸層、 網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層。
網(wǎng)絡(luò)七層結(jié)構(gòu)介紹
詳細介紹
物理層(physical layer)
所謂的物理層,是指光纖、電纜或者電磁波等真實存在的物理媒介。這些媒介可以傳送物理信號,比如亮度、電壓或者振幅。對于數(shù)字應(yīng)用來說,我們只需要兩種物理信號來分別表示0和1,比如用高電壓表示1,低電壓表示0,就構(gòu)成了簡單的物理層協(xié)議。針對某種媒介,電腦可以有相應(yīng)的接口,用來接收物理信號,并解讀成為0/1序列。
數(shù)據(jù)鏈路層(link layer)
在數(shù)據(jù)鏈路層,信息以幀(frame)為單位傳輸。所謂的幀,是一段有限的0/1序列。連接層協(xié)議的功能就是識別0/1序列中所包含的幀。比如說,根據(jù)一定的0/1組合識別出幀的起始和結(jié)束。在幀中,有收信地址(Source, SRC)和送信地址(Destination, DST),還有能夠探測錯誤的校驗序列(Frame Check Sequence)。當然,幀中最重要的最重要是所要傳輸?shù)臄?shù)據(jù) (payload)。這些數(shù)據(jù)往往符合更高層協(xié)議,供網(wǎng)絡(luò)的上層使用。與數(shù)據(jù)相配套,幀中也有數(shù)據(jù)的類型(Type)信息。連接層協(xié)議不關(guān)心數(shù)據(jù)中到底包含什么。幀就像是一個信封,把數(shù)據(jù)包裹起來。
以太網(wǎng)(Ethernet)和WiFi是現(xiàn)在最常見的連接層協(xié)議。通過連接層協(xié)議,我們可以建立局域的以太網(wǎng)或者WiFi局域網(wǎng),并讓位于同一局域網(wǎng)絡(luò)中的兩臺計算機通信。連接層就像是一個社區(qū)的郵差,他認識社區(qū)中的每一戶人。社區(qū)中的每個人都可以將一封信(幀)交給他,讓他送給同一社區(qū)的另一戶人家。
網(wǎng)絡(luò)層(network layer)
不同的社區(qū)之間該如何通信呢? 換句話說,如何讓WiFi上的一臺計算機和以太網(wǎng)上的另一臺計算機通信呢?我們需要一個“中間人”。這個“中間人”必須有以下功能: 1. 能從物理層上在兩個網(wǎng)絡(luò)的接收和發(fā)送0/1序列,2. 能同時理解兩種網(wǎng)絡(luò)的幀格式。路由器(router)就是為此而產(chǎn)生的“翻譯”。一個路由器有多個網(wǎng)卡(NIC,Network Interface Controller),每個NIC可以接入多個網(wǎng)絡(luò),并理解相應(yīng)的連接層協(xié)議。在幀經(jīng)過路由到達另一個網(wǎng)絡(luò)的時候,路由會讀取幀的信息,并改寫以發(fā)送到另一個網(wǎng)絡(luò)。所以路由器就像是在兩個社區(qū)都有分支的郵局。一個社區(qū)的郵差將信送到本社區(qū)的郵局分支,而郵局會通過自己在另一個地區(qū)的分支將信轉(zhuǎn)交給另一個社區(qū)的郵差手中,并由另一個社區(qū)的郵差最終送到目的地。
傳輸層(transport layer)
上面的三層協(xié)議讓不同的計算機之間可以通信。但計算機中實際上有許多個進程,每個進程都可能有通信的需求。這就好像一所房子里住了好幾個人(進程),如何讓信精確的送到某個人手里呢?遵照之前相同的邏輯,我們需要在信紙上寫上新的信息,比如收信人的姓名,才可能讓信送到。所以,傳輸層就是在信紙的空白上寫上新的“收信人”信息。每一所房子會配備一個管理員(傳輸層協(xié)議)。管理員從郵差手中接過信,會根據(jù)“收信人”,將信送給房子中的某個人。
傳輸層協(xié)議,比如TCP和UDP,使用端口號(port number)來識別收信人(某個進程)。在寫信的時候,我們寫上目的地的端口。當信到達目的地的管理員手中,他會根據(jù)傳輸層協(xié)議,識別端口號,將信送給不同的人。
TCP和UDP協(xié)議是兩種不同的傳輸層協(xié)議。UDP協(xié)議類似于我們的信件交流過程。TCP協(xié)議則好像兩個情人間的頻繁通信。一個小情人要表達的感情太多,以致于連續(xù)寫了好幾封信。而另一方必須將這些信按順序排列起來,才能看明白全部的意思。TCP協(xié)議還有控制網(wǎng)絡(luò)交通等功能。
會話層(Session Layer)
會話層負責在網(wǎng)絡(luò)中的兩節(jié)點之間建立、維持和終止通信。 會話層的功能包括:建立通信鏈接,保持會話過程通信鏈接的暢通,同步兩個節(jié)點之間的對話,決定通信是否被中斷以及通信中斷時決定從何處重新發(fā)送。
通知有人給你打好招呼,以便進行通話。就像現(xiàn)在我和你說話,你耳朵聽到了也能理解,但如果下面是外國人,他聽到了我的聲音,他理解了嗎?他不能理解。那對于計算機網(wǎng)絡(luò)來言,客戶機發(fā)了一個請求給服務(wù)器,服務(wù)器應(yīng)該能理解這個請求到底是什么,所以接下去的問題是你怎么樣理解?這個理解有兩個層次,我講中國話,他只能懂英文,那么這當中應(yīng)該有一個翻譯。把漢語翻譯成英語,這樣的工作就交給下一層表示層來做了。
表示層(Presentation Layer)
應(yīng)用程序和網(wǎng)絡(luò)之間的翻譯官,在表示層,數(shù)據(jù)將按照網(wǎng)絡(luò)能理解的方案進行格式化;這種格式化也因所使用網(wǎng)絡(luò)的類型不同而不同。表示層管理數(shù)據(jù)的解密與加密,如系統(tǒng)口令的處理。例如:在Internet上查詢你銀行賬戶,使用的即是一種安全連接。你的賬戶數(shù)據(jù)在發(fā)送前被加密,在網(wǎng)絡(luò)的另一端,表示將對接收到的數(shù)據(jù)解密。除此之外,表示層協(xié)議還對圖片和文件格式信息進行解碼和編碼。
應(yīng)用層(Application layer)
通過上面的幾層協(xié)議,我們已經(jīng)可以在任意兩個人(進程)之間進行通信。然而每個人實際上從事的是不同的行業(yè)。有的人是律師,有的人外交官。比如說律師之間的通信,會用嚴格的律師術(shù)語,以免產(chǎn)生糾紛。再比如外交官之間的通信,必須符合一定的外交格式,以免發(fā)生外交誤會。再比如間諜通過暗號來傳遞加密信息。應(yīng)用層協(xié)議是對信件內(nèi)容進一步的用語規(guī)范。應(yīng)用層的協(xié)議包括用于Web瀏覽的HTTP協(xié)議,用于傳輸文件的FTP協(xié)議,用于Email的IMAP等等。