前言
“物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層”,今天我們的目標就是把這些個玩意,翻譯成“人話”,保證你一看就懂,一學就廢~
網絡七層結構,相信是個搞計算機網絡的,或者是搞軟件開發的,甚至是搞互聯網的,99%的人應該都知道,最起碼那也得是聽過,就是下方這個玩意:
(你要是聽都沒聽過,別跟我説你是混跡於互聯網界的啊~)
但是,如果讓這些人講清楚這七層結構是幹嘛的,那這個比例,估計能從99%鋭減到1%。
今天,就讓我們一起來把這七層結構,翻譯成“人話”。
本着“有問題,找百度”的原則,我打開了百度百科,然後就發現了以下這些內容
看到這些查找出來的“答案”,相信大家跟我的感覺是一樣的:“看是不可能看懂的,這輩子估計都看不懂了。。。”
想要看懂這些東西怎麼辦呢?
按照“正常”的思路,我們需要解決以下問題:這七層都跟哪些內容相關?他們怎麼關聯起來的?協議這個玩意跟計算機是怎麼結合的?操作系統是如何把IP數據包發給網卡的?
於是我們發奮圖強,瞭解到它大概跟應用程序、操作系統、路由器、交換機這些玩意相關,知道協議通過一層一層的封包或者解包來傳輸數據。再研究一下Linux網絡實現,理解操作系統與外設的通信,中間可能還要寫個驅動模塊加深印象。額,等一下,晶體管是如何起到開關作用的?好像還得學學物理。。。
其實以上説的啥,我自己都不知道,純屬一頓胡謅,哈哈哈。
但我知道的是,這個“正常”的思路,絕對是“不正常”的,相信很多人,面對陌生的知識時,都會犯這種“打破砂鍋問到底”的錯誤~
宏觀理解層面,講究的是“不求甚解”,只需要理解到以下這種程度即可。
翻譯
整個網絡當中,最基本或者是最核心的就是數據的傳輸,整個網絡的搭建,都是為數據傳輸服務的,我們類比一下快遞物流的例子,就可以初步理解這七層都是幹嘛的了:
1. 應用層
應用層的作用是為應用程序提供服務並規定應用程序中通訊相關的細節,也就是為應用提供服務。常見的協議有 HTTP,FTP,TELNET、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文檔,生成頁面。
可以看到,正是因為有了七層結構的緊密配合,我們的數據和指令才會源源不斷地被“打包”出去。同時,我們的服務器也在源源不斷地接收“快遞”,並且進行解析,以保障網絡的正常運轉。
結合網絡安全,我們進而提出一些問題:
今天已經知道了整個網絡的流程是怎樣的,都有哪些關鍵節點?
對網絡進行監控的話,都可以監控哪些關鍵指標,這些指標的意義是什麼?
指標異常以後,可以採取哪些應對措施?
指標監控是怎樣實現的?
我們來看看這四個問題,第一個其實是在研究業務流程,第二三兩項是在研究用户場景,第四項是在考慮技術實現,指標都是數據嘛,也可以説成是在研究數據邏輯。
第一個問題,在今天的文章中已經有所涉及,另外的三個問題,大家可以自己做出思考,下次我們共同討論。
以上部分內容來自網絡,如有侵權及時聯繫刪除。