瑣碎的想法(二)網絡協議——人們給計算機的一組「約定」

網絡協議學習方式一

學習網絡協議的入門多種多樣,若是是從術語上來說協議,大概是這樣的。安全

  1. 協議的做用意義
  2. 協議的定義。
  3. 協議的發展。
  4. 協議的特色。
    ...

這是一種靠強記,經過實踐來加深印象,最後不自知地瞭解網絡協議的過程。有效但趣味寥寥。網絡

網絡協議學習方式二

這一次,我想從開創者的角度來分析,如何讓兩臺計算機的應用進行通信。
試想,若是咱們拋棄全部現有的網絡協議思惟,把本身當作一個科研人員,那麼如何才能讓兩臺計算機的軟件進行通信呢?
這就須要咱們發明一種機制可以實現通信。
可是,作事最好不要從頭開始,應該多借鑑前人的思想,回憶一下最初信息是如何傳遞的。tcp

烽火對照計算機

還記得歷史課本講過的烽火臺(敵人白天來臨時就燃煙,夜間來犯就點火)嗎?學習

假設,只有一個烽火臺,給一個城傳遞信息。
咱們能夠從這個具體事務中提取他可以傳遞信息的幾個最基礎的要素。設計

要素名 對應物
信息發佈者 烽火臺的士兵
信息接收者 城的士兵
信息 煙、火
信息傳遞的規則 敵人白天來臨時就燃煙,夜間來犯就點火

而咱們把幾個基礎要素轉化到兩臺計算機上。事務

要素名 對應烽火臺 對應計算機
信息發佈者 烽火臺的士兵 計算機A的軟件a
信息接收者 城的士兵 計算機B的軟件a
信息 煙、火 數據
信息傳遞的規則 敵人白天來臨時就燃煙,夜間來犯就點火 兩臺計算機之間的「約定」

郵寄對照計算機

前三者都是實體,第四點須要咱們好好理解,烽火臺的士兵和城的士兵應該是在以前都清楚「敵人白天來臨時就燃煙,夜間來犯就點火」這個規則,那麼咱們要實現通信也須要實現一個規則,而且讓雙方事先清楚。入門

總結:通信是須要雙方默認都事先理解的一套「約定」table

這時候,咱們能夠參考最多見的通信方式之一的郵寄。基礎

若是將一封郵件的構成要素和計算機的概念進行對比軟件

信的構成 計算機元素
收信人地址(城市、門牌號) 計算機A的地址
收信人姓名 計算機A中的a應用的位置
寄信人地址(城市、門牌號) 計算機B的地址
寄信人姓名 計算機B中的a應用的位置
郵件 數據

若是咱們對每臺計算器進行編號,並對咱們使用的應用,也進行編號,記在一個記事本中。
若是這兩臺計算機都存着這個記事本,那麼它們就能夠區分,每一臺電腦的每個應用。
由此,咱們就設計出一個可以實現數據傳輸的協議了。

計算機對照TCP協議

而現實中的協議也是如此,下面引用TCP協議來對比咱們上面所描述的各個基本元素。(注意:事實上TCP不單單是實現了基本的數據傳輸,還處理了可靠性、流量控制、多路複用、鏈接數、優先與安全等問題,是一個值得深刻學習的協議。)

信的構成 計算機元素 對應協議中的專業術語
收信人地址(城市、門牌號) 計算機A的地址 A計算機的地址(IP地址加MAC地址)
收信人姓名 計算機A中的a應用的位置 a應用在A計算機中佔用的端口
寄信人地址(城市、門牌號) 計算機B的地址 B計算機的地址(IP地址加MAC地址)
寄信人姓名 計算機B中的a應用的位置 a應用在A計算機中佔用的端口
郵件 數據 數據包

以上內容僅僅涉及到了基本的數據傳輸,若有興趣,能夠想一想以下的問題。

  1. 如何保證數據傳輸正確?須要涉及到數據校驗的問題。
  2. 如何保證數據的可靠性?須要涉及到三次握手、四次揮手機制。
  3. 數據量過大怎麼辦?涉及數據擁塞控制(Reno、BBR)。 ...
相關文章
相關標籤/搜索