Android與物聯網裝置通訊-網路模型分層

香脆的大雞排發表於2018-06-06

本來這個章節應該放在第二節的,更符合知識從整體往下看的邏輯。但是考慮到學習的過程是循序漸進的,我調整了一下。上一節,我們學習資料具體在傳輸中表現的形式。通過幀資料包裹一層層的上層資料達到傳輸的能力。今天我們來學習經典的網路模型分層。隨著時間的推進變遷,有些層級結構已經被歷史遺棄了。但是仍然需要知道有這麼些東西。我們快來看吧。

章節

目錄

  • OSI模型結構
  • 你該把焦點放在哪裡

OSI模型結構

網路模型分層結構又稱OSI模型(Open System Interconnection Reference Model)。

我非常不想像往常你看到的文章一樣,給你貼上來七層是哪幾層。四層又是哪幾層。枯燥無味,看完過兩天又忘記。遵循知識是具有關聯性來學習。熟悉的老司機們我們就當複習或者跳過好了。

從上往下七層結構分別是:

應用層、表達層、會話層、傳輸層、網路層、資料鏈路層、物理層

我們現在從底層至上來看看。每個層都在做什麼事情。

物理層(Physical Layer)

image.png

還記得上一節講到的數字訊號麼?它就是第一層物理層

即:位元訊號,在物理介質中傳輸。物理層上不關注任何上層協議和結構,對於該層而言就是任性的為所欲為往外輸出和接受。

image.png

通俗來說就像現實世界中的馬路一樣,每條路都可以四通八達到樞紐,車就是位元訊號。馬路從來不管車子裡坐的是寶馬車上愛哭的她,還是摩托車上放DJ的你。

對應的物理層介質:RJ-45 光釺 網路卡 雙絞線 乙太網 調變解調器 電力線通訊 同步光網路 光導纖維 同軸電纜 等

資料鏈路層(Data Link Layer)

image.png

資料鏈路層其實就是對我們上一節講到的資料幀進行處理,它們表示資料楨內的訊息發給誰,誰需要關心這一楨資料。對幀的收發順序同步管理進行控制。由於我們的作業系統都是多程式多應用的,該層並不知道資料是來自哪個應用的,更不知道內容具體是什麼,他們只負責把資料幀輸入輸出到對應的單元和把控幀資料質量。

記不清的同學請翻到上一節包資料MAC幀

其中資料鏈路層又被劃分成:介質訪問控制(MAC)子層邏輯鏈路控制

對應:ARP GPRS 乙太網 WIFI PPP PPPoE 等

網路層(Network Layer)

image.png

網路層的工作就是把對應的資料輸送到對應目標的IP上去,和資料鏈路層相比很類似。但是資料鏈路層是針對相鄰的硬體裝置的MAC地址單元的。MAC地址太過於複雜和不好記。才產生了IP層協議,也就是現在我們說的OSI中的網路層。可以藉助乙太網IP協議將資料傳送到乙太網以內的任何裝置上。與之相關聯的是IP資料包報文,在上一節也有提到。

我們多少都有配置過IP的經歷,這裡的IP配置就和網路層有很大的關聯。正式由於乙太網的推進演變導致了這一層被抽象出來了。如果要把網路層內容完全講清楚有些超綱,它依託了路由器、交換機、集線器等工作原理。這裡不做硬性規定,可擴充套件學習。當然網路層不僅只有IP協議這一種。

對應:IP(v4·v6) ICMP(v6) IGMP IS-IS IPsec BGP RIP OSPF RARP 等

傳輸層(Transport Layer)

image.png

傳輸層屬於傳輸控制協議,比如TCP、UDP。它的存在是為了資料的穩定和可靠而設計的。因為更底層的的協議對於資料包體裡本身的內容是不透明的,如果出現丟包和紊亂的情況是無法知道應用層的資料是否還正確的。所以就產生了傳輸層來把控。現在只要是一臺聯網的裝置系統都會具有作業系統協議棧。

而協議棧就是來保障上層應用的套接字IP地址、進出埠、資料記憶體塊、資料包切割、響應等待、丟包重發、組裝、掛起切換等問題。可以說他負責了各個應用層丟下來的資料在什麼時候處理,對應遠端裝置回覆的包如何輸送到當前作業系統上,再資料進行分揀到對應程式的套接字埠上。非常類似快遞中轉站的工作。

對應:TCP UDP DCCP SCTP RSVP PPTP 等

會話層(session layer)已廢用

以前是用來做維護管理會話狀態的。比如我們有多條資料,是一次性全部發過去,還是一條條發過去。這個層現在已經廢棄不用了。原因是應用層一般已經做了類似的事情。

表示層(presentation layer)已廢用

上層資料可能在傳輸的過程中,因為不同的作業系統或特殊的需要被轉換成了有利於傳輸、利於計算機處理、安全因素等。表示層這裡的意義可以理解為翻譯的工作。和會話層一樣也被廢棄了。

應用層(application layer)

應用層就是作為應用開發者真正經常要接觸的。它代表著我們的應用自己定義的協議體結構和業務內容。像HTTP這種常見的應用層協議已經被廣泛的應用在web和各種終端裝置中使用了。它真正決定了一套體系的應用從一端到另一端是如何互相識別的。關於應用層我們在後續的自定義報文的章節裡做詳細的講解。

對應:HTTP DHCP DNS FTP IMAP4 IRC NNTP XMPP POP3 SIP SMTP SNMP SSH TELNET RPC RTCP RTP RTSP SDP SOAP 等自定義協議

你該把焦點放在哪裡

前面提及到了一共七層分法,實際上只有五層了。下面我來看看這五層分別對應到完整的報文裡是什麼。

image.png

那麼其實我們平時開發只需要關注到傳輸層和應用層。它和我們寫的程式有真正的關聯。決定了我們的程式是選用那種傳輸方式和資料結構。而網路層與鏈路層一般在物聯網開發中屬於和運維部署關係較大。比如無法正常上網了。在開發環境正常到了線上環境就不正常這種問題。如果是專門從事物聯網方向開發的話,還是非常有必要了解它們之間的工作原理的。只是和上層的關聯性沒有那麼強。


網路模型分層是一個非常龐大的體系,因為要對其系統的解釋就必須牽扯到各種裝置的工作原理。我在寫這節的時候也是一邊翻資料看書參考才能總結出來的,有地方描述不對還請指出。

image.png

本篇文章不夠深度,有些描述可能只是我理解了,並不能使你理解透徹。更深的瞭解需要我們一起看書才行。這裡我推薦《網路是怎麼樣連線》的一書給讀者參考。當然這並不會影響我們後續的章節學習進度。

相關文章