arp(7)

الاسم
arp - وحدة نواة ARP في لينكس.

الوصف
تنفذ وحدة بروتوكول النواة هذه بروتوكول تحليل العناوين المُعرّف في RFC 826. يُستخدم للتحويل بين عناوين الأجهزة من الطبقة الثانية وعناوين بروتوكول IPv4 على الشبكات المتصلة مباشرة. لا يتفاعل المستخدم عادةً مباشرة مع هذه الوحدة باستثناء تكوينها؛ بل تُقدم خدمة للبروتوكولات الأخرى في النواة.

يمكن لعملية مستخدم استقبال حزم ARP باستخدام مقابس packet(7). توجد أيضًا آلية لإدارة خبيئة ARP في مساحة المستخدم باستخدام مقابس netlink(7). يمكن أيضًا التحكم في جدول ARP عبر ioctl(2) على أي مقبس AF_INET.

تحتفظ وحدة ARP بخبيئة من التعيينات بين عناوين الأجهزة وعناوين البروتوكول. الخبيئة ذات حجم محدود لذا تُجمع القيود القديمة والأقل استخدامًا آليًا. القيود المُعلّمة كدائمة لا تُحذف أبدًا بواسطة جامع القمامة. يمكن التلاعب بالخبيئة مباشرة باستخدام ioctls ويمكن ضبط سلوكها عبر واجهات /proc الموصوفة أدناه.

عند عدم وجود تغذية راجعة إيجابية لتعيين موجود بعد فترة (انظر واجهات /proc أدناه)، يُعتبر إدخال خبيئة الجيران قديمًا. يمكن الحصول على تغذية راجعة إيجابية من طبقة أعلى؛ على سبيل المثال، من إقرار TCP ناجح. يمكن للبروتوكولات الأخرى الإشارة إلى التقدم الأمامي باستخدام علامة MSG_CONFIRM مع sendmsg(2). عند عدم وجود تقدم أمامي، يحاول ARP إعادة الاستقصاء. يحاول أولاً سؤال خفي ARP المحلي app_solicit مرة للحصول على عنوان MAC مُحدّث. إذا فشل ذلك وكان عنوان MAC قديم معروفًا، يُرسل استقصاء أحادي ucast_solicit مرة. إذا فشل ذلك أيضًا، سيبث طلب ARP جديدًا إلى الشبكة. تُرسل الطلبات فقط عندما توجد بيانات في قائمة الانتظار للإرسال.

سيُضيف لينكس آليًا إدخال وكيل ARP غير دائم عندما يستقبل طلبًا لعنوان يُمرره إليه ويكون وكيل ARP مُفعّلاً على الواجهة المستقبلة. عندما يوجد مسار رفض للهدف، لا يُضاف أي إدخال وكيل ARP.

  Ioctls
ثلاثة ioctls متاحة على جميع مقابس AF_INET. تأخذ مؤشرًا إلى struct arpreq كوسيط لها.

    struct arpreq {
        struct sockaddr arp_pa;      /* protocol address */
        struct sockaddr arp_ha;      /* hardware address */
        int             arp_flags;   /* flags */
        struct sockaddr arp_netmask; /* netmask of protocol address */
        char            arp_dev[16];
    };

SIOCSARP و SIOCDARP و SIOCGARP تُعين وتحذف وتحصل على تعيين ARP على التوالي. تعيين وحذف خرائط ARP هي عمليات مميزة ولا يُمكن تنفيذها إلا بواسطة عملية تمتلك قدرة CAP_NET_ADMIN أو UID فعال بقيمة 0.

يجب أن يكون arp_pa عنوان AF_INET ويجب أن يكون arp_ha من نفس نوع الجهاز المُحدد في arp_dev. arp_dev هو سلسلة منتهية بصفر تُسمي جهازًا.
    arp_flags
    العلم | المعنى
    ATF_COM | البحث مكتمل
    ATF_PERM | إدخال دائم
    ATF_PUBL | إدخال منشور
    ATF_USETRAILERS | المُذيِّلات مطلوبة
    ATF_NETMASK | استخدم قناع شبكة
    ATF_DONTPUB | لا تُجب

إذا تم تعيين العلم ATF_NETMASK، فيجب أن يكون arp_netmask صالحًا. لا يدعم Linux 2.2 إدخالات ARP للشبكة الوكيلة، لذا يجب تعيين هذا إلى 0xffffffff، أو 0 لإزالة إدخال ARP وكيل موجود. ATF_USETRAILERS قديم ولا ينبغي استخدامه.

  واجهات /proc
يدعم ARP مجموعة من واجهات /proc لتكوين المعلمات على أساس عالمي أو لكل واجهة. يمكن الوصول إلى الواجهات عن طريق قراءة أو كتابة ملفات /proc/sys/net/ipv4/neigh/*/*. لكل واجهة في النظام دليلها الخاص في /proc/sys/net/ipv4/neigh/. يُستخدم الإعداد في الدليل "default" لجميع الأجهزة المنشأة حديثًا. ما لم يُحدد خلاف ذلك، تُحدد الواجهات المتعلقة بالوقت بالثواني.

anycast_delay (منذ Linux 2.2)
    الحد الأقصى لعدد jiffies للتأخير قبل الرد على رسالة استفسار جار IPv6. دعم Anycast لم يُنفذ بعد. المبدئي هو ثانية واحدة.

app_solicit (منذ Linux 2.2)
    الحد الأقصى لعدد الاستقصاءات المرسلة إلى برنامج ARP الخفي في مساحة المستخدم عبر netlink قبل العودة إلى استقصاءات البث المتعدد (انظر mcast_solicit). المبدئي هو 0.

base_reachable_time (منذ Linux 2.2)
    بمجرد العثور على جار، يُعتبر الإدخال صالحًا لمدة لا تقل عن قيمة عشوائية بين base_reachable_time/2 و3*base_reachable_time/2. تمتد صلاحية الإدخال إذا تلقى تغذية راجعة إيجابية من بروتوكولات المستوى الأعلى. المبدئي هو 30 ثانية. هذا الملف أصبح الآن قديمًا لصالح base_reachable_time_ms.

base_reachable_time_ms (منذ Linux 2.6.12)
    كما في base_reachable_time، لكنه يقيس الوقت بالمللي ثانية. المبدئي هو 30000 مللي ثانية.

delay_first_probe_time (منذ Linux 2.2)
    التأخير قبل أول استقصاء بعد تقرير أن الجار قديم. المبدئي هو 5 ثوانٍ.

gc_interval (منذ Linux 2.2)
    عدد مرات محاولة تشغيل جامع القمامة لإدخالات الجيران. المبدئي هو 30 ثانية.

gc_stale_time (منذ Linux 2.2)
    يحدد عدد مرات التحقق من إدخالات الجيران القديمة. عندما يُعتبر إدخال جار قديمًا، يُحل مرة أخرى قبل إرسال البيانات إليه. المبدئي هو 60 ثانية.

gc_thresh1 (منذ Linux 2.2)
    الحد الأدنى لعدد الإدخالات المحفوظة في خبيئة ARP. لن يعمل جامع القمامة إذا كان عدد الإدخالات في الخبيئة أقل من هذا الرقم. المبدئي هو 128.

gc_thresh2 (منذ Linux 2.2)
    الحد الأقصى الناعم لعدد الإدخالات المحفوظة في خبيئة ARP. يسمح جامع القمامة بتجاوز عدد الإدخالات لهذا لمدة 5 ثوانٍ قبل إجراء الجمع. المبدئي هو 512.

gc_thresh3 (منذ Linux 2.2)
    الحد الأقصى الصلب لعدد الإدخالات المحفوظة في خبيئة ARP. يعمل جامع القمامة دائمًا إذا كان عدد الإدخالات في الخبيئة أكبر من هذا الرقم. المبدئي هو 1024.

locktime (منذ Linux 2.2)
    الحد الأدنى لعدد jiffies للاحتفاظ بإدخال ARP في الخبيئة. يمنع هذا اهتزاز خبيئة ARP إذا كان هناك أكثر من تعيين محتمل (بسبب سوء تكوين الشبكة عمومًا). المبدئي هو ثانية واحدة.

mcast_solicit (منذ Linux 2.2)
    الحد الأقصى لعدد محاولات حل العنوان عبر الإرسال المتعدد/البث قبل وضع علامة على الإدخال كغير قابل للوصول. المبدئي هو 3.

proxy_delay (منذ لينكس 2.2)
    عند استلام طلب ARP لعنوان وكيل-ARP معروف، يتم التأخير حتى proxy_delay من النبضات قبل الرد. يُستخدم هذا لمنع فيضان الشبكة في بعض الحالات. المبدئي هو 0.8 ثانية.

proxy_qlen (منذ لينكس 2.2)
    الحد الأقصى لعدد الحزم التي قد تُصطف لعناوين الوكيل-ARP. المبدئي هو 64.

retrans_time (منذ لينكس 2.2)
    عدد النبضات للتأخير قبل إعادة إرسال الطلب. المبدئي هو ثانية واحدة. هذا الملف أصبح الآن مهملاً لصالح retrans_time_ms.

retrans_time_ms (منذ لينكس 2.6.12)
    عدد المللي ثانية للتأخير قبل إعادة إرسال الطلب. المبدئي هو 1000 مللي ثانية.

ucast_solicit (منذ لينكس 2.2)
    الحد الأقصى لعدد محاولات إرسال استقصاءات أحادية البث قبل سؤال برنامج خفي ARP (انظر app_solicit). المبدئي هو 3.

unres_qlen (منذ لينكس 2.2)
    الحد الأقصى لعدد الحزم التي قد تُصطف لكل عنوان غير محلول بواسطة طبقات الشبكة الأخرى. المبدئي هو 3.

الإصدارات
تغير struct arpreq في لينكس 2.0 ليشمل العضو arp_dev وتغيرت أرقام ioctl في نفس الوقت. تم إسقاط دعم ioctls القديمة في لينكس 2.2.

تم إسقاط دعم إدخالات الوكيل ARP للشبكات (قناع الشبكة لا يساوي 0xffffffff) في لينكس 2.2. تم استبداله بإعداد وكيل ARP آلي بواسطة النواة لجميع المضيفات القابلة للوصول على الواجهات الأخرى (عند تمكين التوجيه والوكيل ARP للواجهة).

واجهات neigh/* لم تكن موجودة قبل لينكس 2.2.

العلل
بعض إعدادات المؤقت محددة بالنبضات، والتي تعتمد على بنية النظام وإصدار النواة؛ انظر time(7).

لا توجد طريقة للإشارة إلى التغذية الراجعة الإيجابية من مساحة المستخدم. هذا يعني أن البروتوكولات الموجهة للاتصال المنفذة في مساحة المستخدم ستولد حركة ARP زائدة، لأن ndisc سيعيد استقصاء عنوان MAC بانتظام. نفس المشكلة تنطبق على بعض بروتوكولات النواة (مثل NFS عبر UDP).

صفحة الدليل هذه تدمج وظائف خاصة بـ IPv4 مع وظائف مشتركة بين IPv4 و IPv6.

انظر أيضًا
capabilities(7), ip(7), arpd(8)

RFC 826 لوصف ARP. RFC 2461 لوصف اكتشاف الجيران IPv6 والخوارزميات الأساسية المستخدمة. يستخدم لينكس 2.2+ IPv4 ARP خوارزميات IPv6 عند الاقتضاء.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.