الوصول إلى حزم طبقة ارتباط البيانات
-
22-09-2019 - |
سؤال
أرغب في إنشاء مقبس للوصول إلى حزم IPv4 من طبقة ارتباط البيانات. من UNIX Network Programming v1 ،
socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))
1) أنا أقوم بتنفيذ عميل DHCP ، هل هذه هي الطريقة الصحيحة للقيام بذلك؟ (يعني دون الوصول إلى طبقة ارتباط البيانات ، لا يمكنني تلقي الرد من خادم DHCP) أم هل هناك أي طريقة أخرى أسهل؟أيضًا ، نظرًا لأن هذا المقبس سيتلقى جميع حزم IPv4 المخصصة لنظامي ، كيف يمكنني التمييز بين حزمة رد DHCP من الحزم الأخرى؟
2) من فضلك اقترح لي رابط جيد/Tuorial برمجة الشبكة مع وصول طبقة ارتباط البيانات. في الكتاب أعلاه ، ليس وصفًا مفصلاً.
هذا هو رمز بلدي
المحلول
هل تحتاج إلى رؤوس طبقة الارتباط أيضًا؟ إذا كان الأمر كذلك ، فأنت بحاجة إلى استخدام SOCK_RAW
—SOCK_DGRAM
سيقوم بإزالة رأس طبقة الارتباط قبل إطعامه على التطبيق الخاص بك.
يمكنك تحديد طلبات DHCP بواسطة منافذ المصدر والوجهة ، نظرًا لأن DHCP يولد حركة المرور على منافذ UDP 67 و 68.
نصائح أخرى
هل حاولت النظر إلى مكتبات PCAP؟ يوفر وظائف تصفية لطيفة على IP والمنفذ وغيرها من الأشياء.