OSI模型、TCP/IP模型各層的機構(gòu)與功能,都有哪些協(xié)議

image.png

TCP/IP模型中沒有表示層和會話層,在TCP/IP模型中,通常認為應(yīng)用層是OSI模型的最高三層(應(yīng)用層、表示層和會話層)的合并

OSI:Open System Interconnection 開放系統(tǒng)互聯(lián)

TCP/IP:Transmission Control Protocol/Internet Protocol 傳輸控制協(xié)議/網(wǎng)際協(xié)議

TCP/IP模型各層的結(jié)構(gòu)、功能和協(xié)議

1 網(wǎng)絡(luò)接口層

網(wǎng)絡(luò)接口層即數(shù)據(jù)鏈路層。

TCP/IP沒有為數(shù)據(jù)鏈路層定義任何特定的協(xié)議。

計算機之間傳輸?shù)氖?和1的電信號數(shù)據(jù),但是單純的0和1沒有任何意義,所以必須規(guī)定解讀方式:多少個電信號算一組,每個信號位有何意義。

以太網(wǎng)規(guī)定,一組電信號構(gòu)成一個數(shù)據(jù)包(以太網(wǎng)數(shù)據(jù)包),叫做“幀”,每一幀分成兩個部分:標(biāo)頭(Head)和數(shù)據(jù)(Data)?!皹?biāo)頭”包含數(shù)據(jù)包的一些說明項,比如發(fā)送者、接收者、數(shù)據(jù)類型等等;“數(shù)據(jù)”則是數(shù)據(jù)包的具體內(nèi)容。

數(shù)據(jù)鏈路層的作用就是確定0和1的分組方式,將0和1劃分為數(shù)據(jù)幀,并從一個節(jié)點傳輸?shù)脚R近的另一個節(jié)點,這些節(jié)點是通過MAC地址來唯一標(biāo)識的。

MAC地址:以太網(wǎng)規(guī)定,連入網(wǎng)絡(luò)的所有設(shè)備,都必須具有“網(wǎng)卡”接口。數(shù)據(jù)包必須是從一塊網(wǎng)卡傳送到另一塊網(wǎng)卡。網(wǎng)卡的地址,就是數(shù)據(jù)包的發(fā)送地址和接收地址,這叫做MAC地址。

image.png

每塊網(wǎng)卡出廠的時候,都有一個全世界獨一無二的MAC地址,長度是48個二進制位,通常用12個十六進制數(shù)來表示,比如:00-B0-D0-86-BB-F7

廣播:一塊網(wǎng)卡怎么會知道另一塊網(wǎng)卡的MAC地址呢。這是因為有一種ARP協(xié)議(后面會介紹)。以太網(wǎng)采用了一種很原始的方式,它不是把數(shù)據(jù)包準(zhǔn)確的送到接收方,而是向本網(wǎng)絡(luò)內(nèi)所有計算機發(fā)送,讓每臺計算機自己判斷,是否為接收方。接收方讀取數(shù)據(jù)包的標(biāo)頭,找到接收方的MAC地址,然后與自身MAC地址對比,如果兩者相同,則接收這個這個包并做進一步處理,否則丟棄這個包。這種發(fā)送方式就叫做“廣播”。

總結(jié):在數(shù)據(jù)鏈路層中我們通過MAC地址來識別不同的節(jié)點(節(jié)點是通過MAC地址來唯一標(biāo)識的)

2 網(wǎng)絡(luò)層

理論上,僅依靠MAC地址,上海的網(wǎng)卡就可以找到洛杉磯的網(wǎng)卡,這在技術(shù)上是可以實現(xiàn)的。但是,這樣做有一個重大的缺點。以太網(wǎng)采用廣播方式發(fā)送數(shù)據(jù)包,所有成員人都會受到這個數(shù)據(jù)包,不僅效率低,而且局限在發(fā)送者所在的子網(wǎng)絡(luò)。也就是說,如果兩臺計算機不在同一個子網(wǎng)絡(luò),廣播是傳不進去的。這種設(shè)計也是合理的,否則互聯(lián)網(wǎng)上每一臺計算機都會收到所有包,那會引起災(zāi)難。

因此,必須找到一種方法,能夠區(qū)分哪些MAC地址屬于同一個子網(wǎng)絡(luò),哪些不是。如果是同一個子網(wǎng)絡(luò),就采用廣播方式發(fā)送,否則采用“路由”方式發(fā)送(路由的意思,就是指如何向不同的子網(wǎng)絡(luò)分發(fā)數(shù)據(jù)包)。遺憾的是,MAC地址本身無法做到這一點。它只與廠商有關(guān),與所處網(wǎng)絡(luò)無關(guān)。

這就導(dǎo)致了網(wǎng)絡(luò)層的誕生。它的作用是引進一套新的地址,使得我們能夠區(qū)分不同的計算機是否屬于同一個子網(wǎng)絡(luò)。這套地址就叫做“網(wǎng)絡(luò)地址”,簡稱“網(wǎng)址”。

于是,“網(wǎng)絡(luò)層”出現(xiàn)后,每臺計算機有了兩種地址:MAC地址和網(wǎng)絡(luò)地址。兩種地址之間沒有任何聯(lián)系,MAC地址是綁定在網(wǎng)卡上的,網(wǎng)絡(luò)地址則是管理員分配的,他們只是隨機組合在一起。

網(wǎng)絡(luò)地址幫助我們確定計算機所在的子網(wǎng)絡(luò),MAC地址則將數(shù)據(jù)包送到該子網(wǎng)絡(luò)中的目標(biāo)網(wǎng)卡。因此,從邏輯上判斷,必定是先處理網(wǎng)絡(luò)地址,然后再處理MAC地址。

規(guī)定網(wǎng)絡(luò)地址的協(xié)議叫做IP協(xié)議。它所定義的地址叫做IP地址

目前廣泛采用的是IP協(xié)議第四版,簡稱IPv4。這個版本規(guī)定,網(wǎng)絡(luò)地址有32個二進制位組成。習(xí)慣上,我們用分成四段的十進制數(shù)表示IP地址,從0.0.0.0~255.255.255.255

互聯(lián)網(wǎng)上的每一臺計算機,都會分配到一個IP地址。這個地址分成兩個部分,前一部分代表網(wǎng)絡(luò),后一部分代表主機,如果兩臺計算機的前一部分如果相同,則表示它們處于同一個子網(wǎng)絡(luò)。(后面會介紹IP地址的分類)。

2.1 IP協(xié)議

IP協(xié)議的主要作用有兩個,一是為每臺計算機分配IP地址;另一個是確定哪些地址在同一個子網(wǎng)絡(luò)。

IP數(shù)據(jù)包:根據(jù)IP協(xié)議發(fā)送的數(shù)據(jù),就叫做IP數(shù)據(jù)包。IP數(shù)據(jù)包也包含“標(biāo)頭”和“數(shù)據(jù)”兩部分,“標(biāo)頭”部分主要包括版本、長度、IP地址等信息;“數(shù)據(jù)部分”則是IP數(shù)據(jù)包的具體內(nèi)容。

2.2 ARP協(xié)議

ARP協(xié)議是根據(jù)IP地址獲取MAC地址的協(xié)議。

ARP:Address Resolution Protocol 地址解析協(xié)議

因為IP數(shù)據(jù)是放在以太網(wǎng)數(shù)據(jù)包里發(fā)送的,所以我們必須同時知道兩個地址,一個是對方的MAC地址,另一個是對方的IP地址。通常情況下,對方的IP地址是已知的,但是對方的MAC地址是未知的。

所以我們需要一種機制,能夠從IP地址得到MAC地址。

這里又可以分為兩種情況:

  1. 如果兩臺主機不在同一個子網(wǎng)絡(luò),那么事實上沒有辦法得到對方的MAC地址,只能把數(shù)據(jù)包傳送到兩個子網(wǎng)絡(luò)連接處的“網(wǎng)關(guān)”,讓網(wǎng)關(guān)去處理。

  2. 如果兩臺主機在同一個子網(wǎng)絡(luò),那么可以用ARP協(xié)議得到對方的MAC地址。使用ARP協(xié)議時,會首先檢查ARP高速緩存(IP-MAC地址對應(yīng)表緩存),如果查詢的IP-MAC對不存在,那么就發(fā)送一個ARP協(xié)議廣播包。ARP協(xié)議也是發(fā)出一個數(shù)據(jù)包(包含在以太網(wǎng)數(shù)據(jù)包中),其中包含它所要查詢主機的IP地址,而在對方的MAC地址一欄,填的是FF:FF:FF:FF:FF:FF,表示這是一個廣播地址。它所在的子網(wǎng)絡(luò)的每一臺主機,都會收到這個數(shù)據(jù)包,從中取出IP地址,與自身IP地址進行比較。如果兩者相同,就做出回復(fù),向發(fā)送方報告自己的MAC地址,否則丟棄這個包。發(fā)送方收到MAC地址后會更新ARP緩存。

2.3 ICMP協(xié)議

ICMP:Internet Control Message Protocol Internet控制報文協(xié)議

IP協(xié)議并不是一個可靠的協(xié)議,它不能保證數(shù)據(jù)被送達。當(dāng)傳送IP數(shù)據(jù)包發(fā)生錯誤,比如主機不可達、路由器不可達等等。ICMP協(xié)議會把錯誤信息封包,然后傳回給發(fā)送方,通過這些信息,發(fā)送方可以對所發(fā)生的問題作出診斷,然后采取適當(dāng)?shù)拇胧┙鉀Q。它與傳輸協(xié)議最大的不同:它一般不用于在兩點間傳輸數(shù)據(jù),而常常用于返回的錯誤信息或是分析路由。

總結(jié):網(wǎng)絡(luò)層的功能是建立“主機到主機的通信

3 傳輸層

有了MAC地址和IP地址,我們已經(jīng)可以在互聯(lián)網(wǎng)上任意兩臺主機之間進行通信。接下來的問題是,同一臺主機上有許多程序都需要用到網(wǎng)絡(luò),比如你一邊瀏覽網(wǎng)頁,一邊與朋友在線聊天。當(dāng)一個數(shù)據(jù)包從互聯(lián)網(wǎng)上發(fā)來的時候,該如何區(qū)分是網(wǎng)頁內(nèi)容還是在線聊天內(nèi)容?

也就是說,我們還需要一個參數(shù),表示這個包到底供哪個程序使用。這個參數(shù)就叫做“端口”,它其實是每一個使用網(wǎng)卡程序的編號。每個數(shù)據(jù)包都發(fā)送到主機的特定端口,所以不同的程序就能取到自己所需要的數(shù)據(jù)。

端口:065535之間的一個整數(shù),正好16個二進制位。其中01023端口被系統(tǒng)占用。

傳輸層的作用是建立“端口到端口”的通信。

3.1 UDP協(xié)議

UDP:User Datagram Protocol 用戶數(shù)據(jù)報協(xié)議

要在數(shù)據(jù)包中加入端口信息,就需要新的協(xié)議。最簡單的實現(xiàn)叫做UDP協(xié)議,它的格式幾乎就是在數(shù)據(jù)報前面加上端口號。

UDP數(shù)據(jù)包,也是由“標(biāo)頭”和“數(shù)據(jù)”兩部分組成。

“標(biāo)頭”部分主要定義了發(fā)送端口和接收端口,“數(shù)據(jù)”部分就是具體的內(nèi)容。

3.2 TCP協(xié)議

TCP:Transmission Control Protocol 傳輸控制協(xié)議

UDP協(xié)議的優(yōu)點是簡單、容易實現(xiàn),缺點是可靠性差,一旦數(shù)據(jù)包發(fā)出,無法知道對方是否已收到。

為了提高網(wǎng)絡(luò)可靠性,TCP協(xié)議就誕生了。TCP協(xié)議非常復(fù)雜,但可以近似的認為,它就是有確認機制的UDP協(xié)議,每發(fā)出一個數(shù)據(jù)包都要求確認。如果有一個數(shù)據(jù)包丟失,就收不到確認,發(fā)送方就知道有必要重發(fā)這個數(shù)據(jù)包。

TCP協(xié)議能夠確保數(shù)據(jù)不被丟失,缺點是過程復(fù)雜、實現(xiàn)困難、消耗較多資源。

4 應(yīng)用層

TCP協(xié)議可以為各式各樣的程序傳遞數(shù)據(jù),比如Email、www、FTP等等。那么必須有不同的協(xié)議規(guī)定電子郵件、網(wǎng)頁、FTP數(shù)據(jù)的格式,這些應(yīng)用程序協(xié)議就構(gòu)成了應(yīng)用層。

應(yīng)用層是最高層,直接面對用戶。

應(yīng)用層的協(xié)議有:SMTP(電子郵件)、HTTP(萬維網(wǎng))、TELNET(遠程終端連接)、FTP(文件傳輸)、DNS(域名轉(zhuǎn)換)等等。

以上內(nèi)容參考自:

阮一峰的博客:《互聯(lián)網(wǎng)協(xié)議入門》http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
https://github.com/LRH1993/android_interview/blob/master/computer-networks/tcpip.md

《TCP/IP協(xié)議族》第四版

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 個人認為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,185評論 0 8
  • LT-0807,2018.03.11翻譯,@成都 聲明 本文是一篇關(guān)于TCP/IP協(xié)議組件的RFC,聚焦于一個IP...
    摩訶婆羅多閱讀 4,308評論 1 5
  • # 圖解TCP/IP 標(biāo)簽(空格分隔): 2018招聘 --- ##第1章 網(wǎng)絡(luò)基礎(chǔ)知識 ### ### 1.1 ...
    Kai_a3da閱讀 1,558評論 0 2
  • TCP/IP 協(xié)議族 Transmission Control Protocol/Internet Protoco...
    槑小姐_1419閱讀 1,084評論 0 1
  • 1、TCP為什么需要3次握手,4次斷開? “三次握手”的目的是“為了防止已失效的連接請求報文段突然又傳送到了服務(wù)端...
    杰倫哎呦哎呦閱讀 3,640評論 0 6

友情鏈接更多精彩內(nèi)容