學習網絡協議的入門多種多樣,若是是從術語上來說協議,大概是這樣的。安全
這是一種靠強記,經過實踐來加深印象,最後不自知地瞭解網絡協議的過程。有效但趣味寥寥。網絡
這一次,我想從開創者的角度來分析,如何讓兩臺計算機的應用進行通信。
試想,若是咱們拋棄全部現有的網絡協議思惟,把本身當作一個科研人員,那麼如何才能讓兩臺計算機的軟件進行通信呢?
這就須要咱們發明一種機制可以實現通信。
可是,作事最好不要從頭開始,應該多借鑑前人的思想,回憶一下最初信息是如何傳遞的。tcp
還記得歷史課本講過的烽火臺(敵人白天來臨時就燃煙,夜間來犯就點火)嗎?學習
假設,只有一個烽火臺,給一個城傳遞信息。
咱們能夠從這個具體事務中提取他可以傳遞信息的幾個最基礎的要素。設計
要素名 | 對應物 |
---|---|
信息發佈者 | 烽火臺的士兵 |
信息接收者 | 城的士兵 |
信息 | 煙、火 |
信息傳遞的規則 | 敵人白天來臨時就燃煙,夜間來犯就點火 |
而咱們把幾個基礎要素轉化到兩臺計算機上。事務
要素名 | 對應烽火臺 | 對應計算機 |
---|---|---|
信息發佈者 | 烽火臺的士兵 | 計算機A的軟件a |
信息接收者 | 城的士兵 | 計算機B的軟件a |
信息 | 煙、火 | 數據 |
信息傳遞的規則 | 敵人白天來臨時就燃煙,夜間來犯就點火 | 兩臺計算機之間的「約定」 |
前三者都是實體,第四點須要咱們好好理解,烽火臺的士兵和城的士兵應該是在以前都清楚「敵人白天來臨時就燃煙,夜間來犯就點火」這個規則,那麼咱們要實現通信也須要實現一個規則,而且讓雙方事先清楚。入門
總結:通信是須要雙方默認都事先理解的一套「約定」。table
這時候,咱們能夠參考最多見的通信方式之一的郵寄。基礎
若是將一封郵件的構成要素和計算機的概念進行對比軟件
信的構成 | 計算機元素 |
---|---|
收信人地址(城市、門牌號) | 計算機A的地址 |
收信人姓名 | 計算機A中的a應用的位置 |
寄信人地址(城市、門牌號) | 計算機B的地址 |
寄信人姓名 | 計算機B中的a應用的位置 |
郵件 | 數據 |
若是咱們對每臺計算器進行編號,並對咱們使用的應用,也進行編號,記在一個記事本中。
若是這兩臺計算機都存着這個記事本,那麼它們就能夠區分,每一臺電腦的每個應用。
由此,咱們就設計出一個可以實現數據傳輸的協議了。
而現實中的協議也是如此,下面引用TCP協議來對比咱們上面所描述的各個基本元素。(注意:事實上TCP不單單是實現了基本的數據傳輸,還處理了可靠性、流量控制、多路複用、鏈接數、優先與安全等問題,是一個值得深刻學習的協議。)
信的構成 | 計算機元素 | 對應協議中的專業術語 |
---|---|---|
收信人地址(城市、門牌號) | 計算機A的地址 | A計算機的地址(IP地址加MAC地址) |
收信人姓名 | 計算機A中的a應用的位置 | a應用在A計算機中佔用的端口 |
寄信人地址(城市、門牌號) | 計算機B的地址 | B計算機的地址(IP地址加MAC地址) |
寄信人姓名 | 計算機B中的a應用的位置 | a應用在A計算機中佔用的端口 |
郵件 | 數據 | 數據包 |
以上內容僅僅涉及到了基本的數據傳輸,若有興趣,能夠想一想以下的問題。