Networking

Winpcap 是否能夠擷取通過千兆網卡的所有數據包而不會失去任何數據包?

  • February 10, 2013

我想使用 Winpcap 擷取通過伺服器千兆網卡的所有網路數據包。

假設我能夠使用高達 100% 的網路連結,那麼最大網路速度是 1000Mbps。如果我們排除 TCP/IP 標頭,最大 TCP 數據速率應約為 940Mbps。

假設我使用 TCP 目標埠 6000 通過 NIC 以 940Mbps 的速度發送 1GB 文件。我使用 Winpcap 擷取通過 NIC 的所有網路數據包,然後將其轉儲到 pcap 文件。如果我使用 Wireshark 分析 pcap 文件,然後檢查發送到 TCP 埠 6000 的所有網路數據包的數據包大小總和,我能否從 pcap 文件中準確獲取 1GB?

謝謝。

假設您能夠使用高達 100% 的網路連結,則最大網路速度不是 1Gbps。由於幀間間隙和校驗和,它較少。這甚至在您開始考慮數據包標頭之前(正如您在原始問題中正確提到的那樣)。

同樣正如上面評論所暗示的那樣,典型的機器將難以以線速生成數據包,更不用說以線速同時生成和擷取數據包了。我用來以線速(在 Linux 機器上)生成數據包的一種方法是製作 1500 字節數據包並使用 tcpreplay。使用這種方法,我可以非常接近線速,但這會佔用大約 100% 的 CPU,除非您使用的是非常快的機器。

說了這麼多,通過使用wireshark擷取和查看來確定發送到TCP埠6000的數據量的計劃沒有錯。(確保只擷取 TCP 埠 6000,而不是介面上的所有數據包。)您只需要確保 CPU 沒有 100% 載入,這樣數據包擷取就無法處理所有數據包。但是,無論您使用哪種方法,這都是正確的。

引用自:https://serverfault.com/questions/403657