1. 初始協議
1.1?OSI 七層模型
- ?OSI(Open System Interconnection,開放系統互連)七層網絡模型稱為開放式系統互聯參考模型,是一個邏輯上的定義和規范;
- 把網絡從邏輯上分為了 7 層. 每一層都有相關、相對應的物理設備,比如路由器,交換機;
- OSI 七層模型是一種框架性的設計方法,其最主要的功能使就是幫助不同類型的主機實現數據傳輸;
- 它的最大優點是將服務、接口和協議這三個概念明確地區分開來,概念清楚,理論也比較完整。通過七個層次化的結構模型使不同的系統不同的網絡之間實現可靠的通訊;
- 但是, 它既復雜又不實用; 所以我們按照 TCP/IP 四層模型來講解。
- 其實在網絡角度,OSI 定的協議 7 層模型其實非常完善,但是在實際操作的過程中,會話層、表示層是不可能接入到操作系統中的,所以在工程實踐中,最終落地的是5層協議。
- 但是要理解上面的話,需要我們學習完網絡才可以理解,這里就知道就可以。
1.2 TCP/IP 五層(或四層)模型
????????TCP/IP 是一組協議的代名詞,它還包括許多協議,組成了 TCP/IP 協議簇。
????????TCP/IP 通訊協議采用了 5 層的層級結構,每一層都呼叫它的下一層所提供的網絡來完
成自己的需求。
- 物理層: 負責光/電信號的傳遞方式. 比如現在以太網通用的網線(雙絞 線)、早期以太網采用的的同軸電纜(現在主要用于有線電視)、光纖, 現在的 wifi 無線網使用電磁波等都屬于物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等. 集線器(Hub)工作在物理層。
- 數據鏈路層: 負責設備之間的數據幀的傳送和識別. 例如網卡設備的驅動、幀同步(就是說從網線上檢測到什么信號算作新幀的開始)、沖突檢測(如果檢測到沖突就 自動重發)、數據差錯校驗等工作. 有以太網、令牌環網, 無線 LAN 等標準. 交換機(Switch)工作在數據鏈路層。
網絡層: 負責地址管理和路由選擇. 例如在 IP 協議中, 通過 IP 地址來標識一臺主機, 并通過路由表的方式規劃出兩臺主機之間的數據傳輸的線路(路由). 路由器(Router)工作在網路層。 傳輸層: 負責兩臺主機之間的數據傳輸. 如傳輸控制協議 (TCP), 能夠確保數據可靠的從源主機發送到目標主機。 應用層: 負責應用程序間溝通,如簡單電子郵件傳輸(SMTP)、文件傳輸協(FTP)、網絡遠程訪問協議(Telnet)等. 我們的網絡編程主要就是針對應用層。?
????????物理層我們考慮的比較少,我們只考慮軟件相關的內容. 因此很多時候我們直接稱為 TCP/IP 四層模型 .
????????一般而言
- 對于一臺主機, 它的操作系統內核實現了從傳輸層到物理層的內容;
對于一臺路由器, 它實現了從網絡層到物理層;
- 對于一臺交換機, 它實現了從數據鏈路層到物理層;
對于集線器, 它只實現了物理層
????????但是并不絕對. 很多交換機也實現了網絡層的轉發 ; 很多路由器也實現了部分傳輸層的內容( 比如端口轉發 );
2. 再識協議
????????上面的內容,我們只是懂了一些基本概念,還是達不到我們的目標,下面我們再次重新理解協議和協議分層。
2.1 為什么要有 TCP/IP 協議?
????????首先,即便是單機,你的計算機內部,其實都是存在協議的,比如:其他設備和內存通信,會有內存協議。其他設備和磁盤通信,會有磁盤相關的協議,比如:SATA,IDE , SCSI 等。只不過我們感知不到罷了。而且這些協議都在本地主機各自的硬件中,通信的成本、問題比較少。
????????其次,網絡通信最大的特點就是主機之間變遠了。任何通信特征的變化,一定會帶來新的問題,有問題就得解決問題,所以需要新的協議咯。
????????所以,為什么要有 TCP/IP 協議?本質就是通信主機距離變遠了。
2.2 什么是 TCP/IP 協議?
- TCP/IP 協議的本質是一種解決方案。
- TCP/IP 協議能分層,前提是因為問題們本身能分層。
2.3 TCP/IP 協議與操作系統的關系(宏觀上,怎么實現的)
2.4 所以究竟什么是協議??
????????截止到目前,我們還沒接觸過任何協議,但是如何樸素的理解協議,我們已經可
以試試了。
????????OS 源代碼一般都是用 C/C++ 語言寫的。
下面,仔細看看下面的圖
問題:主機 B 能識別 data ,并且準確提取 a=10 , b=20 , c=30 嗎?回答:答案是肯定的!因為雙方都有同樣的結構體類型 struct protocol 。也就是說,用同樣的代碼實現協議,用同樣的自定義數據類型,天然就具有” 共識 “ ,能夠識別對方發來的數據,這不就是約定嗎?關于協議的樸素理解:所謂協議,就是通信雙方都認識的結構化的數據類型因為協議棧是分層的,所以,每層都有雙方都有協議,同層之間,互相可以認識對方的協議。
本篇文章介紹了網絡協議等相關內容,歡迎評論和交流!