兩臺主機想通信,其實本質就是兩個文件的資源交換,但是長距離的通信,面臨的是很多的問題。這個時候需要通過一些方式來保證可靠性
什么是協議
這樣一個例子,我是住在農村,我讀高中了我需要去縣里面讀書。這個時候呢,本來給的生活費就不多,我不想把生活費浪費在打電話上。我就和家里面有一個約定。說,如果電話響了一聲,證明我安全達到學校,如果電話響了兩聲,就證明我沒有生活費了,你需要給我打錢,如果電話響了兩聲以上,就是證明我有其他事情找你,你必須接電話了。
但是這樣就行了嗎?
這個是代表我們能夠正常的聊天,但是在真正聊天之前我們還需要做一些事情的。
比如說我們是一個幫派,很大很大。就是全國各地都有,我們為了確認對方是不是跟我們是一個幫派的,這個幫派的軍師定了一個暗號,說“天王蓋地虎” -》回答“小雞燉蘑菇”才算正確。這個跟我們上面講的協議差不多,但是有各種各樣的人啊。方言對于軍師來說聽得懂,但是對于那些普通的小跟班,聽不懂啊!怎么辦?就不把對方當成一派的,殺了、。后面軍師怪罪下來,說你為什么把對方殺了,對方回答正確了,那個小跟班說我聽不懂啊我確認不了。軍事一想確實是這樣,但是就要求只是要這個幫派的都要學習普通話,用普通話會答暗號。這樣就沒問題啦。
這就是傳說中的網絡分層模型
為什么要分層,想想我們上面的兩個例子。
協議 = 報頭+有效載荷
協議我知道了,這個報頭和有效載荷是什么呢?
我們想一下我們在網上購物,我們買了一個東西,但是商家發快遞的時候會包裝一個紙盒,順豐快遞呢會包裝一個快遞單在紙盒上。那我明明就只是買了東西(有效載荷),為什么要給我一個快遞單子(報頭呢)?這個快遞單就是一個報頭。使用倆區分是哪家快遞公司的。同樣,這里的每一層都有對應的協議。
mac的理解
我們要知道,ipv4現在已經不夠用了,但是為了保證全國的機器可用,就會先給一個區域的位置的分一個地址,這個地址叫ip地址,然后,我們對這個區域的機器里面是公用一個ipv4地址的。然后但是我們又要區分這個區域里面的每一個機器,這個地址就是mac地址。到時候我們通信的時候,大多數都是由路由轉到這個地址(mac地址)
這是一個用戶A給用戶b發送請求的過程,每一層都需要加一個報頭。
有兩個關鍵的問題
1 如何判斷哪里是報頭,哪里是有效載荷?
2 如何判斷自己的有效載荷要交給上層的哪一個協議呢?
如何找這個問題很簡單,就是一個倒著的多叉樹,往上每一個節點一一比對就行。
針對第一個問題,可以用一個特殊額分隔符作為切分(這里后面會自己實現)
局域網的類別
西游記的例子
首先我們會有一個例子,唐僧的目的地是從東土大唐到西方如來佛主哪兒去,但是他到女兒國的時候,這樣給女兒國國王說,女兒國國王給他說你的下一步是去黑風嶺。
那么接下來我們要理解一下傳輸的過程了
在同一個局域網中,這個并不會完整的這樣進行。當我們訪問127.0.0.1的時候,直接從連路層直接就回到本機了。
令牌環網機制就是鎖(后續了解一下)
跨網段的主機的文件傳輸. 數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器.
簡要的敘述一下流程,首先我們跟上面的西游記一樣,有一個初始ip 和 目標ip 但是網絡這么大,不可能一下就從A發到B 。這時候我們用一些圖的深度優先啊,廣度優先啊算法之類。搜索目標路徑。我們從物理層開始傳輸,傳輸到下一個節點的時候,物理層要往上開始分解之前的報頭,分解之前的ip。到了這一步判斷ip對不對。不對,就往下封裝自己的報頭,在物理層這樣一步一部的往下發送,直到ip正確。
數據包封裝和分用
不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數據報 (datagram),在鏈路層叫做幀(frame).
應用層數據通過協議棧發到網絡上時,每層協議都要加上一個數據首部(header),稱為封(Encapsulation).
首部信息中包含了一些類似于首部有多長, 載荷(payload)有多長, 上層協議是什么等信息.
數據封裝成幀后發到傳輸介質上,到達目的主機后每層協議再剝掉相應的首部, 根據首部中的 “上層協議字段” 將數據交給對應的上層協議處理
下圖為數據封裝的過程
解封過程
網絡中的地址管理
認識IP地址
IP協議有兩個版本, IPv4和IPv6. 我們整個的課程, 凡是提到IP協議, 沒有特殊說明的, 默認都是指IPv4
IP地址是在IP協議中, 用來標識網絡中不同主機的地址;
對于IPv4來說, IP地址是一個4字節, 32位的整數;
我們通常也使用 “點分十進制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用點分割的每一個數字表示一個字節, 范圍是 0 - 255;
認識MAC地址
MAC地址用來識別數據鏈路層中相連的節點;
長度為48位, 及6個字節. 一般用16進制數字加上冒號的形式來表示(例如: 08:00:27:03:fb:19)在網卡出廠時就確定了, 不能修改. mac地址通常是唯一的(虛擬機中的mac地址不是真實的mac地址, 可能會沖突; 也有些網卡支持用戶配置mac地址)