前言
“物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層”,今天我們的目標就是把這些個玩意,翻譯成“人話”,保證你一看就懂,一學就廢~
網絡七層結構,相信是個搞計算機網絡的,或者是搞軟件開發的,甚至是搞互聯網的,99%的人應該都知道,最起碼那也得是聽過,就是下方這個玩意:
(你要是聽都沒聽過,別跟我說你是混跡于互聯網界的啊~)
但是,如果讓這些人講清楚這七層結構是干嘛的,那這個比例,估計能從99%銳減到1%。
今天,就讓我們一起來把這七層結構,翻譯成“人話”。
本著“有問題,找百度”的原則,我打開了百度百科,然后就發現了以下這些內容
看到這些查找出來的“答案”,相信大家跟我的感覺是一樣的:“看是不可能看懂的,這輩子估計都看不懂了。。。”
想要看懂這些東西怎么辦呢?
按照“正常”的思路,我們需要解決以下問題:這七層都跟哪些內容相關?他們怎么關聯起來的?協議這個玩意跟計算機是怎么結合的?操作系統是如何把IP數據包發給網卡的?
于是我們發奮圖強,了解到它大概跟應用程序、操作系統、路由器、交換機這些玩意相關,知道協議通過一層一層的封包或者解包來傳輸數據。再研究一下linux網絡實現,理解操作系統與外設的通信,中間可能還要寫個驅動模塊加深印象。額,等一下,晶體管是如何起到開關作用的?好像還得學學物理。。。
其實以上說的啥,我自己都不知道,純屬一頓胡謅,哈哈哈。
但我知道的是,這個“正常”的思路,絕對是“不正常”的,相信很多人,面對陌生的知識時,都會犯這種“打破砂鍋問到底”的錯誤~
宏觀理解層面,講究的是“不求甚解”,只需要理解到以下這種程度即可。
翻譯
整個網絡當中,最基本或者是最核心的就是數據的傳輸,整個網絡的搭建,都是為數據傳輸服務的,我們類比一下快遞物流的例子,就可以初步理解這七層都是干嘛的了:
1. 應用層
應用層的作用是為應用程序提供服務并規定應用程序中通訊相關的細節,也就是為應用提供服務。常見的協議有 HTTP,FTP,TE.NET、SMTP 等。
翻譯成“人話”:
相當于收件員。當客戶(應用)打電話(發起請求)給收件員(應用層)時,收件員可以根據客戶的不同需求提供不同的服務(不同協議),比如隔天送達、指定時間送達等等。
2. 表示層
表示層的作用是將應用處理的信息轉換為適合網絡傳輸的格式,或者將來自下一層的數據轉換為上層能處理的格式。它主要負責數據格式的轉換。具體來說,就是將設備固有的數據格式轉換為網絡標準格式。常見的協議有 ASCII、SSL/TLS 等。
翻譯成“人話”:
相當于打包員。如果快遞(數據)太臃腫,他會在不破壞快遞的情況下壓扁(壓縮)它。如果客戶注重安全線,全能的快遞公司還能用密碼箱( SSL/TLS)打包快遞再快送。當然,打包員會確定,目的地快遞站的拆包員,能無損地拆開包裹,將快遞交給用戶。
3.會話層
會話層作用是負責建立和斷開通信連接,以及數據分割等數據傳輸相關的管理。常見的協議有 ADSP、RPC 等。
翻譯成“人話”:
相當于調度員。對快遞運輸進行調度指揮。例如這次客戶要發100噸沙土(數據),到底是空運、陸運還是海運。而運完之后,相關信息(連接)也可以被銷毀了,這些都是他的職責。
4.傳輸層
傳輸層起著可靠傳輸的作用。只在通信雙方節點進行處理,而不需在路由器上處理。此層有兩個具有代表性的協議:TCP 與 UDP。
翻譯成“人話”:
相當于跟單員。負責任的跟單員(使用 TCP 協議)會保證快遞送到客戶手上,如果送不到就讓公司再發一次。不負責任的跟單員(使用 UDP 協議)只管將快遞送到客戶指定的地方,不管快遞是否送到客戶手上。
5. 網絡層
網絡層負責將數據傳輸到目標地址。目標地址可以是多個網絡通過路由器連接而成的某一個地址。因此這一層主要負責尋址和路由選擇。主要由 IP、ICMP 兩個協議組成。
翻譯成“人話”:
相當于路線規劃員。快遞公司有很多集散中心(路由器),根據集散中心的情況(是否擁堵),找出一條最合適的路徑將貨物(數據)沿路運過去。
6. 數據鏈路層
該層負責物理層面上互連的節點之間的通信傳輸。例如與1個以太網相連的兩個節點間的通訊。常見的協議有 HDLC、PPP、SLIP 等。
翻譯成“人話”:
相當于駕駛員。他們駕駛著汽車,將打包好的快遞(數據幀)從一個城市(物理節點)運輸到另一個城市。
7. 物理層
物理層負責0、1比特流(0、1序列)與電壓高低、光的閃滅之間的互換。典型的協議有 RS 232C、RS 449/422/423、V.24 和 X.21、X.21bis 等。
翻譯成“人話”:
相當于交通工具。例如公路、汽車和飛機等,承載貨物(數據)的交通運輸。
如果以上一堆文字都懶得看的話,那直接看下面這個圖也行,這可是我耗費了大半天時間消化理解的,拿著這張圖,你就可以給別人去講,網絡七層結構是干嘛的啦~
1至4層被認為是低層,這些層與數據移動密切相關。5至7層是高層,包含應用程序級的數據。每一層負責一項具體的工作,然后把數據傳送到下一層。
從上往下,每經過一層,協議就會在這個包裹上面做點手腳,加點東西,傳送到接收端,再層層解套出來,如下示意圖:
知道了這些,我們就可以來看一下“快遞”的行進過程。
假如你是一個網絡上的操作系統。1層和2層的網卡會接收請求并通知你什么時候有包裹到達,驅動程序處理2層幀的出口,得到一個發亮和閃光的3層數據包。作為操作系統,你將調用一些常用的應用程序處理3層數據。
如果你決定保留這個數據包,你將打開它,并且取出4層數據包。如果它是TCP協議,這個TCP子系統將被調用并打開這個數據包,然后把這個7層數據發送給在目標端口等待的應用程序,整個過程就結束了。
在實際過程中,七層結構執行了哪些操作呢?
要回答這個問題,我們可以思考一下:用戶輸入一個網址,計算機執行了什么操作?
1.所有的數據通信經過封裝打包后,經由物理線路傳送。
2.所有的主機名都需要解析為IP地址。
3.應用層使用HTTP協議,利用傳輸層面面向連接的TCP協議。
4.WEB應用采用客戶機/服務器的工作模式。
5.數據包通過路由器,根據路由表進行轉發。
6.在每個網絡內部,都要把IP地址轉換成mac地址。
7.服務器上的WEB服務進程在監聽TCP的80端口。
8.服務器按照請求,生成html文檔發送到客戶端。
9.客戶端瀏覽器解釋HTML文檔,生成頁面。
可以看到,正是因為有了七層結構的緊密配合,我們的數據和指令才會源源不斷地被“打包”出去。同時,我們的服務器也在源源不斷地接收“快遞”,并且進行解析,以保障網絡的正常運轉。
結合網絡安全,我們進而提出一些問題:
今天已經知道了整個網絡的流程是怎樣的,都有哪些關鍵節點?
對網絡進行監控的話,都可以監控哪些關鍵指標,這些指標的意義是什么?
指標異常以后,可以采取哪些應對措施?
指標監控是怎樣實現的?
我們來看看這四個問題,第一個其實是在研究業務流程,第二三兩項是在研究用戶場景,第四項是在考慮技術實現,指標都是數據嘛,也可以說成是在研究數據邏輯。
第一個問題,在今天的文章中已經有所涉及,另外的三個問題,大家可以自己做出思考,下次我們共同討論。
(本文部分內容源自網絡,版權歸原作者所有。如有侵權,請聯系作者刪除。)