Linux —網絡基礎一

協議

網絡中主機之間進行通信必須使用相同的協議,協議可理解爲“規則”,是數據傳輸和數據的解釋的規則。
協議就是一個相互能夠識別的約定,在網絡中因爲主機設備的生產廠商很多,每個廠商如果都使用自己的協議進行通信,那麼導致網絡上主機間無法正常通信,這個時候需要某些大型組織來設計一個標準的協議,然後各個廠商都使用這個協議進行通信,這個時候就能實現網絡全覆蓋通信。
網絡間的數據傳輸就必須使用同一個標準協議——網絡通信協議
在網絡通信中,因爲應對場景不同,因此協議也相對特別複雜,並且很多,爲了使用更加方便,因此就有了協議的封裝/分層。
協議的封裝/分層: 按照各個協議不同的功能以及不同的應對場景對不同的協議進行了分層,在某種特定環境下如果協議的分層清晰明瞭,那麼使用/替換起來就更加方便了。

OSI網絡互聯七層參考模型

應用層: 針對特定應用的協議
表示層: 設備固有數據格式和網絡標準數據格式的轉換
會話層: 通信管理,負責建立和斷開通信連接(數據流動的邏輯通路。管理傳輸層以下的分層
傳輸層: 管理兩個節點之間的數據傳輸。負責可靠傳輸(確保數據被可靠的傳送到目標地址)
網絡層: 地址管理與路由器選擇
數據鏈路層: 互連設備之間傳送和識別數據幀
物理層: 以“0”“1”代表電壓的高低,燈光的閃滅。界定連接器和網線的規格

TCP/IP五層參考模型

TCP/IP指的是一個協議簇(很多協議),因爲TCP協議和IP協議是最典型的兩個協議,因此這個協議蔟就拿這兩個協議名字進行命名了
應用層: 負責應用程序間的數據溝通
傳輸層: 負責端與端之間的數據傳輸
網絡層: 負責地址管理和路由選擇
數據鏈路層: 負責相鄰設備節點之間的數據傳輸
物理層: 負責廣電信號的傳輸

數據的傳輸流程

在這裏插入圖片描述

IP地址

唯一定位網絡上的一臺主機 無符號四字節的整數(unit32_t)

端口

標識一臺主機上的進程 無符號兩個字節的數據(unit16_t)
進程的標識爲什麼不使用pid——進程的pid會隨着進程的創建而改變
一條通信包含(五元組)

  • sip 源IP地址
  • sport 數據從哪來
  • dip 目標地址
  • dport 數據到哪去
  • proto 協議
    ip地址+ 端口號可以定位網絡上的一臺主機的進程

網絡字節序——大小端字節序

不同字節序之間進行數據傳輸,將造成數據的逆序,也就是說,得不到真正發送的數據。
在網絡間進行通信的時候必須使用大端字節序——網絡字節序,也就意味着如果電腦是小端字節序,那麼通信的時候需要對數據逆序。但是並不是所有數據都有需要逆序,主要針對在內存中存儲是佔據字節大於1個字節的數據。針對這些數據,因爲在內存的存儲跟展示的剛好順序相反,而發送的時候,按字節發送,對方按字節接受,那麼如果是大端,因爲低地址存高位,因爲存儲順序和使用順序完全相同,導致數據跟實際像發送的數據順序剛好相反,因此需要進行字節逆序轉換(小端發送給大端)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章