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

Socket 編程與線程模型(二):Winsock 架構、緩衝區優化、Overlapped I/O 與無連接編程模型

     編輯:關於.NET

Winsock vs BSD Socket

Winsock 說明

  • Winsock 支援多協議族 (TCP/IP 為子集),綁定地址時需指定協議族與地址類型。
  • BSD Socket 僅針對 TCP/IP。

雙層緩衝區架構

  • 網卡緩衝區:極小,硬體層面。
  • 協議棧緩衝區:較大,累積網卡資料供應用層讀取。
  • 發送路徑:App → 協議棧緩衝 → 網卡緩衝 → 物理網路。

效能優化三板斧

  1. 調大協議棧緩衝區:避免發送端阻塞/失敗、接收端溢位。
  2. Overlapped I/O (重疊 I/O):資料直接從網卡緩衝 DMA 到應用緩衝,**省去協議棧拷貝**,大幅降低 CPU/記憶體開銷。

    Overlapped IO

無連接編程模型核心概念

半相關 與 全相關

  • 半相關 (3-tuple):(協議, 本地IP, 本地端口) — 單進程標識。
  • 全相關 (5-tuple):(協議, 本地IP, 本地端口, 遠端IP, 遠端端口) — 完整通訊鏈路。
  • 雙方必須使用**相同高層協議** (TCP/TCP 或 UDP/UDP)。

Bind / SendTo / RecvFrom 流程

無連接 Socket 無連接 Socket 二

  • Server:bind() 顯式登記半相關 (像申請服務熱線) → recvfrom() 等待。
  • Client:無需顯式 bind(),sendto() 隱式產生半相關 → recvfrom() 接收回覆。
  • recvfrom() 出口參數回傳來源地址,Server 憑此 sendto() 回覆。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved