سؤال

أرغب في إنشاء مقبس للوصول إلى حزم IPv4 من طبقة ارتباط البيانات. من UNIX Network Programming v1 ،

socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))

1) أنا أقوم بتنفيذ عميل DHCP ، هل هذه هي الطريقة الصحيحة للقيام بذلك؟ (يعني دون الوصول إلى طبقة ارتباط البيانات ، لا يمكنني تلقي الرد من خادم DHCP) أم هل هناك أي طريقة أخرى أسهل؟أيضًا ، نظرًا لأن هذا المقبس سيتلقى جميع حزم IPv4 المخصصة لنظامي ، كيف يمكنني التمييز بين حزمة رد DHCP من الحزم الأخرى؟

2) من فضلك اقترح لي رابط جيد/Tuorial برمجة الشبكة مع وصول طبقة ارتباط البيانات. في الكتاب أعلاه ، ليس وصفًا مفصلاً.

هذا هو رمز بلدي

هل كانت مفيدة؟

المحلول

هل تحتاج إلى رؤوس طبقة الارتباط أيضًا؟ إذا كان الأمر كذلك ، فأنت بحاجة إلى استخدام SOCK_RAWSOCK_DGRAM سيقوم بإزالة رأس طبقة الارتباط قبل إطعامه على التطبيق الخاص بك.

يمكنك تحديد طلبات DHCP بواسطة منافذ المصدر والوجهة ، نظرًا لأن DHCP يولد حركة المرور على منافذ UDP 67 و 68.

نصائح أخرى

هل حاولت النظر إلى مكتبات PCAP؟ يوفر وظائف تصفية لطيفة على IP والمنفذ وغيرها من الأشياء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top