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

Linux C 網路程式設計:通訊機制與 OSI/TCP-IP 架構模型深度解析

     編輯:關於C語言

前言

Linux 系統生來即為網路而設計,其核心內建完整的 TCP/IP 協議棧,支援多種網路協議。掌握網路通訊機制與分層架構,是進行 Socket 程式設計、效能調優與故障診斷的基石。

一、網路通訊兩大基本模式

1. 線路交換

  • 通訊前必須建立專用物理連結(如傳統電話網)
  • 連結建立後,頻寬獨佔,延遲固定、可靠
  • 缺點:資源利用率低、不適合突發性資料傳輸

2. 封包交換——現代電腦網路標準

  • 資料切分為獨立封包,每個封包攜帶目的地址
  • 封包獨立路由、儲存轉發、重組
  • 優點:統計多工、高資源利用率、彈性強
  • 封包結構:表頭(位址、序號、旗標)+ 承載資料 + 尾部(CRC)

二、OSI 七層參考模型

OSI 七層模型圖

層次名稱核心功能典型協議/設備
7應用層使用者介面、網路服務HTTP、FTP、SMTP、DNS、Telnet
6表示層資料格式轉換、加密壓縮SSL/TLS、JPEG、MPEG、ASCII/EBCDIC
5會話層建立/管理/終止會話、同步點RPC、NetBIOS、PPTP
4傳輸層端對端可靠/不可靠傳輸、流控TCP、UDP、SCTP、SPX
3網路層路由選擇、邏輯定址、分片重組IP、ICMP、IGMP、IPsec、路由器
2資料連結層幀封裝、錯誤偵測/修正、流控Ethernet、WiFi、PPP、HDLC、交換器
1物理層比特傳輸、介面電氣機械規範雙絞線、光纖、RJ45、集線器、Modem

封裝與解封裝流程

  1. 發送端:資料 → 段 → 封包 → 幀 → 比特流
  2. 傳輸媒介傳遞
  3. 接收端:比特流 → 幀 → 封包 → 段 → 資料

三、TCP/IP 四層架構模型

TCP/IP 四層模型圖

層次名稱對應 OSI 層核心協議
4應用層7+6+5HTTP、FTP、SMTP、DNS、SSH、SNMP
3傳輸層4TCP、UDP、ICMP
2網路層3IP、ARP、RARP、ICMP
1網路介面層2+1Ethernet、WiFi、PPP、SLIP、裝置驅動

關鍵協議深度解析

傳輸層三大協議

  • TCP:面向連接、可靠、位元組流、三向交握/四向揮手、滑動窗口流控、擁塞控制
  • UDP:無連接、不可靠、資料報、低延遲、適合即時多媒體、DNS、DHCP
  • ICMP:控制訊息、錯誤回報、Ping、Traceroute、路徑 MTU 發現

網路層核心:IP 協議

  • 無連接、不可靠、最佳努力交付
  • IPv4:32 位址、標頭 20-60 位元組、分片機制
  • IPv6:128 位址、固定 40 位元組標頭、無分片、擴充標頭
  • 路由選擇:靜態/動態(RIP、OSPF、BGP)

四、Linux 系統網路程式設計關鍵點

Socket API 與分層對應

  • socket() 建立端點 → 傳輸層
  • bind() 綁定 IP/埠 → 網路層
  • connect()/accept() 建立連線 → 會話/傳輸層
  • send()/recv() 資料傳輸 → 應用層介面

常見網路服務與埠號

服務埠號協議用途
HTTP80TCP網頁瀏覽
HTTPS443TCP加密網頁
SSH22TCP安全遠端登入
DNS53UDP/TCP域名解析
DHCP67/68UDP動態 IP 分配

五、實戰建議

  1. 抓包分析:善用 tcpdump -i eth0 -nn -S 與 Wireshark 觀察封包細節
  2. 連線狀態:netstat -antp / ss -antp 查看 TCP 狀態機遷移
  3. 效能調優:調整 /proc/sys/net/ipv4/tcp_* 參數(如 tcp_tw_reuse、tcp_fin_timeout)
  4. 錯誤處理:檢查 errno(EAGAIN、EWOULDBLOCK、ECONNRESET 等)

總結

理解 OSI 七層與 TCP/IP 四層模型,不僅有助於網路程式設計,更是排查網路故障、設計高效能分散式系統的核心知識。下一篇將實作 TCP/UDP Socket 完整客戶端/伺服端範例。

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