আমি আশা করি এটি সমস্যার বিষয়ে কিছুটা আলোকপাত করবে। ম্যানপেজ থেকে :
যখন tcpdump প্যাকেটগুলি ক্যাপচারিং শেষ করে, এটি গণনাগুলির প্রতিবেদন করবে:
প্যাকেটগুলি ক্যাপচার করা হয়েছে (এটি এমন প্যাকেটের সংখ্যা যা tcpdump পেয়েছে এবং প্রক্রিয়াজাত করেছে);
ফিল্টার দ্বারা প্রাপ্ত প্যাকেটগুলি (এটির অর্থ ওএসের উপর নির্ভর করে যে আপনি টিসিপিডম্প চালাচ্ছেন, এবং সম্ভবত ওএসটি কনফিগার করা হয়েছিল তার উপর - যদি কোনও কমান্ড লাইনে কোনও ফিল্টার নির্দিষ্ট করা থাকে তবে কিছু ওএসে এটি প্যাকেটগুলি গণনা করে কিনা তা নির্বিশেষে তারা ফিল্টার এক্সপ্রেশন দ্বারা মিলিত হয়েছিল এবং এমনকি, তারা ফিল্টার এক্সপ্রেশন দ্বারা মিলিত হয়েছিল, যদিও tcpdump সেগুলি এখনও পড়েছে বা প্রক্রিয়া করেছে তা নির্বিশেষে, অন্যান্য ওএসে এটি কেবল প্যাকেটগুলি গণনা করে যা ফিল্টার এক্সপ্রেশন দ্বারা টিসিপিডম্প পড়েছে কিনা নির্বিশেষে এবং সেগুলি এখনও প্রক্রিয়া করা হয়েছে এবং অন্যান্য ওএসে এটি কেবলমাত্র প্যাকেটগুলি গণনা করে যা ফিল্টার এক্সপ্রেশন দ্বারা মিলেছিল এবং tcpdump দ্বারা প্রক্রিয়া করা হয়েছিল);
কার্নেলের দ্বারা প্যাকেটগুলি ফেলে দেওয়া হয়েছে (ওএসের প্যাকেট ক্যাপচার পদ্ধতিতে যে টিসিপিডাম্প চলছে সেগুলি দ্বারা বাফার স্পেসের অভাবে এই প্যাকেটগুলি ফেলে দেওয়া হয়েছিল , যদি ওএস অ্যাপ্লিকেশনগুলিতে সেই তথ্যটি রিপোর্ট করে; যদি তা না হয় তবে) 0 হিসাবে রিপোর্ট করা হবে)।
এবং ২০০৯ থেকে একটি মেইলিং লিস্ট এন্ট্রি এখানে ব্যাখ্যা করছে:
"ফিল্টার দ্বারা প্রাপ্ত প্যাকেটগুলি" নম্বরটি ps_recv
একটি কল থেকে প্রাপ্ত নম্বর pcap_stats()
; বিপিএফের সাথে এটিই bs_recv
নম্বর BIOCGSTATS ioctl
। এই গণনায় বিপিএফকে হস্তান্তরিত সমস্ত প্যাকেট অন্তর্ভুক্ত রয়েছে; এই প্যাকেটগুলি এখনও এমন একটি বাফারে থাকতে পারে যা এখনও লিবিপক্যাপ দ্বারা পড়া হয়নি (এবং এটি টিসিপিডম্পের হাতে দেওয়া হয়নি), বা সম্ভবত এমন একটি বাফারে থাকতে পারে যা লিবপ্যাক্যাপ দ্বারা পড়েছে তবে এখনও টিসিপিডম্পের হাতে দেওয়া হয়নি, সুতরাং এটি প্যাকেটগুলি গণনা করতে পারে যে "বন্দী" হিসাবে রিপোর্ট করা হয় না
প্রক্রিয়াটি খুব দ্রুত মারা যায়? প্যাকেটগুলি ক্যাপচার -c N
করার সময় একটি পতাকাও ছিল tcpdump থেকে প্রস্থান করার জন্য exitN
যেহেতু আপনার সমস্যাটি বেশ দক্ষ বলে মনে হচ্ছে, আপনি সরাসরি বা শত শত ভাষার বাইন্ডিংগুলির মধ্যে একটির মাধ্যমেও ব্যবহারlibpcap
করতে পারেন ।
আপনার প্রশ্নের জন্য, যেহেতু সব আপনি পেতে হয় বন্দী প্যাকেজ capture.cap
ফাইল, আপনি শুধু রান যেখানে এটা খালি না এবং এই পরীক্ষা অর্থাত, UHM, লাইন গণনা দিকে তাকাবেন?
tcpdump -r capture.cap | wc -l
ক্যাপচার ফাইলটিতে প্রবেশের সংখ্যা ফিরিয়ে দিতে সম্ভবত libpcap ব্যবহার করার আরও ভাল উপায় আছে ...