原本這個章節應該放在第二節的,更符合知識從總體往下看的邏輯。可是考慮到學習的過程是按部就班的,我調整了一下。上一節,咱們學習數據具體在傳輸中表現的形式。經過幀數據包裹一層層的上層數據達到傳輸的能力。今天咱們來學習經典的網絡模型分層。隨着時間的推動變遷,有些層級結構已經被歷史遺棄了。可是仍然須要知道有這麼些東西。咱們快來看吧。html
網絡模型分層結構又稱OSI模型(Open System Interconnection Reference Model)。web
我很是不想像往常你看到的文章同樣,給你貼上來七層是哪幾層。四層又是哪幾層。枯燥無味,看完過兩天又忘記。遵循知識是具備關聯性來學習。熟悉的老司機們咱們就當複習或者跳過好了。安全
從上往下七層結構分別是:服務器
應用層、表達層、會話層、傳輸層、網絡層、數據鏈路層、物理層網絡
咱們如今從底層至上來看看。每一個層都在作什麼事情。session
還記得上一節講到的數字信號麼?它就是第一層物理層。數據結構
即:比特信號,在物理介質中傳輸。物理層上不關注任何上層協議和結構,對於該層而言就是任性的隨心所欲往外輸出和接受。app
通俗來講就像現實世界中的馬路同樣,每條路均可以四通八達到樞紐,車就是比特信號。馬路歷來無論車子裏坐的是寶馬車上愛哭的她,仍是摩托車上放DJ的你。運維
對應的物理層介質:RJ-45 光釺 網卡 雙絞線 以太網 調制解調器 電力線通訊 同步光網絡 光導纖維 同軸電纜 等
學習
數據鏈路層其實就是對咱們上一節講到的數據幀進行處理,它們表示數據楨內的消息發給誰,誰須要關心這一楨數據。對幀的收發順序同步管理進行控制。因爲咱們的操做系統都是多進程多應用的,該層並不知道數據是來自哪一個應用的,更不知道內容具體是什麼,他們只負責把數據幀輸入輸出到對應的單元和把控幀數據質量。
記不清的同窗請翻到上一節包數據MAC幀。
其中數據鏈路層又被劃分紅:介質訪問控制(MAC)子層和邏輯鏈路控制
對應:ARP GPRS 以太網 WIFI PPP PPPoE 等
網絡層的工做就是把對應的數據輸送到對應目標的IP上去,和數據鏈路層相比很相似。可是數據鏈路層是針對相鄰的硬件設備的MAC地址單元的。MAC地址太過於複雜和很差記。才產生了IP層協議,也就是如今咱們說的OSI中的網絡層。能夠藉助以太網IP協議將數據發送到以太網之內的任何設備上。與之相關聯的是IP數據包報文,在上一節也有提到。
咱們多少都有配置過IP的經歷,這裏的IP配置就和網絡層有很大的關聯。正式因爲以太網的推動演變致使了這一層被抽象出來了。若是要把網絡層內容徹底講清楚有些超綱,它依託了路由器、交換機、集線器等工做原理。這裏不作硬性規定,可擴展學習。固然網絡層不只只有IP協議這一種。
對應:IP(v4·v6) ICMP(v6) IGMP IS-IS IPsec BGP RIP OSPF RARP 等
傳輸層屬於傳輸控制協議,好比TCP、UDP。它的存在是爲了數據的穩定和可靠而設計的。由於更底層的的協議對於數據包體裏自己的內容是不透明的,若是出現丟包和紊亂的狀況是沒法知道應用層的數據是否還正確的。因此就產生了傳輸層來把控。如今只要是一臺聯網的設備系統都會具備操做系統協議棧。
而協議棧就是來保障上層應用的套接字IP地址、進出端口、數據內存塊、數據包切割、響應等待、丟包重發、組裝、掛起切換等問題。能夠說他負責了各個應用層丟下來的數據在何時處理,對應遠程設備回覆的包如何輸送到當前操做系統上,再數據進行分揀到對應進程的套接字端口上。很是相似快遞中轉站的工做。
對應:TCP UDP DCCP SCTP RSVP PPTP 等
之前是用來作維護管理會話狀態的。好比咱們有多條數據,是一次性所有發過去,仍是一條條發過去。這個層如今已經廢棄不用了。緣由是應用層通常已經作了相似的事情。
上層數據可能在傳輸的過程當中,由於不一樣的操做系統或特殊的須要被轉換成了有利於傳輸、利於計算機處理、安全因素等。表示層這裏的意義能夠理解爲翻譯的工做。和會話層同樣也被廢棄了。
應用層就是做爲應用開發者真正常常要接觸的。它表明着咱們的應用本身定義的協議體結構和業務內容。像HTTP這種常見的應用層協議已經被普遍的應用在web和各類終端設備中使用了。它真正決定了一套體系的應用從一端到另外一端是如何互相識別的。關於應用層咱們在後續的自定義報文的章節裏作詳細的講解。
對應:HTTP DHCP DNS FTP IMAP4 IRC NNTP XMPP POP3 SIP SMTP SNMP SSH TELNET RPC RTCP RTP RTSP SDP SOAP 等自定義協議
前面說起到了一共七層分法,實際上只有五層了。下面我來看看這五層分別對應到完整的報文裏是什麼。
那麼其實咱們平時開發只須要關注到傳輸層和應用層。它和咱們寫的程序有真正的關聯。決定了咱們的程序是選用那種傳輸方式和數據結構。而網絡層與鏈路層通常在物聯網開發中屬於和運維部署關係較大。好比沒法正常上網了。在開發環境正常到了線上環境就不正常這種問題。若是是專門從事物聯網方向開發的話,仍是很是有必要了解它們之間的工做原理的。只是和上層的關聯性沒有那麼強。
網絡模型分層是一個很是龐大的體系,由於要對其系統的解釋就必須牽扯到各類設備的工做原理。我在寫這節的時候也是一邊翻資料看書參考才能總結出來的,有地方描述不對還請指出。
本篇文章不夠深度,有些描述可能只是我理解了,並不能使你理解透徹。更深的瞭解須要咱們一塊兒看書才行。這裏我推薦《網絡是怎麼樣鏈接》的一書給讀者參考。固然這並不會影響咱們後續的章節學習進度。