1.1、OSI七層網(wǎng)絡(luò)模型
OSI七層網(wǎng)絡(luò)模型中,每層的功能如下:
- 應(yīng)用層:人與計(jì)算機(jī)網(wǎng)絡(luò)交互的窗口。
- 表示層:負(fù)責(zé)數(shù)據(jù)格式的封裝,如加密、壓縮、編解碼等。
- 會(huì)話層:建立、終止、管理不同端間的會(huì)話連接。
- 傳輸層:提供端到端(兩臺(tái)機(jī)器)之間的傳輸機(jī)制,以及提供流量控制、出錯(cuò)效驗(yàn)。
- 網(wǎng)絡(luò)層:邏輯尋址,IP地址,在下兩層的基礎(chǔ)上向資源子網(wǎng)提供服務(wù)。
- 數(shù)據(jù)鏈路層:負(fù)責(zé)建立和管理節(jié)點(diǎn)間的鏈路,將數(shù)據(jù)封裝成幀,進(jìn)行可靠傳輸。
- 物理層:在介質(zhì)媒體上傳輸比特流。
在TCP/IP
體系中,將原本OSI
體系中的應(yīng)用層、表示層、會(huì)話層合并為了應(yīng)用層,將數(shù)據(jù)鏈路層和物理層合并為了數(shù)據(jù)鏈路層,因此TCP/IP
體系中只存在四層結(jié)構(gòu)。
注意點(diǎn):在最初因?yàn)榧夹g(shù)問(wèn)題,因此數(shù)據(jù)傳輸必須建立在物理實(shí)體介質(zhì)的基礎(chǔ)之上,但如今無(wú)線電的電磁波技術(shù)也可以做到利用空氣作為介質(zhì),從而達(dá)到傳輸數(shù)據(jù)的目的。
在OSI
分層體系中,上三層:應(yīng)用層、表示層、會(huì)話層組成資源子網(wǎng),下三層:網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層組成通信子網(wǎng)。
1.1.1、OSI模型的通信的封裝與解析過(guò)程
? ?在網(wǎng)絡(luò)通信中,通信雙方都必須是對(duì)等的,并且雙方都遵守相同協(xié)議的,這樣才可通信。好比舉個(gè)例子:
竹子想發(fā)微信信息給熊貓,喊熊貓出來(lái)玩,但雙方之間的通信基礎(chǔ)必須對(duì)等,也就是說(shuō),熊貓的手機(jī)上也必須要安裝了微信,否則竹子無(wú)法通過(guò)微信與熊貓出來(lái)玩。
但如果竹子說(shuō)的是英語(yǔ),熊貓只能懂漢語(yǔ),雙方并未遵守相同的“協(xié)議”,那兩者之間自然也無(wú)法進(jìn)行通信。因此,通信的另一要素則是:通信雙方都必須遵守相同的協(xié)議。
而在計(jì)算機(jī)網(wǎng)絡(luò)中,當(dāng)兩臺(tái)機(jī)器進(jìn)行通信時(shí),其過(guò)程主要包含數(shù)據(jù)的封裝與解封:
如上圖,左側(cè)是發(fā)送端,右側(cè)是接收端,當(dāng)發(fā)送端的應(yīng)用嘗試傳輸一條數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)根據(jù)網(wǎng)絡(luò)分層結(jié)構(gòu),從上至下依次封裝,每層都對(duì)數(shù)據(jù)做一定的處理,最后在物理層轉(zhuǎn)換為比特流(二進(jìn)制數(shù)據(jù)),然后傳輸至接收端。
因?yàn)殡p方之間遵守的都是相同的協(xié)議體系(網(wǎng)絡(luò)模型),因此接收端會(huì)首先接收到比特流數(shù)據(jù),然后從下至上依次解封數(shù)據(jù),最終在應(yīng)用層還原數(shù)據(jù),從而達(dá)到通信的目的。
1.2、TCP/IP協(xié)議簇
? ?TCP/IP
應(yīng)該是計(jì)算機(jī)網(wǎng)絡(luò)中聽(tīng)的次數(shù)最多的詞匯,但它并非單純的指TCP
和IP
兩個(gè)協(xié)議,而是一組協(xié)議的代名詞,指由許許多多的網(wǎng)絡(luò)協(xié)議一同組成的“協(xié)議簇”,TCP/IP
協(xié)議簇主要組成如下:
上面列出了一些TCP/IP
協(xié)議簇中常用的一些協(xié)議,但整個(gè)協(xié)議簇是由大大小小上百個(gè)協(xié)議一同組成的(對(duì)于TCP/IP
協(xié)議簇中的一些常用協(xié)議可參考:百度百科)。
在計(jì)算機(jī)網(wǎng)絡(luò)體系中,每層都會(huì)存在多個(gè)協(xié)議,但一個(gè)協(xié)議只會(huì)隸屬于一層。同時(shí),協(xié)議也可以由軟件、硬件兩個(gè)維度來(lái)實(shí)現(xiàn)。
除開(kāi)最常見(jiàn)的TCP/IP協(xié)議簇外,還有一些其他的協(xié)議組,如
IPX/SPX、NetBEUI、AppleTalk
等協(xié)議組。
1.2.1、通信協(xié)議的基本概念
? ?前面的敘述中,更偏向于“空中樓閣”般的理論概念,比較生澀難懂,接下來(lái)我們以實(shí)際的TCP/IP
協(xié)議出發(fā),再對(duì)計(jì)算機(jī)網(wǎng)絡(luò)更進(jìn)一步闡述。
? ?TCP/IP通信協(xié)議是最完整、使用最廣泛的網(wǎng)絡(luò)協(xié)議體系,它的魅力在于可使不同硬件結(jié)構(gòu),不同操作系統(tǒng)的計(jì)算機(jī)相互通信,通信協(xié)議中定義多方之間發(fā)送/接收的報(bào)文格式、順序以及規(guī)則,其中語(yǔ)法定義了傳輸?shù)膱?bào)文格式,語(yǔ)義定義了報(bào)文傳輸規(guī)則,時(shí)序定義了報(bào)文傳輸順序,計(jì)算機(jī)通信的本質(zhì)就在于信息報(bào)文的相互交換。
1.2.2、協(xié)議數(shù)據(jù)單元(PDU)
? ?計(jì)算機(jī)網(wǎng)絡(luò)體系中,不同節(jié)點(diǎn)通信時(shí)交換的信息報(bào)文被稱為協(xié)議數(shù)據(jù)單元(PDU),PDU
主要由協(xié)議頭信息+數(shù)據(jù)(SDU
)組成,數(shù)據(jù)是指發(fā)送端需要傳輸給接收端的信息,而協(xié)議頭信息中,則包含了完成傳輸所需的控制信息,如地址、長(zhǎng)度、序號(hào)、分段標(biāo)識(shí)、差錯(cuò)控制信息等。
? ?基于TCP/IP
體系而言,PDU
在不同層存在不同的稱呼,如下圖:
1.3、計(jì)算機(jī)網(wǎng)絡(luò)體系中各層綜述
? ?就目前而言,前面的闡述中已經(jīng)將計(jì)算機(jī)網(wǎng)絡(luò)中最常見(jiàn)的OSI、TCP/IP
體系簡(jiǎn)單介紹明白了,但對(duì)于這些體系中,不同層的具體作用卻并沒(méi)有進(jìn)行探討。因此,接下來(lái)我們從自己設(shè)計(jì)一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)體系的角度出發(fā),分別來(lái)探討網(wǎng)絡(luò)分層的必要性與每個(gè)分層的具體含義。
1.3.1、物理層
先來(lái)看最簡(jiǎn)單的通信模型:
如上圖,兩臺(tái)電腦之間通物理媒體連接,互相傳遞信息,從而達(dá)到通信的目的。
在這種最簡(jiǎn)單的直連通信模型中,想要實(shí)現(xiàn)雙方之間的通信,那應(yīng)該考慮如下幾個(gè)問(wèn)題:
- ①連接兩臺(tái)電腦之間的傳輸媒體可以采用哪些介質(zhì)類型。
- ②連接兩臺(tái)電腦時(shí),兩臺(tái)電腦應(yīng)該存在怎樣的物理接口。
- ③傳輸數(shù)據(jù)時(shí),使用何種信號(hào)表達(dá)比特流中的
0
和1
。 - ④雙方之間通信時(shí),不同的傳輸介質(zhì),數(shù)據(jù)傳輸?shù)乃俣葮?biāo)準(zhǔn)又該是多少。
對(duì)于如上問(wèn)題,我們可以將其全部歸納到“物理層”來(lái)解決,在該層中定義標(biāo)準(zhǔn)規(guī)范。
簡(jiǎn)單來(lái)說(shuō),物理層主要任務(wù)是負(fù)責(zé)在介質(zhì)上正確的傳送比特流,并規(guī)定物理接口的各種特性和物理設(shè)備的標(biāo)準(zhǔn),如網(wǎng)線的接口類型、光纖的接口類型、各種傳輸介質(zhì)的傳輸速率等。
1.3.2、數(shù)據(jù)鏈路層
但一般現(xiàn)在不會(huì)存在直連型網(wǎng)絡(luò),常用的計(jì)算機(jī)網(wǎng)絡(luò)都是由多臺(tái)機(jī)器共同組成的,如下:
在這種總線連接的通信模型中,當(dāng)一臺(tái)主機(jī),比如A
向D
發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)通過(guò)總線傳輸至總線上的所有主機(jī),此時(shí)D
如何知道該條數(shù)據(jù)是發(fā)給自己的呢?其他主機(jī)又如何區(qū)分?jǐn)?shù)據(jù)不是發(fā)給自己的呢?因此,對(duì)于這種多臺(tái)機(jī)器組成的網(wǎng)絡(luò)模型而言,我們也需要解決一系列問(wèn)題,如:
- ①編址問(wèn)題:如何區(qū)分總線上的各主機(jī)(如
MAC
地址),在發(fā)送數(shù)據(jù)時(shí),帶上目標(biāo)主機(jī)的地址,其他主機(jī)根據(jù)數(shù)據(jù)中的目標(biāo)地址確認(rèn)是否是發(fā)給自己的。 - ②當(dāng)其他主機(jī)收到傳遞的數(shù)據(jù)后,如何從比特流中正確區(qū)分出數(shù)據(jù)和目的地址。
- ③當(dāng)同時(shí)多臺(tái)主機(jī)共用主線時(shí),如何協(xié)調(diào)各主機(jī)競(jìng)爭(zhēng)總線,避免數(shù)據(jù)發(fā)生碰撞。
對(duì)于上述中的這些問(wèn)題,可以全部劃歸到鏈路層處理。
因此可以得出,數(shù)據(jù)鏈路層主要任務(wù)是實(shí)現(xiàn)數(shù)據(jù)在不可靠的物理線路上的可靠傳遞,負(fù)責(zé)提供物理地址尋址、數(shù)據(jù)的成幀、流量控制、差錯(cuò)控制等功能,確保數(shù)據(jù)的可靠傳輸。
PS:對(duì)于這種總線型網(wǎng)絡(luò)早已淘汰,目前常用的則是以太網(wǎng)的交換式通信模型:
1.3.3、網(wǎng)絡(luò)層
到目前為止,解決了物理層及鏈路層中的問(wèn)題后,就可以實(shí)現(xiàn)數(shù)據(jù)在一個(gè)局域網(wǎng)絡(luò)中的傳輸了。但實(shí)際每天都接觸的因特網(wǎng)是由無(wú)數(shù)個(gè)小網(wǎng)絡(luò)和路由器互連組成的,如下:
因此只解決前面所敘述的問(wèn)題還是無(wú)法在龐大的計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)通信,畢竟之前因?yàn)橹挥幸粋€(gè)網(wǎng)絡(luò),所以不需要對(duì)網(wǎng)絡(luò)進(jìn)行標(biāo)識(shí)。但在這種廣域網(wǎng)模型中,會(huì)存在大大小小無(wú)數(shù)個(gè)局域網(wǎng),所以想要從一臺(tái)主機(jī)將數(shù)據(jù)傳輸給另一臺(tái)主機(jī)時(shí),此時(shí)又該如何精準(zhǔn)定位到某個(gè)網(wǎng)絡(luò)中的具體主機(jī)呢?因此又產(chǎn)生了一系列的問(wèn)題需要加以解決:
- ①如何標(biāo)識(shí)各個(gè)網(wǎng)絡(luò)及網(wǎng)絡(luò)中的主機(jī)(網(wǎng)絡(luò)和主機(jī)共同編址問(wèn)題,如IP地址)。
- ②一臺(tái)主機(jī)向另一臺(tái)主機(jī)發(fā)送數(shù)據(jù)時(shí),在廣域網(wǎng)中往往存在多條鏈路可走,此時(shí)如何選擇最合適的路由。
而對(duì)于這些問(wèn)題我們都可以劃歸到網(wǎng)絡(luò)層處理。
所以,網(wǎng)絡(luò)層主要負(fù)責(zé)將網(wǎng)絡(luò)地址翻譯成對(duì)應(yīng)的物理地址,并通過(guò)路由選擇算法為數(shù)據(jù)的傳輸選擇最適當(dāng)?shù)穆窂?/strong>。
路由選擇:路由主要包括路由表和路由算法兩個(gè)方面,網(wǎng)絡(luò)層會(huì)根據(jù)速度、距離(步跳數(shù))、價(jià)格及網(wǎng)絡(luò)擁塞程度等因素,在路由表的多條通信路徑中找一條最佳路徑。
1.3.4、傳輸層
至此,如果解決了物理層、鏈路層及網(wǎng)絡(luò)層的問(wèn)題,數(shù)據(jù)就可以做到在不同的網(wǎng)絡(luò)中進(jìn)行通信。但這對(duì)于普通用戶而言仍然不夠,因?yàn)橐慌_(tái)主機(jī)上會(huì)安裝多個(gè)應(yīng)用程序,好比:
主機(jī)A上安裝了QQ、微信、谷歌瀏覽器,當(dāng)另一臺(tái)主機(jī)向主機(jī)A發(fā)送數(shù)據(jù)時(shí),那這些數(shù)據(jù)到底應(yīng)該交給主機(jī)上的哪個(gè)進(jìn)程處理呢?
因此還需要解決:
- ①如何解決進(jìn)程之間基于網(wǎng)絡(luò)的通信問(wèn)題,如何標(biāo)識(shí)網(wǎng)絡(luò)通信相關(guān)的進(jìn)程。
- ②如果數(shù)據(jù)在傳輸過(guò)程中出現(xiàn)丟包、誤碼等傳輸錯(cuò)誤,又該如何處理。
這些問(wèn)題可以被劃歸到傳輸層加以解決。
? ?基于OSI
模型而言,上三層資源子網(wǎng)主要負(fù)責(zé)用戶數(shù)據(jù)處理,下三層通信子網(wǎng)主要負(fù)責(zé)數(shù)據(jù)通信,而傳輸層位于OSI模型中的第四層,是資源子網(wǎng)與通信子網(wǎng)之間的橋梁,因此,無(wú)論是在OSI
亦或TCP/IP
體系中,傳輸層都是至關(guān)重要的一層。
傳輸層的主要功能是:提供端到端之間的傳輸機(jī)制以及提供差錯(cuò)效驗(yàn)和流量控制,保證報(bào)文的正確傳輸。 在TCP/IP
體系中,主要提供了兩種傳輸服務(wù):
- “面向連接”的
TCP
可靠傳輸協(xié)議。 - “面向無(wú)連接”的
UDP
不可靠傳輸協(xié)議。
1.3.5、應(yīng)用層
? ?應(yīng)用層無(wú)論是在OSI
亦或TCP/IP
模型中,都是位于最高層,它是用戶、各種應(yīng)用程序和網(wǎng)絡(luò)之間的接口,其功能是直接向用戶提供服務(wù),并完成用戶在網(wǎng)絡(luò)中的各種操作,應(yīng)用層為用戶提供的服務(wù)范圍涵蓋:文件目錄服務(wù)、文件傳輸服務(wù)、遠(yuǎn)程登錄服務(wù)、電子郵箱服務(wù)、打印服務(wù)、網(wǎng)絡(luò)管理服務(wù)、安全服務(wù)、域名管理服務(wù)等,這些服務(wù)由應(yīng)用層中各種協(xié)議及應(yīng)用程序提供。
TCP/IP
體系中將資源子網(wǎng)都合并為了應(yīng)用層,但在OSI
模型中,資源子網(wǎng)是分為應(yīng)用層、表示層、會(huì)話層三個(gè)層次的,也就是拆分粒度更精細(xì)化,服務(wù)也更為精細(xì)化。
1.3.5.1、OSI-表示層
? ?主要負(fù)責(zé)應(yīng)用層的用戶數(shù)據(jù)處理,例如數(shù)據(jù)編/解碼、數(shù)據(jù)的加密解密、數(shù)據(jù)壓縮、數(shù)據(jù)格式處理等,其作用如其名,主要處理用戶信息的表示問(wèn)題。
1.3.5.2、OSI-會(huì)話層
? ?會(huì)話層位于OSI模型的第五層,是用戶應(yīng)用程序和網(wǎng)絡(luò)之間的接點(diǎn),主要負(fù)責(zé)網(wǎng)絡(luò)中的兩節(jié)點(diǎn)間建立、管理和終止通信。會(huì)話層的功能涵蓋:建立通信鏈接、保持會(huì)話過(guò)程、維持通信鏈接的暢通、同步節(jié)點(diǎn)間的對(duì)話信息、決定通信是否終止以及通信中斷時(shí)決定從何處重新發(fā)送。
簡(jiǎn)單而言,應(yīng)用層主要是為用戶與網(wǎng)絡(luò)之間,提供各類可“接觸”的窗口。
1.3.6、TCP/IP體系中數(shù)據(jù)的通信過(guò)程
與之前的OSI
模型的通信過(guò)程相同,TCP/IP
體系中,一端想往另一端傳輸數(shù)據(jù)時(shí),數(shù)據(jù)也會(huì)經(jīng)歷封裝與解封的過(guò)程,數(shù)據(jù)經(jīng)過(guò)每一層時(shí)都會(huì)加入當(dāng)前層的協(xié)議信息,從而形成本層的PDU
,繼而向下傳遞,直到最終被轉(zhuǎn)換為比特流數(shù)據(jù),通過(guò)傳輸介質(zhì)轉(zhuǎn)換為信號(hào)傳輸?shù)搅硪欢耍硪欢私邮盏街髣t會(huì)依次解封數(shù)據(jù),過(guò)程如下:
同比生活,也就是類似收發(fā)快遞的過(guò)程:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-847890.html
- 發(fā)件:[發(fā)件人]→[貨物]→[驛站]→[快遞公司站點(diǎn)]
- 傳輸介質(zhì):[運(yùn)輸路線]→[中轉(zhuǎn)站]
- 收件:[快遞公司站點(diǎn)]→[驛站]→[貨物]→[收件人]
2.3.7、計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)總結(jié)
? ?到目前為止,計(jì)算機(jī)網(wǎng)絡(luò)中一些比較重要的基礎(chǔ)概念已介紹完畢,前面的論述中,從計(jì)算機(jī)網(wǎng)絡(luò)的誕生,到法定的OSI
標(biāo)準(zhǔn)體系以及TCP/IP
體系進(jìn)行了簡(jiǎn)單分析,對(duì)于開(kāi)發(fā)者而言,這些基礎(chǔ)知識(shí)了解即可,想要深入學(xué)習(xí)的小伙伴可觀看《湖科大的計(jì)算機(jī)網(wǎng)絡(luò)視頻教學(xué)》,講的比較透徹切通俗易懂。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-847890.html
到了這里,關(guān)于【Java網(wǎng)絡(luò)編程】OSI七層網(wǎng)絡(luò)模型與TCP/IP協(xié)議簇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!