網絡基礎
計算機網絡背景
- 獨立模式:計算機之間相互獨立
- 網絡互聯:多臺計算機連接在一起,完成數據共享
- 局域網LAN:計算機數量更多了,通過交換機和路由器連接在一起
- 廣域網WAN:將遠隔千里的計算機都連在一起
所謂"局域網"和"廣域網"只是一個相對的概念.比如,我們有"天朝特色"的廣域網,也可以看做一個比較大的局域網
初識協議
- "協議"是一種約定.
- 打電話約定電話鈴響的次數的約定
計算機之間的傳輸媒介是光信號和電信號.通過"頻率"和"強弱"來表示0和1這樣的信息.要想傳遞各種不同的信息,就需要約定好雙方的數據格式.
思考:只要通信的兩臺主機,約定好協議就可以了么?
定好協議,但是你用頻率表示01,我用強弱表示01,就好比我用中國話,你用葡萄牙語一樣,雖然大家可能遵守的一套通信規則,但是語言不同,即是訂好了基本的協議,也是無法正常通信的
所以,完善的協議,需要更多更細致的規定,并讓參與的人都要遵守。
- 計算機生產廠商有很多;
- 計算機操作系統,也有很多
- 計算機網絡硬件設備,還是有很多;
如何讓這些不同廠商之間生產的計算機能夠相互順暢的通信?就需要有人站出來, 約定一個共同的標準,大家都來遵守,這就是網絡協議;
協議分層
- 協議本質也是軟件,在設計上為了更好的進行模塊化,解耦合,也是被設計成為層狀結構的.
- 軟件分層的好處:分層可以實現解耦合,讓軟件維護的成本更低(分層是解耦合的有效方式)
- 小白視角來看,同層協議直接通信
- 工程師角度:同層協議,沒有直接通信,而是各自使用下層提供的結構能力實現的函數
OSI 七層模型
-
OSI(OpenSystemInterconnection,開放系統互連)七層網絡模型,稱為開放式系統互聯參考模型,是一個邏輯上的定義和規范;
-
把網絡從邏輯上分為了7層.每一層都有相關、相對應的物理設備,比如路由器,交換機;
-
OSI七層模型是一種框架性的設計方法,其最主要的功能使就是幫助不同類型的主機實現數據傳輸;
-
它的最大優點是將服務、接口和協議這三個概念明確地區分開來,概念清楚,理論也比較完整.通過七個層次化的結構模型使不同的系統不同的網絡之間實現可靠的通訊;
-
但是,它既復雜又不實用;所以我們按照TCP/IP四層模型來講解
-
其實在網絡角度,OSI定的協議7層模型其實非常完善,但是在實際操作的過程中,會話層、表示層是不可能接入到操作系統中的,所以在工程實踐中,最終落地的是5層協議。
應用層:數據處理業務
表示層:自定義協議并添加相應報頭
IO基本層
TCP/IP 五層(或四層)模型
TCP/IP是一組協議的代名詞,它還包括許多協議,組成了TCP/IP協議簇.
TCP/IP通訊協議采用了5層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求.
- 物理層:負責光/電信號的傳遞方式.
- 比如現在以太網通用的網線(雙絞線)、早期以太網采用的的同軸電纜(現在主要用于有線電視)、光纖,現在的wifi無線網使用電磁波等都屬于物理層的概念。
- 物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等.
- 集線器(Hub)工作在物理層.
- 數據鏈路層:負責設備之間的數據幀的傳送和識別.例如網卡設備的驅動、幀同步(從網線上檢測到什么信號算作新幀的開始)、沖突檢測(如果檢測到沖突就自動重發)、數據差錯校驗等工作.
- 有以太網、令牌環網,無線LAN等標準.交換機(Switch)工作在數據鏈路層.
- 網絡層:負責地址管理和路由選擇.
- 例如在IP協議中,通過IP地址來標識一臺主機,并通過路由表的方式規劃出兩臺主機之間的數據傳輸的線路(路由).
- 路由器(Router)工作在網路層.
- 傳輸層:負責兩臺主機之間的數據傳輸.如傳輸控制協議(TCP),能夠確保數據可靠的從源主機發送到目標主機.
- 應用層:負責應用程序間溝通,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等.
- 我們的網絡編程主要就是針對應用層.
物理層我們考慮的比較少,我們只考慮軟件相關的內容.因此很多時候我們直接稱為TCP/IP四層模型.
一般而言:
- 對于一臺主機,它的操作系統內核實現了從傳輸層到物理層的內容;
- 對于一臺路由器,它實現了從網絡層到物理層;
- 對于一臺交換機,它實現了從數據鏈路層到物理層;
- 對于集線器,它只實現了物理層;
但是并不絕對.很多交換機也實現了網絡層的轉發;很多路由器也實現了部分傳輸層的內容(比如端口轉發)
協議詳解
為什么要有TCP/IP協議?
首先,即便是單機,你的計算機內部,其實都是存在協議的,
比如:其他設備和內存通信,會有內存協議。其他設備和磁盤通信,會有磁盤相關的協議,比如:SATA,IDE,SCSI等。只不過我們感知不到罷了。
而且這些協議都在本地主機各自的硬件中,通信的成本、問題比較少。
其次,網絡通信最大的特點就是主機之間變遠了。任何通信特征的變化,一定會帶來新的問題,有問題就得解決問題,所以需要新的協議。
什么是TCP/IP協議?
TCP/IP
協議的本質是一種解決方案TCP/IP
協議能分層,前提是因為問題們本身能分層。
- 傳輸層最著名的協議為TCP協議
- 網絡層最著名的協議為IP協議
所以究竟什么是協議?
問題:主機B能識別data,并且準確提取a=10,b=20,c=30嗎?
回答:答案是肯定的!因為雙方都有同樣的結構體類型structprotocol。也就是說,用同樣的代碼實現協議,用同樣的自定義數據類型,天然就具有”共識“,能夠識別對方發來的數據,這不就是約定嗎?
關于協議的樸素理解:所謂協議,就是通信雙方都認識的結構化的數據類型
因為協議棧是分層的,所以,每層都有雙方都有協議,同層之間,互相可以認識對方的協議。