/ / Tcpdump फ़िल्टर द्वारा प्राप्त किए गए केवल आधे पैकेट को कैप्चर क्यों करता है? - उबंटू, नेटवर्किंग, स्कैपी, टीसीपीडम्प, libpcap

टीसीपीडम्प फ़िल्टर द्वारा प्राप्त किए गए केवल आधे पैकेट को कैप्चर क्यों करता है? - उबंटू, नेटवर्किंग, स्कैपी, टीसीपीडम्प, libpcap

ओएस: उबंटू 16.04

मैंने स्कापी पैकेट निर्माता टूल का उपयोग करके कुछ पैकेट बनाए। पैकेट के लिए गंतव्य पता मेरा लोकलहोस्ट (यानी) 127.0.0.1 है

    while(True):
packet = IP(src="127.0.1.1",dst="127.0.0.1")/TCP(dport=80)/"from scapy packet"
send(packet)
print "tcp sent"

अब, जब मैं अपनी मशीन पर एक tcpdump चलाता हूं और रोकता हूंकुछ समय बाद, कब्जे वाले पैकेट फिल्टर द्वारा प्राप्त पैकेट की केवल आधा संख्या है, लेकिन पैकेट में से कोई भी नहीं छोड़ा जाता है। टीसीपीडम्प का आउटपुट यहां दिया गया है:

 sudo tcpdump -i any dst 127.0.0.1

OUTPUT:
119 packets captured
238 packets received by filter
0 packets dropped by kernel

यहां तक ​​कि अगर मैं दौड़ता हूं tcpdump -i lo , मुझे एक ही समस्या मिलती है। का उपयोग करते हुए tshark टीसीपीडम्प के बजाय कैप्चर किए गए पैकेट की संख्या भी प्रदर्शित करता है।

क्यों होता है ऐसा? क्या यह छोटे tcpdump बफर आकार के कारण है? मैं बाकी पैकेट कैप्चर कैसे कर सकता हूं?

उत्तर:

जवाब के लिए 0 № 1

Tcpdump मैन्युअल पृष्ठ से:

जब tcpdump कैप्चरिंग पैकेट को समाप्त करता है, तो यह रिपोर्ट की गणना करेगा:

पैकेट पर कब्जा कर लिया गया (यह उन पैकेटों की संख्या है जो टीसीपीडम्प है प्राप्त किया और संसाधित किया);

फ़िल्टर द्वारा प्राप्त पैकेट (अर्थ इस काउस ओएस पर निर्भर करता है जिस पर आप टीसीपीडम्प चला रहे हैं, और संभावित रूप से जिस तरह से ओएस कॉन्फ़िगर किया गया था - अगर एक फ़िल्टर निर्दिष्ट किया गया था कमांड लाइन पर, कुछ ओएस पर यह परवाह किए बिना पैकेट की गणना करता है चाहे वे फ़िल्टर अभिव्यक्ति से मेल खाते हों और भले ही वे टीसीपीडम्प के बावजूद फ़िल्टर अभिव्यक्ति से मिलान किया गया था ने अभी तक उन्हें पढ़ और संसाधित किया है, अन्य ओएस पर यह केवल पैकेट की गणना करता है चाहे फ़िल्टर अभिव्यक्ति से मिलान किया गया हो, चाहे वह चाहे tcpdump ने अभी तक उन्हें पढ़ और संसाधित किया है, और अन्य ओएस पर यह गिना जाता है केवल फ़िल्टर जो फ़िल्टर अभिव्यक्ति से मेल खाते थे और थे टीसीपीडम्प द्वारा संसाधित);

पैकेट `` कर्नेल द्वारा छोड़ा गया "" (यह है संख्याबफर स्पेस की कमी के कारण, जो पैकेट छोड़ दिए गए थे, द्वारा ओएस में पैकेट कैप्चर तंत्र जिस पर tcpdump चल रहा है, यदि ओएस रिपोर्ट करता है कि अनुप्रयोगों को जानकारी; यदि नहीं, तो यह होगा 0 के रूप में रिपोर्ट किया गया)।

http://www.tcpdump.org/tcpdump_man.html

इस प्रकार, मुझे लगता है कि, आपके मामले में, 238 पैकेटकब्जा कर लिया गया था और उनमें से 119 ने फ़िल्टर पारित किया था (स्थानीयहोस्ट गंतव्य के रूप में था)। ऐसा इसलिए है क्योंकि पैकेट दो बार कब्जा कर लिया जाता है (एक ही इंटरफ़ेस पर छोड़कर और पहुंच रहा है) और tcpdump इन डुप्लिकेट को हटा देता है। यदि आप 127.0.0.1 को पिंग करने का प्रयास करते हैं तो वही होता है।