首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

Beej 網絡編程指南(三):網絡理論與分層模型

     編輯:關於C

數據封裝:網絡通信的核心過程

數據從應用層向下傳遞,每層添加首部(或尾部):

應用數據 (TFTP)
    ↓ 封裝 TFTP 首部
傳輸層數據 (UDP)
    ↓ 封裝 UDP 首部
網絡層數據 (IP)
    ↓ 封裝 IP 首部
數據鏈路層幀 (Ethernet)
    ↓ 物理層傳輸
比特流

接收端逆向剝離各層首部,最終得到應用數據。

OSI 七層模型(自上而下)

  1. 應用層:用戶交互接口(HTTP、FTP、Telnet)
  2. 表示層:數據格式轉換、加密壓縮
  3. 會話層:會話建立、管理、終止
  4. 傳輸層:端到端可靠/不可靠傳輸(TCP/UDP)
  5. 網絡層:路由、邏輯寻址(IP)
  6. 數據鏈路層:幀同步、錯誤檢測、MAC 寻址
  7. 物理層:比特流傳輸、物理介質(光纖、雙絞線)

TCP/IP 四層模型(實際工程對應)

  1. 應用層:telnet、ftp 等
  2. 傳輸層:TCP、UDP
  3. 網際層:IP、路由
  4. 網絡接口層:Ethernet、Wi-Fi 等

封裝過程的現代簡化

  • 流式套接字 (SOCK_STREAM):直接 send() 數據,內核處理 TCP/IP 封裝
  • 數據報套接字 (SOCK_DGRAM):應用自行封裝應用層協議數據,sendto() 發送,內核處理 UDP/IP
  • 硬件層由驅動程序自動完成

路由選擇

IP 層負責路由決策,詳細機制參考 IP RFC 文檔。程序員通常無需關心底層路由細節。

關鍵洞見

分層模型使網絡硬件和拓撲對程序員透明。你只需關注應用層邏輯,底層傳輸細節由協議棧自動處理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved