網絡協議棧基本知識


【注】:文章中的內容主要收集來自網上或者書籍中。

1、網絡協議分層

按照分層的思想把網絡協議棧進行分層主要有以下好處:

1.促進標准化工作,允許各個供應商進行開發

2.各層間相互獨立,把網絡操作分成低復雜單元

3.靈活性好,某一層變化不會影響到其它層

4.各層間通過一個接口在相鄰層上下通信

OSI七層模型和TCP/IP五層模型的對比如下,我們現在用的是五層協議模型:

2、PDU、封裝和解封裝

  • PDU(protocol data unit):每一層使用自己層的協議和別的系統的對應層相互通信,協議層的協議在對等層之間交換的信息叫協議數據單元
  • 上層:message
  • 傳輸層:segment
  • 網絡層:packet
  • 數據鏈路層:frame
  • 物理層:bit
  • 封裝:數據要通過網絡進行傳輸,要從高層一層一層的向下傳送,如果一個主機要傳送數據到別的主機,先把數據裝到一個特殊協議報頭中,這個過程叫封裝
  • 封裝分為:切片和加控制信息
  • 解封裝:上述的逆向過程

數據進入TCP/IP協議棧時的封裝過程如下:

數據進入TCP/IP協議棧時的解封裝過程如下:

3、以太幀和常見的報文格式

(1)以太網幀(Ethernet II Frame)

  • D-MAC:目的MAC地址
  • S-MAC:源MAC地址
  • 類型域:表示幀里面上層協議數據的類型,0x0800代表IP協議幀,0x0806代表ARP協議幀
  • CRC:幀校驗

(2)IP數據報

  • 版本號:4代表IPv4,
  • 頭長度:報頭的長度,值為4字節的倍數,故首部長度最大為60字節
  • 服務類型:暫未使用
  • 總長度:IP數據報的長度(報頭區+數據區),單位為字節,故總長度最大為65535字節,但總長度不能超過最大傳輸單元MTU
  • 標識:一個計數器,用來產生數據報的標識
  • 標志:占3位,最低位MF,為1表示還有分片,中間為DF,為0,表示允許分片
  • 片偏移:較長的分組在分片后,某片在原分組中的相對位置,單位為8字節
  • TTL:生存時間,數據報可以經過的最大路由器數
  • 上層協議標識:1:ICMP,2:IGMP、6:TCP、17:UDP等;

分片舉例:

IP數據報解析:

(3)TCP數據報

  • 協議、源IP、源端口、目的IP、目的端口確定一個TCP連接
  • 順序號:TCP段所發送的數據部分第一個字節的序號
  • 確認號:期望收到對方下次發送的數據的第一個字節的序號
  • 頭部長度:單位為4字節,因此TCP首部的最大長度為60字節
  • 窗口大小:窗口通告值,發送方根據接收方的窗口告值調整窗口大小
  • 緊急指針:指示緊急數據在報文段中的結束位置此時URG置位
  • URG:表示緊急指針字段有效
  • ACK:表示確認號字段有效
  • PSH:表示當前報文需要推操作
  • RST:置位表示復位TCP連接
  • SYN:用於建立TCP連接時同步序列號
  • FIN:用於釋放TCP連接時標識發送方比特流結束

TCP報文解析:

(4)UDP數據包

      

常見協議對應的端口號:

UDP DHCP服務器端:67,DHCP客戶端:68,DNS服務:53

TCP POP3(郵件接收協議):110,SMTP(郵件傳輸協議):25,HTTP服務:80

TCP FTP:數據傳輸為20,控制命令傳輸為21,Telnet:23

端口號范圍為:1~65535,1~1024為熟知端口號,1025~65535稱為動態端口

(5)ARP協議

  • ARP(Address Resolution Protocol)地址解析協議,是根據 IP 地址獲取物理 MAC 地址的一個 TCP/IP 協議。
  • ARP 高速緩沖表:用來記錄 IP 和 主機 MAC 地址的對應關系。會不斷更新。
  • 功能:通過目標設備的 IP 地址,查詢目標設備的 MAC 地址,同時維護 ARP 高速緩沖表,以保證通信的順利進行。

ARP分組格式

  • 硬件類型:以太網為1
  • 協議類型:網絡層協議類型,IP協議為0x0800
  • OP:操作碼,ARP請求為1,ARP應答為2

(6)ICMP協議

  • ICMP 是 "Internet Control Message Protocol"(網絡控制報文協議)的縮寫,用於在 IP 主機、路由器之間傳遞控制消息。
  • 控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。
  • ICMP 層區分不是很明顯,一般划分在 IP 層中,通過 IP 包來封裝ICMP數據 ,在實際傳輸中數據包的格式一般都是 IP 包 + ICMP包的格式

ICMP包格式:

代碼:用來表示ICMP報文類型的少數參數,

例如:代碼值為0,表示網絡不可達;代碼值為1,表示主機不可達

(7)DNS協議簡介

  • DNS(Domain Name System):域名系統,將域名和IP地址相互映射的一個分布式數據庫
  • 采用Client/Sever工作模式
  • DNS 協議運行在 UDP 協議之上,使用端口號 53
  • 過程圖解

(8)DHCP協議簡介

  • DHCP(Dynamic Host Configuration Protocol):動態主機配置協議
  • 采用Client/Sever工作模式
  • 為主機提供配置參數、自動分配可重復利用的網絡地址
  • DHCP 協議運行在 UDP 協議之上,服務器端口號 67,客戶端口號68

4、ping演示

Ping命令是為了檢查網絡的連接狀況而使用的網絡工具之一,用來檢測數據包到達目的主機的可能性。

原理:使用ICMP協議的回送請求、回送應答。客戶端發送回送請求給服務器,服務器返回一個ICMP回應應答。

Ping過程圖解:

 

  • 首先開發板要解析百度的域名,獲取到百度主機的 IP 地址,涉及到 DNS 協議,傳輸層用的是 UDP 協議
  • DNS 主機利用 UDP 協議,回復百度的 IP 地址給開發板。
  • 現在開發板要發送 Ping 請求包給百度主機,但是發現百度主機 IP 地址與自己不在同一網段,因此要發送 Ping 請求包給默認網關。
  • 要發送給默認網關的時候,忽然發現並沒有默認網關對應的 MAC 地址,因此發送一個 ARP 廣播包,如果交換機存儲了默認網關的 MAC 地址,就直接告訴開發板默認網關的 MAC 地址,否則就會向所有端口發送ARP廣播,直到路由1收到了報文后,立即響應,單播自己的 MAC 地址給開發板。
  • 這樣開發板就可以把 Ping 包發送給默認網關(路由1)了。
  • 然后路由1 經過路由協議,經過一個個路由的轉發,最后發送到了百度的主機上。百度主機檢測到 IP 是自己的 IP,接收並處理 Ping 請求,接着百度主機發送一個 Ping 回應報文給開發板。

5、TCP客戶端服務器通信演示

TCP(傳輸控制協議):提供一種面向連接的、可靠的傳輸層協議(即數據無誤、數據無丟失、數據無失序、數據無重復到達的通信)。

TCP三次握手過程:

TCP四次揮手過程:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM