我正在從事一項任務,使我使用libpcap庫解析C中的pcap文件中的信息。我已經成功地弄清楚如何獲取諸如源/目的IP地址,tcp/udp端口以及源/目標以太網地址等數據。列表中的下一步是從網絡和傳輸層協議中查看統計數據以及每個協議有多少數據包。我恐怕似乎無法弄清楚如何獲得這個信息,並希望有人可能指引我朝着正確的方向前進。由於其他信息是從諸如/usr/include/netinet.h等地方的各種數據結構中收集而來的,因此它應該也在某處,但是,我又有點失落。如何從C中的pcap獲取網絡層和傳輸層協議?
0
A
回答
1
看起來好像你已經有答案了...... IP是一個網絡層協議,所以如果你能找到IP地址,你可以統計IP數據包。同樣,TCP和UDP是傳輸層協議。如果您可以在數據包中找到TCP/UDP端口,那麼您已經知道有多少數據包正在使用哪種協議。
0
在你的回調函數
/* define/compute ip header offset */
ip = (struct sniff_ip*)(packet + SIZE_ETHERNET);
size_ip = IP_HL(ip)*4;
if (size_ip < 20) {
printf(" * Invalid IP header length: %u bytes\n", size_ip);
return;
}
switch(ip->ip_p) {
case IPPROTO_TCP:
/* define/compute tcp header offset */
tcp = (struct sniff_tcp*)(packet + SIZE_ETHERNET + size_ip);
size_tcp = TH_OFF(tcp)*4;
if (size_tcp < 20) {printf(" * Invalid TCP header length: %u bytes\n", size_tcp); return; }
bytes_tcp+=ntohs(ip->ip_len);
packets_tcp++;
break;
}
case IPPROTO_UDP:
bytes_udp+=ntohs(ip->ip_len);
packets_udp++;
break;
}
相關問題
- 1. 網絡:傳輸層和網絡層
- 2. 內核中傳輸層和網絡層之間的通信
- 3. ICMP是傳輸層協議嗎?
- 4. 計算機網絡中用於傳輸層協議實現的書
- 5. 有關網絡層和傳輸層工作的說明
- 6. 應用層如何將IP地址傳輸到網絡層?
- 7. 網絡或傳輸層模糊
- 8. 我想選擇的傳輸層安全協議中的urllib2
- 9. python dpkt pcap如何獲得協議?
- 10. 理解/逆向工程頂層網絡協議的好工具
- 11. 各種網絡硬件的OSI協議層
- 12. 如何獲取PCAP文件中的協議號碼?
- 13. 如何獲得SLIM vgg16網絡中某個圖層的輸出?
- 14. 原始套接字 - 網際協議層
- 15. 如何從pcap文件中刪除以太網層?
- 16. 監控傳輸,網絡和鏈路層緩存/ Linux中
- 17. 當etcd節點發出心跳時底層傳輸層協議是什麼
- 18. XmlHttpRequest使用的底層傳輸協議是什麼?
- 19. 如何聽L3網絡層?
- 20. Kaa網絡和協議
- 21. 用於解析網絡跟蹤(PCAP)中的文本和二進制協議消息的Google協議緩衝區
- 22. 如何識別以太網後的下一層協議
- 23. 哪一方將在SSH傳輸層協議中啓動版本協商?
- 24. 在本地網絡中傳輸二進制數據的協議
- 25. Arduino網絡協議
- 26. 以下哪項不是TCP/IP模型中的網絡層協議?
- 27. 數據鏈路層和傳輸層
- 28. 解析網絡協議的C++方法
- 29. 「應用層」與TCP網絡模型的「傳輸層」有什麼不同?
- 30. GCM如何在網絡層中工作?