我使用libpcap
捕獲數據包。我正在計算有效載荷大小here size_payload = ntohs(ip->ip_len) - (size_ip + size_tcp);
現在,對於數據包,size_payload
是1228,以太網報頭是14個字節,IP報頭是20個字節,TCP報頭是32個字節。而header.caplen
和header.len
是1514字節。 size_payload+size_ip+size_tcp+size_ethernet
不應該等於header.caplen
? 另外,當我使用tcpdump轉儲相同的數據包時,捕獲長度顯示爲1514
。爲什麼這些不同?我預計ntohs(ip->ip_len)
等於header.caplen
和header.len
使用libpcap時數據包長度不匹配
編輯
我預計ntohs(ip->ip_len)
等於header.caplen
和header.len
。但我覺得是ntohs(ip->ip_len) = 1280
和header.caplen = header.len = 1514
你在做什麼操作系統捕獲?你是什麼意思「另外,當我使用tcpdump轉儲相同的數據包時,捕獲長度顯示爲1514.」?你說這個「不同」,但是如果你在你的程序中說'header.caplen'是1514,並且tcpdump顯示「捕獲長度」爲1514,那聽起來好像他們報告的是同樣的東西。 – 2012-09-30 01:12:49