本文講述了互聯(lián)網(wǎng)OSI模型、數(shù)據(jù)包封包拆包、路由器的概念、還有ip協(xié)議和TCP協(xié)議的關(guān)系。
互聯(lián)網(wǎng)模型:
要談數(shù)據(jù)通信,就不得不先講述分層模型的概念
OS I RM:開(kāi)放系統(tǒng)互連參考模型(Open System Interconnection Reference Model)
如下圖一

圖一
上圖一左邊是OSI模型,右邊是TCPIP協(xié)議棧分層模型,可以看得出,兩個(gè)模型有很清楚的對(duì)應(yīng)關(guān)系。
兩個(gè)模型的下四層是一一對(duì)應(yīng)的,而OSI模型的上三層對(duì)應(yīng)到TCPIP協(xié)議的應(yīng)用層,所以在談?wù)摗皯?yīng)用層”概念的時(shí)候,要注重討論的是哪個(gè)模型。

圖二
如圖二,依據(jù)標(biāo)準(zhǔn)的OSI術(shù)語(yǔ),每層間對(duì)應(yīng)的“協(xié)議數(shù)據(jù)單元”(PRotocol Data Unit,簡(jiǎn)稱(chēng)PDU)的名稱(chēng)都是不同的
物理層為“位”(bit),即平常講的二進(jìn)制數(shù)位流,在物理傳輸介質(zhì)上以二進(jìn)制數(shù)字信號(hào)傳輸(簡(jiǎn)單的如高電平代表“1”,底電平代表“0”)。
物理層的傳輸介質(zhì)包括:
數(shù)據(jù)鏈路層PDU名稱(chēng)叫數(shù)據(jù)幀“Frame”,例如幀中繼技術(shù)名稱(chēng)叫Frame Relay ,其數(shù)據(jù)單元名字叫“幀”,對(duì)以太網(wǎng)來(lái)說(shuō)是以太幀。
網(wǎng)絡(luò)層PDU的名稱(chēng)叫數(shù)據(jù)包Packet, 因?yàn)镮P協(xié)議在這一層,所以互聯(lián)網(wǎng)上的數(shù)據(jù)一般被稱(chēng)為IP數(shù)據(jù)包。
傳輸層PDU的名稱(chēng)叫數(shù)據(jù)段Segment ,這個(gè)層面最聞名的是傳輸控制協(xié)議TCP和用戶(hù)數(shù)據(jù)報(bào)協(xié)議UDP。
會(huì)話(huà)層session 的PDU叫SPDU;
表示層Presentation的PDU叫PPDU;
應(yīng)用層application的PDU叫APDU;
數(shù)據(jù)包封包和傳送過(guò)程:

圖三
如上圖圖三,用戶(hù)數(shù)據(jù)報(bào)文的一個(gè)封裝過(guò)程,應(yīng)用程序的數(shù)據(jù)使用TCP協(xié)議進(jìn)行傳輸,用戶(hù)數(shù)據(jù)被切割成合適的數(shù)據(jù)片段后,被加上網(wǎng)絡(luò)層協(xié)議IP的首部字節(jié),成為IP數(shù)據(jù)包,然后被加上數(shù)據(jù)鏈路層的以太網(wǎng)首部,成為以太網(wǎng)數(shù)據(jù)幀,再由以太網(wǎng)驅(qū)動(dòng)程序?qū)D(zhuǎn)化為二進(jìn)制位流,在物理層面?zhèn)魉汀?/P>
數(shù)據(jù)包經(jīng)路由器傳輸?shù)倪^(guò)程,下圖圖四:

圖四
上圖圖四是兩個(gè)主機(jī)通過(guò)一臺(tái)交換機(jī)和一臺(tái)路由器通信的示意圖。二層交換機(jī)僅跨越OSI模型的物理層和數(shù)據(jù)鏈路層,所以稱(chēng)為二層交換機(jī),僅為所有連接的主機(jī)提供數(shù)據(jù)鏈路層間的互通功能。
路由器是跨越物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層的設(shè)備。正像主機(jī)和服務(wù)器有自己的操作系統(tǒng)windows、unix等一樣,路由器也有自己的操作系統(tǒng)(OS)。
目前業(yè)界最大的路由器提供商為CISCO 思科,由美國(guó)斯坦福大學(xué)兩個(gè)都是計(jì)算機(jī)主任的一對(duì)夫婦創(chuàng)立,自1984年生產(chǎn)第一臺(tái)路由器來(lái),如今此公司生產(chǎn)的路由器等設(shè)備承載了互聯(lián)網(wǎng)80%左右的數(shù)據(jù)流量。其設(shè)備操作系統(tǒng)為IOS網(wǎng)際操作系統(tǒng)。Cisco的名字取自Francisco,那里有座聞名于世界的金門(mén)大橋,此公司一直認(rèn)為自己是軟件公司,主要提供IOS操作系統(tǒng),而不是硬件設(shè)備提供商。
最簡(jiǎn)單的路由器的概念是一臺(tái)裝有兩塊網(wǎng)卡的主機(jī),主機(jī)內(nèi)部安裝的路由軟件可以根據(jù)IP地址在兩塊網(wǎng)卡間轉(zhuǎn)發(fā)IP數(shù)據(jù)包,兩塊網(wǎng)卡各有一個(gè)IP地址,具有兩個(gè)物理接口的路由器同這個(gè)道理是類(lèi)似的。
由上圖圖四可以看到,IP地址的概念是屬于IP協(xié)議,IP協(xié)議是屬于OSI模型第三層網(wǎng)絡(luò)層的,所有跨越網(wǎng)絡(luò)層的設(shè)備都需要有IP地址。最左邊的主機(jī)同路由器的左側(cè)接口各有一個(gè)IP地址,使用IP協(xié)議通信;最右邊的服務(wù)器和路由器右側(cè)接口各有一個(gè)IP地址,使用IP協(xié)議通信;路由器的不同接口的IP地址是屬于不同的IP子網(wǎng)的,路由器就是在不同IP子網(wǎng)間傳送IP數(shù)據(jù)包的設(shè)備,路由是根據(jù)IP數(shù)據(jù)包里的地址選擇正確傳遞路徑的過(guò)程。
IP協(xié)議和TCP協(xié)議:

圖五
上圖圖五是兩個(gè)主機(jī)通過(guò)多個(gè)路由器通信的過(guò)程,這是當(dāng)今互聯(lián)網(wǎng)的基本組成的場(chǎng)景。抽象一下上圖的拓?fù)洌褐鳈C(jī)和中間的多個(gè)路由器是拓?fù)鋱D上的點(diǎn),各個(gè)點(diǎn)之間是線(xiàn),所以,互聯(lián)網(wǎng)的拓?fù)渚褪怯蔁o(wú)數(shù)點(diǎn)和線(xiàn)組成的網(wǎng)絡(luò),從這里深究下去,互聯(lián)網(wǎng)拓?fù)涞脑O(shè)計(jì)可以說(shuō)就是“圖論”。點(diǎn)和點(diǎn)之間是不同的IP子網(wǎng),上圖兩臺(tái)主機(jī)間相互通信的過(guò)程是由無(wú)數(shù)個(gè)IP數(shù)據(jù)包(packet)在之間傳送的過(guò)程構(gòu)成。
在中間的A到E的路由器會(huì)分析由主機(jī)發(fā)出的每個(gè)數(shù)據(jù)包的IP包頭(網(wǎng)絡(luò)層信息),根據(jù)里面的IP地址決定下一個(gè)接收的路由器,最終到達(dá)目的主機(jī)。決定的過(guò)程叫IP數(shù)據(jù)包選路的過(guò)程,即路由過(guò)程。許多路由器在一起為數(shù)據(jù)包選擇路徑所依靠的法則叫做路由協(xié)議。
上圖可以看到,從一側(cè)到另一側(cè)有不同的路徑:
假設(shè)從一側(cè)發(fā)往另一側(cè)一封email,email的數(shù)據(jù)類(lèi)被拆分為很多IP數(shù)據(jù)包,并逐層加上每層頭數(shù)據(jù)字節(jié),根據(jù)A到E這些路由器的路由協(xié)議和網(wǎng)絡(luò)狀況,這些IP數(shù)據(jù)包會(huì)走不同的路徑到達(dá)另一側(cè),到達(dá)的順序不同于發(fā)送的順序,在另一側(cè)的主機(jī)會(huì)按數(shù)據(jù)包的發(fā)送順序重新排列,并一層層剝離PDU的包頭數(shù)據(jù),提取出里面的應(yīng)用數(shù)據(jù),重構(gòu)為一封email。
在上面這個(gè)過(guò)程中,有些數(shù)據(jù)包甚至?xí)p壞或者丟失,需要重傳這些數(shù)據(jù)包。這樣,為了保障IP數(shù)據(jù)包傳送的正確順序和不被丟失,需要其它的協(xié)議跟IP協(xié)議一起工作,這就是OSI模型中第四層的傳輸控制協(xié)議(TCP)的由來(lái),如下圖圖六。TCP協(xié)議包括重傳數(shù)據(jù)包和在接收端按數(shù)據(jù)包的發(fā)送順序重新排列的機(jī)制,可以保障發(fā)送的每個(gè)數(shù)據(jù)包都可以被正確接收。email,www等互聯(lián)網(wǎng)數(shù)據(jù)業(yè)務(wù)都是使用TCP傳輸?shù)模ヂ?lián)網(wǎng)最初是為數(shù)據(jù)業(yè)務(wù)所設(shè)計(jì)的,所以大家都將互聯(lián)網(wǎng)稱(chēng)為T(mén)CP/IP網(wǎng)絡(luò)。

圖六
TCP確保每個(gè)數(shù)據(jù)包都可以被接受到的機(jī)制使之被歸為“有連接的傳輸協(xié)議”,可以看到在圖六中,還有一個(gè)跟TCP并列的傳輸層協(xié)議:用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP),這個(gè)協(xié)議同TCP不同的是,并不能保障每個(gè)發(fā)送的數(shù)據(jù)包都被接收到,所以,UDP被歸為“無(wú)連接的傳輸協(xié)議”,UDP更適合不追求數(shù)據(jù)的準(zhǔn)確性,而關(guān)注時(shí)延、抖動(dòng)的音頻和視頻應(yīng)用,以后會(huì)談到。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注