一、計算機網絡的發展歷史
計算機是人的工具,人要協同工作,注定了網絡的產生是必然的。
二、協議
計算機之間的傳輸媒介是光信號和電信號,通過 "頻率" 和 "強弱" 來表示 0 和 1 這樣的信息,要想傳遞各種不同的信息就需要約定好雙方的數據格式。
那么只要通信的兩臺主機約定好協議就可以了嗎??定好協議,但是你用頻率表示 01,我用強弱表示 01,就好比我用中國話,你用葡萄牙語一樣,雖然大家可能遵守的一套通信規則,但是語言不同,即是訂好了基本的協議,也是無法正常通信的。
所以,完善的協議,需要更多更細致的規定,并讓參與的人(計算機生產廠商;計算機操作系統;計算機網絡硬件設備)都要遵守。
如何讓這些不同廠商之間生產的計算機能夠相互順暢的通信? 就需要有人站出來,約定一個共同的標準讓大家都來遵守,這就是 網絡協議。
2.1? 對協議的宏觀認識
2.1.1?協議分層
在上面這個例子中我們可以看到分成了兩層:語言層和設備通信層。
我們從今后看待協議要有兩種視角:
視角1(小白視角):同層協議是直接通信
視角2(工程視角):同層協議不是直接通信
2.1.2 OSI七層模型
OSI七層網絡模型稱為開放式系統互聯參考模型,它是一個邏輯上的定義和規范。把網絡從邏輯上分為了7 層,每一層都有相關、相對應的物理設備,比如:路由器,交換機。OSI 七層模型是一種框架性的設計方法,其最主要的功能使就是幫助不同類型的主機實現數據傳輸,它的最大優點是將服務、接口和協議這三個概念明確地區分開來,概念清楚, 理論也比較完整。通過七個層次化的結構模型使不同的系統不同的網絡之間實現可靠的通訊,但是它既復雜又不實用。
其實在網絡角度,OSI 定的協議 7 層模型其實非常完善,但是在實際操作的過程中,會話層、表示層是不可能接入到操作系統中的,所以在工程實踐中最終落地的是 5 層協議。?
2.1.3 TCP/IP五層模型
TCP/IP 是一組協議的代名詞,它包括許多協議共同組成了 TCP/IP 協議簇。TCP/IP通訊協議采用了5 層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。
2.2 對TCP/IP協議簇的認識
2.2.1 為什么要有TCP/IP協議?
? 首先,即便是單機,你的計算機內部其實都是存在協議的,比如:其他設備和內存通信會有內存協議。其他設備和磁盤通信會有磁盤相關的協議,比如: SATA,IDE,SCSI 等。只不過我們感知不到罷了。而且這些協議都在本地主機各自的硬件中,通信的成本、問題比較少。
? 其次,網絡通信最大的特點就是主機之間變遠了。任何通信特征的變化,一定會帶來新的問題,有問題就得解決問題,所以需要新的協議。
所以,為什么要有 TCP/IP 協議?本質就是通信主機距離變遠了,會產生各種的問題,而這些問題的解決方案就是TCP/IP協議。
2.2.2 為什么TCP/IP協議會分層?
從上圖中提出的4個問題可以看出:問題1對應的是鏈路傳輸層,問題2對應的是網絡層,問題3對應的是傳輸層,問題4對應的是應用層。所以TCP/IP協議能分層的前提是這些問題本身是能分層的。
2.3 對協議的深層次理解
2.3.1 網絡與操作系統的關系
網卡是硬件的一部分,操作系統要對它進行管理,所以相應的操作系統要實現網絡的相關功能。可以理解為網絡是操作系統內部的一個模塊,但是這個模塊在所有的操作系統上是相同的。
2.3.2 協議到底是什么?
由2.3.1可知,操作系統內部可能存在著大量的協議,操作系統自然要對這些協議通過先描述后組織進行管理,故而協議就是兩個操作系統直接為了通信而約定出來的結構體。操作系統是C語言寫的,所以TCP/IP網絡協議也是用C語言寫的。
三、網絡傳輸的基本流程
3.1 局域網(以以太網為例)網絡的傳輸流程
3.1.1 局域網通信原理
首先要明確一點:兩臺主機在同一個局域網,是能夠直接通信的。?(原理類似上課)
以太網中,任何時刻都只允許一臺機器向網絡中發送數據,如果有多臺同時發送的話,會發生數據干擾,我們稱之為數據碰撞。所有發送數據的主機要進行碰撞檢測和碰撞避免。在沒有交換機的情況下,一個以太網就是一個碰撞域。局域網通信的過程中,主機對收到的報文確認是否是發給自己的,是通過目標MAC地址判定。
3.1.2 認識MAC地址
MAC 地址用來識別數據鏈路層中相連的節點,長度為 48 位(6 個字節),一般用 16 進制數字加上冒號的形式來表示(例如: 08:00:27:03:fb:19)。它在網卡出廠時就確定了,是不能修改的。MAC地址通常是唯一的(虛擬機中的MAC地址不是真實的MAC地址,可能會沖突;也有些網卡支持用戶配置MAC地址)。
查看MAC地址:
Linux? ? ? ?下使用 ifconfig
Windows 下使用 ipconfig /all
3.1.3 局域網網絡傳輸流程圖
而其中每層都有協議,所以當我進行進行上述傳輸流程的時候,要進行封裝和解包與分用。
明確一下概念:
1. 報文
? 報頭就是對應協議層的結構體字段。除了報頭,剩下的叫做有效載荷
??報文 = 報頭 + 有效載荷
2. 封裝和分用
3.2 跨網絡傳輸流程
跨網段的主機的數據傳輸過程中,數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器。
3.2.1 認識IP地址
IP 協議有兩個版本:IPv4 和 IPv6。
IP地址是在IP協議中用來標識網絡中不同主機的地址。對于 IPv4 來說,IP 地址是一個 4 字節32 位的整數;我們通常也使用 "點分十進制" 的字符串表示 IP 地址,例如 192.168.0.1 ;用點分割的每一個數字表示一個字節,范圍是 0 - 255。
MAC地址 VS IP地址
MAC地址是局域網中的唯一標識符,而IP地址是網絡邏輯層的通信標識。在數據傳輸過程中,是根據目的IP進行路由的,MAC地址是會變化的,而IP地址是一直不變的。
為了加深我們的理解,請看這張示意圖:?
為什么要去目標主機,先要走路由器?
在任何主機看來,路由器也是一臺主機。當主機間進行跨網絡通信時,源主機會將數據交給路由器,再由路由器將數據交給目標主機,這可以使得每臺主機都是在局域網中工作的。
因此我們可以斷定路由器上一定是存在著不同局域網的驅動程序的。
這樣的話我們就可以理解了MAC地址和IP地址了。目的 IP 是一種長遠目標,Mac 是下一階段目標,目的 IP 是路徑選擇的重要依 據,mac 地址是局域網轉發的重要依據。
3.2.2 跨網絡傳輸流程圖
示意圖:
?網絡通信的宏觀流程:
每臺主機都有網絡層,故而都有路由的功能,發送數據的地址經由自己的判斷時局域網內路由還是教育路由器進行跨網傳輸。?
IP 網絡層存在的意義:提供網絡虛擬層,讓世界的所有網絡都是 IP 網絡,屏蔽最底層網絡的差異。