在傳輸bit流的過(guò)程中,會(huì )產(chǎn)生錯傳,數據傳輸不完整的可能,因此數據鏈路層應運而生。數據鏈路層定義了如何格式化數據,來(lái)進(jìn)行傳輸。以及如何控制對物理介質(zhì)的訪(fǎng)問(wèn)。這一層通常還做錯誤檢查和糾正,以確保數據傳輸的可靠性。本層將bit數據組成了‘針’。其中交換機工作在這一層,對‘針’解碼。并根據針中包含的信息,把數據發(fā)送到正確的接收方。隨著(zhù)網(wǎng)絡(luò )節點(diǎn)的不斷增加,點(diǎn)對點(diǎn)通信的時(shí)候,是需要經(jīng)過(guò)多個(gè)節點(diǎn)的,如何找到目標節點(diǎn),如何選擇最佳路徑,便成為了首要需求,此時(shí)便有了網(wǎng)絡(luò )層。
將網(wǎng)絡(luò )地址翻譯成對應的物理地址,并決定如何將數據從發(fā)送方路由到接收方,網(wǎng)絡(luò )層通過(guò)綜合考慮發(fā)送優(yōu)先權、網(wǎng)絡(luò )擁塞程度、服務(wù)質(zhì)量以及可選擇路由的花費,來(lái)決定從一個(gè)網(wǎng)絡(luò )中節點(diǎn)A到另一個(gè)節點(diǎn)B的最佳路徑。由于網(wǎng)絡(luò )層處理并智能指導數據傳送,路由器鏈接網(wǎng)絡(luò )各段,所以路由器屬于網(wǎng)絡(luò )層。此層的數據我們稱(chēng)之為數據包,本層我們需要關(guān)注的協(xié)議主要是tcp/ip協(xié)議中的ip協(xié)議,隨著(zhù)網(wǎng)路需求的進(jìn)一步擴大,通信過(guò)程中需要發(fā)送大量的數據,如海量文件傳輸等,可能需要很長(cháng)時(shí)間,而網(wǎng)絡(luò )在通信的過(guò)程中會(huì )中斷好多次,此時(shí)為了保證傳輸大量文件的準確性,需要對發(fā)出去數據進(jìn)行切分,切分為一個(gè)一個(gè)的段落即segment進(jìn)行發(fā)送,那么其中一個(gè)段落丟失了該怎么辦,要不要重新傳輸,每個(gè)段落,要按照順序到達嗎?這個(gè)便是傳輸層考慮的問(wèn)題。解決了主機間的數據傳輸,數據間的傳輸可以是不同網(wǎng)絡(luò )的,并且傳輸層解決了傳輸質(zhì)量的問(wèn)題。該層是osi模型中最總要的一層,傳輸協(xié)議,同時(shí)進(jìn)行流量控制,或是基于接收方可接受數據快慢程度,規定適當的發(fā)送速率。除此之外,傳輸層按照網(wǎng)絡(luò )能處理的最大尺寸,將較長(cháng)的數據包,進(jìn)行強制分割。例如:以太網(wǎng)無(wú)法接受大于1500字節的數據包,發(fā)送方節點(diǎn)的傳輸層將數據分割為較小的數據片。同時(shí),對每一數據片編排一序列號,以便數據到達接收方節點(diǎn)的傳輸層時(shí),能以正確的順序重組,該過(guò)程即成為排序。傳輸層中,需要我們關(guān)注的協(xié)議有tcp/ip協(xié)議中的tcp協(xié)議中的tcp和udp協(xié)議。建立和管理應用程序之間的通信,現在我能夠保證應用程序會(huì )自動(dòng)收發(fā)包和尋址,但我要用Linux給windows發(fā)包,兩個(gè)系統語(yǔ)法不一致,就像安裝包一樣。于是需要表示層幫我們解決不同系統之間的通信語(yǔ)法的問(wèn)題,在表示層,數據將按照網(wǎng)絡(luò )能夠理解的方案進(jìn)行格式化,這種格式化也因所使用的網(wǎng)絡(luò )的類(lèi)型不同而不同。此時(shí),雖然發(fā)送方知道自己發(fā)送的是什么東西,轉換成字節數組之后有多長(cháng),但接收方肯定不知道接受的是什么,所以應用層網(wǎng)絡(luò )協(xié)議誕生了。規定發(fā)送方和接收方必須使用一個(gè)固定長(cháng)度的消息頭,消息頭必須使用某種固定的組成,而且消息頭中必須記錄消息體的長(cháng)度等一系列信息。以方便接收方能夠正確的解析發(fā)送方發(fā)送的數據。應用層旨在讓你更方便的應用從網(wǎng)絡(luò )中接受到的數據。數據的傳遞,沒(méi)有該層你也可以直接在兩臺電腦間開(kāi)干,只不過(guò),傳來(lái)傳去,就是一堆1和0,組成的字節數組,該層需要我們重點(diǎn)關(guān)注的與之相對應的tcp/ip協(xié)議中的http協(xié)議。