網絡基礎,TCP/IP模型

瞭解TCP/IP五層結構(或四層,省略物理層)

TCP/IP結構中,每層有每層不同的職責,每一層都會在下一層所提供的網絡來完成自己的需求

  • 應用層: 應用層就是我們所使用的程序工作的層級,用來發送我們要傳輸的
            原始數據。
  • 傳輸層: 傳輸層用傳輸協議控制信息,保證兩天主機間的數據傳輸
  • 網絡層: 負責地址管理與路由選擇,通過ip地址來識別主機,並通過路
            由表的方式規劃兩臺主機間的數據傳輸線路
  • 數據鏈路層: 負責設備間數據幀的傳輸與識別
  • 物理層: 負責光電信號的傳輸,也就是1010001的高低電平

數據包在各層的封裝與分用

數據在傳輸前,會通過tcp每一層結構,而每一層都會對上一層的數據進行封裝
在這裏插入圖片描述

  • 應用層數據稱爲,應用數據
  • 傳輸層稱爲,數據段
  • 網絡層稱爲,數據報
  • 數據鏈路層稱爲,數據幀

物理層將上層數據轉換爲光電信息

而數據分用,是將最終的數據傳輸給另一個主機B,主機B自下而上,一層一層拆解,得到原始數據的過程


IP地址與端口

IP地址:爲了在網絡中多個終端中找到我們所要發送數據的目的機器,就需要IP地址來識別唯一一臺主機
端口:爲了識別當前主機的一個線程

IP地址的格式是以uint32_t,也就是無符號的32位整型形式,並以點分十進制表示:如174.168.2.33,每一端最高到255,因爲一個字節8位最多能表示256個十進制數。

端口的格式時以uint16_t,就是無符號16類整型形式,能表示的範圍時0~66535,但有些端口會被已知的服務佔用,如http端口80,https端口443,mysql端口3306,都是已經被佔用而無法被使用的。

既然端口用來指明需要用到的線程,不使用PID的原因是:線程中斷重新啓動時,PID會被重置,不會是原來的PID,所以需要用端口來指明所要用到的線程

在這裏插入圖片描述
爲了方便識別和傳輸,會將目的地址與源地址一起傳送到目的主機
此時會涉及到計算機大小端字節序問題。

小端: 低地址存放低位數據
大端: 低地址存放高位數據
一般網絡字節序都是大端字節序,是網絡通信的標準,
而小端機器進行網絡通信時就需要進行大小端轉換
大小端轉換的接口
ip地址轉換
uint32_t htonl(uint32_t hostl)將主機地址字節序轉換位網絡地址字節序
反過來uint32_t ntohl(uint32_t netl)就是將網絡地址字節序轉換位主機地址字節序

端口轉換 與ip相同,short型
uint16_t htons(uint16_t hosts)將主機端口字節序轉換位網絡端口字節序
反過來uint16_t ntohl(uint16_t nets)就是將網絡端口字節序轉換位主機端口字節序

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