.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1999, Andi Kleen .\" Copyright 1999, Matthew Wilcox .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\" FIXME .\" The following are not yet documented: .\" .\" SO_PEERNAME (2.4?) .\" get only .\" Seems to do something similar to getpeername(), but then .\" why is it necessary / how does it differ? .\" .\" SO_TIMESTAMPING (2.6.30) .\" Documentation/networking/timestamping.rst .\" commit cb9eff097831007afb30d64373f29d99825d0068 .\" Author: Patrick Ohly .\" .\" SO_WIFI_STATUS (3.3) .\" commit 6e3e939f3b1bf8534b32ad09ff199d88800835a0 .\" Author: Johannes Berg .\" Also: SCM_WIFI_STATUS .\" .\" SO_NOFCS (3.4) .\" commit 3bdc0eba0b8b47797f4a76e377dd8360f317450f .\" Author: Ben Greear .\" .\" SO_GET_FILTER (3.8) .\" commit a8fc92778080c845eaadc369a0ecf5699a03bef0 .\" Author: Pavel Emelyanov .\" .\" SO_MAX_PACING_RATE (3.13) .\" commit 62748f32d501f5d3712a7c372bbb92abc7c62bc7 .\" Author: Eric Dumazet .\" .\" SO_BPF_EXTENSIONS (3.14) .\" commit ea02f9411d9faa3553ed09ce0ec9f00ceae9885e .\" Author: Michal Sekletar .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH socket 7 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم socket \- واجهة مقبس لينكس .SH موجز .nf \fB#include \fP .P \fIsockfd\fP\fB = socket(int \fP\fIsocket_family\fP\fB, int \fP\fIsocket_type\fP\fB, int \fP\fIprotocol\fP\fB);\fP .fi .SH الوصف تصف صفحة الدليل هذه واجهة مستخدم طبقة مقبس شبكات لينكس. مقابس متوافقة مع BSD هي الواجهة الموحدة بين عملية المستخدم ومكدسات بروتوكول الشبكة في \fIالنواة\fP. تُجمع وحدات البروتوكول في \fIعائلات البروتوكول\fP مثل \fBAF_INET\fP و \fBAF_IPX\fP و \fBAF_PACKET\fP، و \fIأنواع المقابس\fP مثل \fBSOCK_STREAM\fP أو \fBSOCK_DGRAM\fP. راجع \fBsocket\fP(2) لمزيد من المعلومات حول العائلات والأنواع. .SS "دوال طبقة المقبس" تُستخدم هذه الدوال بواسطة عملية المستخدم لإرسال أو استقبال الحزم وللقيام بعمليات المقبس الأخرى. لمزيد من المعلومات، راجع صفحات الدليل الخاصة بكل منها. .P يُنشئ \fBsocket\fP(2) مقبساً، ويوصل \fBconnect\fP(2) مقبساً بعنوان مقبس بعيد، وتربط دالة \fBbind\fP(2) مقبساً بعنوان مقبس محلي، ويخبر \fBlisten\fP(2) المقبس بأن الاتصالات الجديدة يجب أن تُقبل، ويُستخدم \fBaccept\fP(2) للحصول على مقبس جديد باتصال وارد جديد. يعيد \fBsocketpair\fP(2) مقبسين مجهولين متصلين (مُطبق فقط لعدد قليل من العائلات المحلية مثل \fBAF_UNIX\fP) .P تُرسل \fBsend\fP(2) و \fBsendto\fP(2) و \fBsendmsg\fP(2) البيانات عبر المقبس، وتستقبل \fBrecv\fP(2) و \fBrecvfrom\fP(2) و \fBrecvmsg\fP(2) البيانات من المقبس. ينتظر \fBpoll\fP(2) و \fBselect\fP(2) وصول البيانات أو الجاهزية لإرسالها. بالإضافة إلى ذلك، يمكن استخدام عمليات الإدخال/الإخراج القياسية مثل \fBwrite\fP(2) و \fBwritev\fP(2) و \fBsendfile\fP(2) و \fBread\fP(2) و \fBreadv\fP(2) لقراءة وكتابة البيانات. .P يعيد \fBgetsockname\fP(2) عنوان المقبس المحلي ويعيد \fBgetpeername\fP(2) عنوان المقبس البعيد. تُستخدم \fBgetsockopt\fP(2) و \fBsetsockopt\fP(2) لضبط أو جلب خيارات طبقة المقبس أو البروتوكول. يمكن استخدام \fBioctl\fP(2) لضبط أو قراءة بعض الخيارات الأخرى. .P يُستخدم \fBclose\fP(2) لإغلاق المقبس. ويغلق \fBshutdown\fP(2) أجزاء من اتصال مقبس مزدوج الاتجاه بالكامل. .P عمليات البحث (Seeking)، أو استدعاء \fBpread\fP(2) أو \fBpwrite\fP(2) بموضع غير صفري غير مدعومة في المقابس. .P من الممكن إجراء إدخال/إخراج غير حاجب على المقابس عبر ضبط وسم \fBO_NONBLOCK\fP على واصف ملف المقبس باستخدام \fBfcntl\fP(2). عندها ستعيد كل العمليات التي قد تُحجب (عادةً) الخطأ \fBEAGAIN\fP (يجب إعادة المحاولة لاحقاً)؛ وسيعيد \fBconnect\fP(2) الخطأ \fBEINPROGRESS\fP. يمكن للمستخدم عندها انتظار أحداث مختلفة عبر \fBpoll\fP(2) أو \fBselect\fP(2). .TS tab(:) allbox; c s s l l lx. أحداث الإدخال/الإخراج الحدث:وسم Poll:الحدوث قراءة:POLLIN:T{ وصلت بيانات جديدة. T} قراءة:POLLIN:T{ وُوفق على إعداد الاتصال (للمقابس الموجهة بالاتصال) T} قراءة:POLLHUP:T{ بُدئ بطلب قطع الاتصال من الطرف الآخر. T} قراءة:POLLHUP:T{ انقطع الاتصال (فقط للبروتوكولات الموجهة بالاتصال). عند الكتابة في المقبس تُرسل أيضاً \fBSIGPIPE\fP. T} كتابة:POLLOUT:T{ المقبس لديه مساحة كافية في مخزن الإرسال لكتابة بيانات جديدة. T} قراءة/كتابة:T{ POLLIN | .br POLLOUT T}:T{ أُنهي استدعاء \fBconnect\fP(2) خارجي. T} قراءة/كتابة:POLLERR:T{ حدث خطأ غير متزامن. T} قراءة/كتابة:POLLHUP:T{ أغلق الطرف الآخر اتجاهاً واحداً. T} استثناء:POLLPRI:T{ وصلت بيانات عاجلة. تُرسل عندها \fBSIGURG\fP. T} .\" FIXME . The following is not true currently: .\" It is no I/O event when the connection .\" is broken from the local end using .\" .BR shutdown (2) .\" or .\" .BR close (2). .TE .P كبديل لـ \fBpoll\fP(2) و \fBselect\fP(2) يمكن جعل \fIالنواة\fP تخطر التطبيق بالأحداث عبر إشارة \fBSIGIO\fP. لذلك يجب ضبط وسم \fBO_ASYNC\fP على واصف ملف المقبس عبر \fBfcntl\fP(2) ويجب تثبيت معالج إشارة صالح لـ \fBSIGIO\fP عبر \fBsigaction\fP(2). راجع مناقشة \fIالإشارات\fP أدناه. .SS "هياكل عناوين المقبس" لكل نطاق مقبس تنسيقه الخاص لعناوين المقبس، مع هيكل عنوان خاص بالنطاق. يبدأ كل من هذه الهياكل بحقل "عائلة" صحيح (بنوع \fIsa_family_t\fP) يشير إلى نوع هيكل العنوان. يسمح هذا لنداءات النظام المختلفة (مثل \fBconnect\fP(2) و \fBbind\fP(2) و \fBaccept\fP(2) و \fBgetsockname\fP(2) و \fBgetpeername\fP(2))، والتي هي عامة لجميع نطاقات المقابس، بتحديد نطاق عنوان مقبس معين. .P للسماح بتمرير أي نوع من عناوين المقابس إلى واجهات برمجة تطبيقات المقابس، عُرّف النوع \fIstruct sockaddr\fP. الغرض من هذا النوع هو بحت للسماح بقولبة (casting) أنواع عناوين المقابس الخاصة بالنطاق إلى نوع "عام"، لتجنب تحذيرات المترجم حول عدم تطابق الأنواع في استدعاءات واجهة برمجة المقابس. .P بالإضافة إلى ذلك، توفر واجهة برمجة المقابس نوع البيانات \fIstruct sockaddr_storage\fP. هذا النوع مناسب لاستيعاب جميع هياكل عناوين المقابس الخاصة بالنطاق المدعومة؛ فهو كبير بما يكفي ومحاذى بشكل صحيح. (على وجه الخصوص، هو كبير بما يكفي لاحتواء عناوين مقابس IPv6). يتضمن الهيكل الحقل التالي، الذي يمكن استخدامه لتحديد نوع عنوان المقبس المخزن فعلياً في الهيكل: .P .in +4n .EX sa_family_t ss_family; .EE .in .P هيكل \fIsockaddr_storage\fP مفيد في البرامج التي يجب أن تتعامل مع عناوين المقابس بطريقة عامة (مثل البرامج التي يجب أن تتعامل مع كل من عناوين مقابس IPv4 و IPv6). .SS "خيارات المقبس" .\" FIXME . .\" In the list below, the text used to describe argument types .\" for each socket option should be more consistent .\" .\" SO_ACCEPTCONN is in POSIX.1-2001, and its origin is explained in .\" W R Stevens, UNPv1 خيارات المقبس المدرجة أدناه يمكن ضبطها باستخدام \fBsetsockopt\fP(2) وقراءتها باستخدام \fBgetsockopt\fP(2) مع ضبط مستوى المقبس على \fBSOL_SOCKET\fP لجميع المقابس. ما لم يذكر خلاف ذلك، \fIoptval\fP هو مؤشر لـ \fIint\fP. .TP \fBSO_ACCEPTCONN\fP يعيد قيمة تشير إلى ما إذا كان هذا المقبس قد وُسم لقبول الاتصالات بـ \fBlisten\fP(2) أم لا. القيمة 0 تشير إلى أن هذا ليس مقبس استماع، والقيمة 1 تشير إلى أنه مقبس استماع. خيار المقبس هذا للقراءة فقط. .TP \fBSO_ATTACH_FILTER\fP (منذ لينكس 2.2) .TQ \fBSO_ATTACH_BPF\fP (منذ لينكس 3.19) إرفاق برنامج BPF كلاسيكي (\fBSO_ATTACH_FILTER\fP) أو BPF ممتد (\fBSO_ATTACH_BPF\fP) بالمقبس لاستخدامه كمرشح للحزم الواردة. ستُهمل الحزمة إذا أعاد برنامج المرشح صفراً. إذا أعاد برنامج المرشح قيمة غير صفرية أقل من حجم بيانات الحزمة، فستُبتر الحزمة إلى الحجم المعاد. إذا كانت القيمة التي أعادها المرشح أكبر من أو تساوي حجم بيانات الحزمة، يُسمح للحزمة بالمرور دون تعديل. .IP المعامل لـ \fBSO_ATTACH_FILTER\fP هو هيكل \fIsock_fprog\fP، المُعرّف في \fI\fP: .IP .in +4n .EX struct sock_fprog { unsigned short len; struct sock_filter *filter; }; .EE .in .IP المعامل لـ \fBSO_ATTACH_BPF\fP هو واصف ملف يعيده نداء النظام \fBbpf\fP(2) ويجب أن يشير إلى برنامج من النوع \fBBPF_PROG_TYPE_SOCKET_FILTER\fP. .IP قد تُضبط هذه الخيارات عدة مرات لمقبس معين، وفي كل مرة يُستبدل برنامج المرشح السابق. قد تُستدعى النسخ الكلاسيكية والممتدة على نفس المقبس، ولكن سيُستبدل المرشح السابق دائماً بحيث لا يحتوي المقبس أبداً على أكثر من مرشح واحد مُعرّف. .IP كلا من BPF الكلاسيكي والممتد مشروحان في ملف مصدر \fIالنواة\fP \fIDocumentation/networking/filter.rst\fP .TP \fBSO_ATTACH_REUSEPORT_CBPF\fP .TQ \fBSO_ATTACH_REUSEPORT_EBPF\fP للاستخدام مع خيار \fBSO_REUSEPORT\fP، تسمح هذه الخيارات للمستخدم بضبط برنامج BPF كلاسيكي (\fBSO_ATTACH_REUSEPORT_CBPF\fP) أو BPF ممتد (\fBSO_ATTACH_REUSEPORT_EBPF\fP) يحدد كيفية تخصيص الحزم للمقابس في مجموعة reuseport (أي جميع المقابس التي لديها \fBSO_REUSEPORT\fP مضبوطاً وتستخدم نفس العنوان المحلي لاستقبال الحزم). .IP يجب أن يعيد برنامج BPF الكلاسيكي فهرساً بين 0 و N\-1 يمثل المقبس الذي يجب أن يستقبل الحزمة (حيث N هو عدد المقابس في المجموعة). إذا أعاد برنامج BPF فهرساً غير صالح، فسيرجع اختيار المقبس إلى آلية \fBSO_REUSEPORT\fP العادية. .IP تُرقم المقابس بترتيب إضافتها إلى المجموعة (أي ترتيب استدعاءات \fBbind\fP(2) لمقابس UDP أو ترتيب استدعاءات \fBlisten\fP(2) لمقابس TCP). .IP يمكن لبرنامج BPF الممتد أن يكون من نوعين: .RS .TP \fBBPF_PROG_TYPE_SOCKET_FILTER\fP في هذه الحالة، يجب أن يعيد برنامج BPF الممتد فهرساً بين 0 و N\-1، مثل برنامج BPF الكلاسيكي. .TP \fBBPF_PROG_TYPE_SK_REUSEPORT\fP (منذ لينكس 4.19) في هذه الحالة، يجب أن يعيد إجراءً (\fBSK_PASS\fP أو \fBSK_DROP\fP) ويمكن استخدام المساعد \fBbpf_sk_select_reuseport\fP لاختيار المقبس الذي يجب أن يستقبل الحزمة. .RE .IP سترث المقابس الجديدة المضافة إلى مجموعة reuseport برنامج BPF. عندما يُزال مقبس من مجموعة reuseport (عبر \fBclose\fP(2))، سيُنقل آخر مقبس في المجموعة إلى موضع المقبس المغلق. .IP قد تُضبط هذه الخيارات بشكل متكرر في أي وقت على أي مقبس في المجموعة لاستبدال برنامج BPF الحالي المستخدم من قبل جميع المقابس في المجموعة. .IP يأخذ \fBSO_ATTACH_REUSEPORT_CBPF\fP نفس نوع المعامل لـ \fBSO_ATTACH_FILTER\fP ويأخذ \fBSO_ATTACH_REUSEPORT_EBPF\fP نفس نوع المعامل لـ \fBSO_ATTACH_BPF\fP. .IP دعم UDP لهذه الميزة متاح منذ لينكس 4.5؛ ودعم TCP متاح منذ لينكس 4.6. .TP \fBSO_BINDTODEVICE\fP ربط هذا المقبس بجهاز معين مثل \[lq]eth0\[rq]، كما هو محدد في اسم الواجهة الممرر. إذا كان الاسم سلسلة فارغة أو حجم الخيار صفراً، يُزال ربط المقبس بالجهاز. الخيار الممرر هو سلسلة اسم واجهة متغيرة الحجم ومنتهية بصفر وبحد أقصى لحجم \fBIFNAMSIZ\fP. إذا رُبط مقبس بواجهة، فإن الحزم المستلمة من تلك الواجهة المحددة فقط هي التي تُعالج بواسطة المقبس. لاحظ أن هذا يعمل فقط لبعض أنواع المقابس، خاصة مقابس \fBAF_INET\fP. وهو غير مدعوم لمقابس الحزم (استخدم \fBbind\fP(2) العادي هناك). .IP قبل لينكس 3.8، كان يمكن ضبط خيار المقبس هذا، ولكن لم يكن بالإمكان جلبه بـ \fBgetsockopt\fP(2). منذ لينكس 3.8، أصبح قابلاً للقراءة. يجب أن يحتوي معامل \fIoptlen\fP على حجم المخزن المتاح لاستقبال اسم الجهاز ويوصى بأن يكون \fBIFNAMSIZ\fP بايت. يُبلّغ عن طول اسم الجهاز الحقيقي في معامل \fIoptlen\fP. .TP \fBSO_BROADCAST\fP ضبط أو جلب وسم البث (broadcast). عند التمكين، يُسمح لمقابس حزم البيانات بإرسال حزم إلى عنوان بث. ليس لهذا الخيار أي تأثير على المقابس الموجهة بالتدفق. .TP \fBSO_BSDCOMPAT\fP تمكين التوافقية مع علل BSD. استُخدم هذا بواسطة وحدة بروتوكول UDP في لينكس 2.0 و 2.2. في حال تمكينه، فإن أخطاء ICMP المستلمة لمقبس UDP لن تُمرر إلى برنامج المستخدم. في إصدارات \fIالنواة\fP اللاحقة، أُلغي دعم هذا الخيار تدريجياً: يتجاهله لينكس 2.4 بصمت، ويولد لينكس 2.6 تحذيراً في \fIالنواة\fP (printk()) إذا استخدمه برنامج ما. مكن لينكس 2.0 أيضاً خيارات توافق علل BSD (تغيير الترويسة العشوائي، تخطي وسم البث) للمقابس الخام مع هذا الخيار، ولكن أُزيل ذلك في لينكس 2.2. .TP \fBSO_DEBUG\fP تمكين \fIتنقيح\fP المقبس. يُسمح به فقط للعمليات التي تملك قدرة \fBCAP_NET_ADMIN\fP أو معرف مستخدم فعال بقيمة 0. .TP \fBSO_DETACH_FILTER\fP (منذ لينكس 2.2) .TQ \fBSO_DETACH_BPF\fP (منذ لينكس 3.19) يمكن استخدام هذين الخيارين، وهما مترادفان، لإزالة برنامج BPF الكلاسيكي أو الممتد المرفق بمقبس عبر \fBSO_ATTACH_FILTER\fP أو \fBSO_ATTACH_BPF\fP. قيمة الخيار تُتجاهل. .TP \fBSO_DOMAIN\fP (منذ لينكس 2.6.32) يجلب نطاق المقبس كعدد صحيح، ويعيد قيمة مثل \fBAF_INET6\fP. راجع \fBsocket\fP(2) للتفاصيل. خيار المقبس هذا للقراءة فقط. .TP \fBSO_ERROR\fP جلب ومسح خطأ المقبس المعلق. خيار المقبس هذا للقراءة فقط. يتوقع عدداً صحيحاً. .TP \fBSO_DONTROUTE\fP عدم الإرسال عبر بوابة، الإرسال فقط إلى المضيفين المتصلين مباشرة. يمكن تحقيق نفس التأثير عبر ضبط وسم \fBMSG_DONTROUTE\fP في عملية \fBsend\fP(2) للمقبس. يتوقع وسماً منطقياً صحيحاً. .TP \fBSO_INCOMING_CPU\fP (قابل للجلب منذ لينكس 3.19، وقابل للضبط منذ لينكس 4.4) .\" getsockopt 2c8c56e15df3d4c2af3d656e44feb18789f75837 .\" setsockopt 70da268b569d32a9fddeea85dc18043de9d89f89 يضبط أو يجلب ألفة وحدة المعالجة المركزية للمقبس. يتوقع وسماً صحيحاً. .IP .in +4n .EX int cpu = 1; setsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU, &cpu, sizeof(cpu)); .EE .in .IP .\" .\" From an email conversation with Eric Dumazet: .\" >> Note that setting the option is not supported if SO_REUSEPORT is used. .\" > .\" > Please define "not supported". Does this yield an API diagnostic? .\" > If so, what is it? .\" > .\" >> Socket will be selected from an array, either by a hash or BPF program .\" >> that has no access to this information. .\" > .\" > Sorry -- I'm lost here. How does this comment relate to the proposed .\" > man page text above? .\" .\" Simply that : .\" .\" If an application uses both SO_INCOMING_CPU and SO_REUSEPORT, then .\" SO_REUSEPORT logic, selecting the socket to receive the packet, ignores .\" SO_INCOMING_CPU setting. بما أن جميع حزم التدفق الواحد (أي جميع الحزم لنفس الرباعية) تصل على طابور استقبال (RX) واحد مرتبط بوحدة معالجة مركزية معينة، فإن حالة الاستخدام النموذجية هي توظيف عملية استماع واحدة لكل طابور استقبال، بحيث يُعالج التدفق الوارد بواسطة مستمع على نفس وحدة المعالجة المركزية التي تعالج طابور الاستقبال. يوفر هذا سلوك NUMA الأمثل ويبقي \fIخبيئات\fP وحدة المعالجة المركزية نشطة. .TP \fBSO_INCOMING_NAPI_ID\fP (قابل للجلب منذ لينكس 4.12) .\" getsockopt 6d4339028b350efbf87c61e6d9e113e5373545c9 يعيد معرفاً فريداً على مستوى النظام يسمى NAPI ID مرتبط بطابور استقبال (RX) استُلمت عليه آخر حزمة مرتبطة بذلك المقبس. .IP يمكن للتطبيق استخدام هذا لتقسيم التدفقات الواردة بين خيوط العمل (worker threads) بناءً على طابور الاستقبال (RX queue) الذي استُقبلت عليه الحزم المرتبطة بتلك التدفقات. يتيح ذلك ربط كل خيط عمل بطابور استقبال عتادي في بطاقة الشبكة (NIC) وخدمة جميع طلبات الاتصال المستلمة على ذلك الطابور. هذا الربط بين خيط التطبيق وطابور بطاقة الشبكة العتادي يسهل تدفق البيانات من بطاقة الشبكة إلى التطبيق. .TP \fBSO_KEEPALIVE\fP تمكين إرسال رسائل الإبقاء على الاتصال (keep\-alive) في المقابس الموجهة للاتصال. يتوقع علامة منطقية صحيحة. .TP \fBSO_LINGER\fP يضبط خيار \fBSO_LINGER\fP أو يجلبه. المعطى هو هيكل \fIlinger\fP. .IP .in +4n .EX struct linger { int l_onoff; /* التريث نشط */ int l_linger; /* عدد ثواني التريث */ }; .EE .in .IP عند التمكين، لن يعود الاستدعاء \fBclose\fP(2) أو \fBshutdown\fP(2) حتى تُرسل جميع الرسائل الموجودة في الطابور للمقبس بنجاح أو الوصول إلى مهلة التريث. خلاف ذلك، يعود الاستدعاء فوراً ويُنفذ الإغلاق في الخلفية. عندما يُغلق المقبس كجزء من \fBexit\fP(2)، فإنه يتريث دائماً في الخلفية. .TP \fBSO_LOCK_FILTER\fP .\" commit d59577b6ffd313d0ab3be39cb1ab47e29bdc9182 عند الضبط، سيمنع هذا الخيار تغيير المرشحات المرتبطة بالمقبس. تتضمن هذه المرشحات أي مرشح ضُبط باستخدام خيارات المقبس \fBSO_ATTACH_FILTER\fP و \fBSO_ATTACH_BPF\fP و \fBSO_ATTACH_REUSEPORT_CBPF\fP و \fBSO_ATTACH_REUSEPORT_EBPF\fP. .IP حالة الاستخدام النموذجية هي قيام عملية ذات صلاحيات بإعداد مقبس خام (raw socket) (وهي عملية تتطلب قدرة \fBCAP_NET_RAW\fP)، وتطبيق مرشح تقييدي، وضبط الخيار \fBSO_LOCK_FILTER\fP، ثم إما التخلي عن صلاحياتها أو تمرير واصف ملف المقبس إلى عملية غير مخولة عبر مقبس نطاق UNIX. .IP بمجرد تمكين خيار \fBSO_LOCK_FILTER\fP، ستفشل محاولات تغيير أو إزالة المرشح المرفق بالمقبس، أو تعطيل خيار \fBSO_LOCK_FILTER\fP مع الخطأ \fBEPERM\fP. .TP \fBSO_MARK\fP (منذ لينكس 2.6.25) .\" commit 4a19ec5800fc3bb64e2d87c4d9fdd9e636086fe0 .\" and 914a9ab386a288d0f22252fc268ecbc048cdcbd5 يضبط العلامة (mark) لكل حزمة تُرسل عبر هذا المقبس (على غرار هدف MARK في netfilter ولكنها تعتمد على المقبس). يمكن استخدام تغيير العلامة للتوجيه المعتمد على العلامات بدون netfilter أو لترشيح الحزم. يتطلب ضبط هذا الخيار قدرة \fBCAP_NET_ADMIN\fP أو \fBCAP_NET_RAW\fP (منذ لينكس 5.17). .TP \fBSO_OOBINLINE\fP .\" don't document it because it can do too much harm. .\".B SO_NO_CHECK .\" The kernel has support for the SO_NO_CHECK socket .\" option (boolean: 0 == default, calculate checksum on xmit, .\" 1 == do not calculate checksum on xmit). .\" Additional note from Andi Kleen on SO_NO_CHECK (2010-08-30) .\" On Linux UDP checksums are essentially free and there's no reason .\" to turn them off and it would disable another safety line. .\" That is why I didn't document the option. إذا مُكّن هذا الخيار، توضع البيانات خارج النطاق (out\-of\-band) مباشرة في مجرى بيانات الاستقبال. خلاف ذلك، لا تُمرر البيانات خارج النطاق إلا عند ضبط العلامة \fBMSG_OOB\fP أثناء الاستقبال. .TP \fBSO_PASSCRED\fP تمكين أو تعطيل استقبال رسالة التحكم \fBSCM_CREDENTIALS\fP. لمزيد من المعلومات، انظر \fBunix\fP(7). .TP \fBSO_PASSSEC\fP تمكين أو تعطيل استقبال رسالة التحكم \fBSCM_SECURITY\fP. لمزيد من المعلومات، انظر \fBunix\fP(7). .TP \fBSO_PEEK_OFF\fP (منذ لينكس 3.4) .\" commit ef64a54f6e558155b4f149bb10666b9e914b6c54 يضبط هذا الخيار، المدعوم حالياً لمقابس \fBunix\fP(7) فقط، قيمة "إزاحة الاستراق" (peek offset) لاستدعاء النظام \fBrecv\fP(2) عند استخدامه مع علامة \fBMSG_PEEK\fP. .IP عند ضبط هذا الخيار على قيمة سالبة (يُضبط على \-1 لجميع المقابس الجديدة)، يُقدم السلوك التقليدي: استدعاء \fBrecv\fP(2) مع علامة \fBMSG_PEEK\fP سيسترق البيانات من مقدمة الطابور. .IP عند ضبط الخيار على قيمة أكبر من أو تساوي الصفر، فإن الاستراق التالي للبيانات الموجودة في طابور المقبس سيحدث عند إزاحة البايت المحددة بقيمة الخيار. وفي الوقت نفسه، ستزداد "إزاحة الاستراق" بعدد البايتات التي استُرقت من الطابور، بحيث يعيد الاستراق اللاحق البيانات التالية في الطابور. .IP إذا أُزيلت البيانات من مقدمة الطابور عبر استدعاء \fBrecv\fP(2) (أو ما شابه) بدون علامة \fBMSG_PEEK\fP، فستنقص "إزاحة الاستراق" بعدد البايتات التي أُزيلت. بمعنى آخر، استقبال البيانات بدون علامة \fBMSG_PEEK\fP سيؤدي إلى تعديل "إزاحة الاستراق" للحفاظ على الموضع النسبي الصحيح في البيانات المصطفة، بحيث يسترجع الاستراق اللاحق البيانات التي كان سيسترجعها لو لم تُزل البيانات. .IP بالنسبة لمقابس حزم البيانات (datagram)، إذا كانت "إزاحة الاستراق" تشير إلى منتصف حزمة، فستُوسم البيانات المعادة بعلامة \fBMSG_TRUNC\fP. .IP يوضح المثال التالي استخدام \fBSO_PEEK_OFF\fP. لنفرض أن مقبس دفق يحتوي على بيانات الإدخال المصطفة التالية: .IP .in +4n .EX aabbccddeeff .EE .in .IP تسلسل استدعاءات \fBrecv\fP(2) التالي سيكون له التأثير الموضح في التعليقات: .IP .in +4n .EX int ov = 4; // اضبط إزاحة الاستراق على 4 setsockopt(fd, SOL_SOCKET, SO_PEEK_OFF, &ov, sizeof(ov)); \& recv(fd, buf, 2, MSG_PEEK); // يسترق "cc"؛ الإزاحة تُضبط على 6 recv(fd, buf, 2, MSG_PEEK); // يسترق "dd"؛ الإزاحة تُضبط على 8 recv(fd, buf, 2, 0); // يقرأ "aa"؛ الإزاحة تُضبط على 6 recv(fd, buf, 2, MSG_PEEK); // يسترق "ee"؛ الإزاحة تُضبط على 8 .EE .in .TP \fBSO_PEERCRED\fP يعيد بيانات استيثاق (credentials) العملية النظيرة المتصلة بهذا المقبس. لمزيد من التفاصيل، انظر \fBunix\fP(7). .TP \fBSO_PEERSEC\fP(2const) .TP \fBSO_PRIORITY\fP .\" For .\" .BR ip (7), .\" this also sets the IP type-of-service (TOS) field for outgoing packets. يضبط الأولوية المحددة في البروتوكول لجميع الحزم التي ستُرسل على هذا المقبس. يستخدم لينكس هذه القيمة لترتيب طوابير الشبكة: قد تُعالج الحزم ذات الأولوية الأعلى أولاً اعتماداً على نظام جدولة الطوابير (queueing discipline) للجهاز المحدد. يتطلب ضبط أولوية خارج النطاق من 0 إلى 6 قدرة \fBCAP_NET_ADMIN\fP. .TP \fBSO_PROTOCOL\fP (منذ لينكس 2.6.32) يسترجع بروتوكول المقبس كعدد صحيح، ويعيد قيمة مثل \fBIPPROTO_SCTP\fP. انظر \fBsocket\fP(2) للتفاصيل. خيار المقبس هذا للقراءة فقط. .TP \fBSO_RCVBUF\fP .\" Most (all?) other implementations do not do this -- MTK, Dec 05 .\" The following thread on LMKL is quite informative: .\" getsockopt/setsockopt with SO_RCVBUF and SO_SNDBUF "non-standard" behavior .\" 17 July 2012 .\" http://thread.gmane.org/gmane.linux.kernel/1328935 يضبط أو يجلب الحد الأقصى لخبيئة استقبال المقبس بالبايت. تضاعف النواة هذه القيمة (لتوفير مساحة للأعمال الإدارية العامة) عندما تُضبط باستخدام \fBsetsockopt\fP(2)، وتُعاد هذه القيمة المضاعفة بواسطة \fBgetsockopt\fP(2). تُضبط القيمة المبدئية بواسطة الملف \fI/proc/sys/net/core/rmem_default\fP، ويُضبط الحد الأقصى المسموح به بواسطة الملف \fI/proc/sys/net/core/rmem_max\fP. الحد الأدنى للقيمة (المضاعفة) لهذا الخيار هو 256. .TP \fBSO_RCVBUFFORCE\fP (منذ لينكس 2.6.14) باستخدام خيار المقبس هذا، يمكن لعملية ذات صلاحيات (\fBCAP_NET_ADMIN\fP) القيام بنفس مهمة \fBSO_RCVBUF\fP، ولكن يمكن تجاوز حد \fIrmem_max\fP. .TP \fBSO_RCVLOWAT\fP .TQ \fBSO_SNDLOWAT\fP يحدد الحد الأدنى لعدد البايتات في الخبيئة حتى تقوم طبقة المقبس بتمرير البيانات إلى البروتوكول (\fBSO_SNDLOWAT\fP) أو إلى المستخدم عند الاستقبال (\fBSO_RCVLOWAT\fP). تُبدأ هاتان القيمتان بالرقم 1. الخيار \fBSO_SNDLOWAT\fP غير قابل للتغيير في لينكس (يفشل \fBsetsockopt\fP(2) مع الخطأ \fBENOPROTOOPT\fP). الخيار \fBSO_RCVLOWAT\fP قابل للتغيير فقط منذ لينكس 2.4. .IP .\" Tested on kernel 2.6.14 -- mtk, 30 Nov 05 .\" commit c7004482e8dcb7c3c72666395cfa98a216a4fb70 قبل لينكس 2.6.28، لم تكن الاستدعاءات \fBselect\fP(2) و \fBpoll\fP(2) و \fBepoll\fP(7) تحترم إعداد \fBSO_RCVLOWAT\fP في لينكس، وكانت تشير إلى أن المقبس قابل للقراءة حتى لو توفر بايت واحد فقط من البيانات. القراءة اللاحقة من المقبس كانت ستتوقف (block) حتى تتوفر بايتات بقدر \fBSO_RCVLOWAT\fP. منذ لينكس 2.6.28، تشير \fBselect\fP(2) و \fBpoll\fP(2) و \fBepoll\fP(7) إلى أن المقبس قابل للقراءة فقط إذا توفر على الأقل عدد بايتات \fBSO_RCVLOWAT\fP. .TP \fBSO_RCVTIMEO\fP .TQ \fBSO_SNDTIMEO\fP .\" Not implemented in Linux 2.0. .\" Implemented in Linux 2.1.11 for getsockopt: always return a zero struct. .\" Implemented in Linux 2.3.41 for setsockopt, and actually used. .\" in fact to EAGAIN تحديد مهلات الاستقبال أو الإرسال قبل الإبلاغ عن خطأ. المعطى هو \fIstruct timeval\fP. إذا توقفت دالة إدخال أو إخراج لهذه الفترة الزمنية، وكان قد أُرسلت أو استُقبلت بيانات، فستكون القيمة المعادة لتلك الدالة هي كمية البيانات المنقولة؛ إذا لم تُنقل أي بيانات وتم الوصول إلى المهلة، فستُعاد القيمة \-1 مع ضبط \fIerrno\fP على \fBEAGAIN\fP أو \fBEWOULDBLOCK\fP، أو \fBEINPROGRESS\fP (بالنسبة لـ \fBconnect\fP(2)) تماماً كما لو كان المقبس قد حُدد ليكون غير متوقف (nonblocking). إذا ضُبطت المهلة على الصفر (المبدئي)، فلن تنتهي مهلة العملية أبداً. للمهلات تأثير فقط على استدعاءات النظام التي تنفذ عمليات إدخال/إخراج للمقبس (مثل \fBaccept\fP(2) و \fBconnect\fP(2) و \fBread\fP(2) و \fBrecvmsg\fP(2) و \fBsend\fP(2) و \fBsendmsg\fP(2))؛ وليس للمهلات تأثير على \fBselect\fP(2) و \fBpoll\fP(2) و \fBepoll_wait\fP(2)، وما إلى ذلك. .TP \fBSO_REUSEADDR\fP .\" commit c617f398edd4db2b8567a28e899a88f8f574798d .\" https://lwn.net/Articles/542629/ يشير إلى أن القواعد المستخدمة في التحقق من صحة العناوين المقدمة في استدعاء \fBbind\fP(2) يجب أن تسمح بإعادة استخدام العناوين المحلية. بالنسبة لمقابس \fBAF_INET\fP، يعني هذا أن المقبس قد يربط (bind)، إلا عندما يكون هناك مقبس استماع نشط مربوط بالعنوان. عندما يُربط مقبس الاستماع بـ \fBINADDR_ANY\fP مع منفذ محدد، فلا يمكن الربط بهذا المنفذ لأي عنوان محلي. المعطى هو علامة منطقية صحيحة. .TP \fBSO_REUSEPORT\fP (منذ لينكس 3.9) يسمح لعدة مقابس \fBAF_INET\fP أو \fBAF_INET6\fP بالارتباط بنفس عنوان المقبس تماماً. يجب ضبط هذا الخيار في كل مقبس (بما في ذلك المقبس الأول) قبل استدعاء \fBbind\fP(2) على المقبس. لمنع اختطاف المنافذ، يجب أن يكون لجميع العمليات التي تربط بنفس العنوان نفس معرف المستخدم الفعلي (UID). يمكن استخدام هذا الخيار مع كل من مقابس TCP و UDP. .IP بالنسبة لمقابس TCP، يسمح هذا الخيار بتحسين توزيع حمل \fBaccept\fP(2) في خادم متعدد الخيوط باستخدام مقبس استماع متميز لكل خيط. يوفر هذا توزيعاً محسناً للحمل مقارنة بالتقنيات التقليدية مثل استخدام خيط واحد يقوم بـ \fBaccept\fP(2) ويوزع الاتصالات، أو وجود خيوط متعددة تتنافس للقيام بـ \fBaccept\fP(2) من نفس المقبس. .IP بالنسبة لمقابس UDP، يمكن أن يوفر استخدام هذا الخيار توزيعاً أفضل لحزم البيانات الواردة إلى عدة عمليات (أو خيوط) مقارنة بالتقنية التقليدية التي تتنافس فيها عدة عمليات لاستقبال حزم البيانات على نفس المقبس. .TP \fBSO_RXQ_OVFL\fP (منذ لينكس 2.6.33) .\" commit 3b885787ea4112eaa80945999ea0901bf742707f يشير إلى وجوب إرفاق رسالة مساعدة (cmsg) بقيمة 32 بت غير موقعة بكتل خبيئة المقبس (skbs) المستلمة تشير إلى عدد الحزم التي أسقطها المقبس منذ إنشائه. .TP \fBSO_SELECT_ERR_QUEUE\fP (منذ لينكس 3.10) .\" commit 7d4c04fc170087119727119074e72445f2bb192b .\" Author: Keller, Jacob E .\" It does not affect wake up. عند ضبط هذا الخيار على مقبس، فإن حالة خطأ في المقبس تؤدي إلى إشعار ليس فقط عبر مجموعة \fIexceptfds\fP في \fBselect\fP(2). وبالمثل، يعيد \fBpoll\fP(2) أيضاً \fBPOLLPRI\fP كلما أُعيد حدث \fBPOLLERR\fP. .IP .\" commit 6e5d58fdc9bedd0255a8 .\" ("skbuff: Fix not waking applications when errors are enqueued") خلفية: أُضيف هذا الخيار عندما كان الاستيقاظ عند حالة خطأ يحدث فقط عبر مجموعتي \fIreadfds\fP و \fIwritefds\fP في \fBselect\fP(2). أُضيف الخيار للسماح بمراقبة حالات الخطأ عبر معطى \fIexceptfds\fP دون الحاجة لاستلام إشعارات (عبر \fIreadfds\fP) للبيانات العادية التي يمكن قراءتها من المقبس في نفس الوقت. بعد تغييرات في لينكس 4.16، لم يعد استخدام هذه العلامة لتحقيق الإشعارات المطلوبة ضرورياً. ومع ذلك، أُبقي على هذا الخيار للتوافق مع الإصدارات السابقة. .TP \fBSO_SNDBUF\fP .\" Most (all?) other implementations do not do this -- MTK, Dec 05 .\" See also the comment to SO_RCVBUF (17 Jul 2012 LKML mail) يضبط أو يجلب الحد الأقصى لخبيئة إرسال المقبس بالبايت. تضاعف النواة هذه القيمة (لتوفير مساحة للأعمال الإدارية العامة) عندما تُضبط باستخدام \fBsetsockopt\fP(2)، وتُعاد هذه القيمة المضاعفة بواسطة \fBgetsockopt\fP(2). تُضبط القيمة المبدئية بواسطة الملف \fI/proc/sys/net/core/wmem_default\fP ويُضبط الحد الأقصى المسموح به بواسطة الملف \fI/proc/sys/net/core/wmem_max\fP. الحد الأدنى للقيمة (المضاعفة) لهذا الخيار هو 2048. .TP \fBSO_SNDBUFFORCE\fP (منذ لينكس 2.6.14) باستخدام خيار المقبس هذا، يمكن لعملية ذات صلاحيات (\fBCAP_NET_ADMIN\fP) القيام بنفس مهمة \fBSO_SNDBUF\fP، ولكن يمكن تجاوز حد \fIwmem_max\fP. .TP \fBSO_TIMESTAMP\fP تمكين أو تعطيل استلام رسالة التحكم \fBSO_TIMESTAMP\fP. تُرسل رسالة تحكم الطابع الزمني بمستوى \fBSOL_SOCKET\fP ونوع \fBSCM_TIMESTAMP\fP في \fIcmsg_type\fP. حقل \fIcmsg_data\fP هو \fIstruct timeval\fP يشير إلى وقت استقبال آخر حزمة مُررت للمستخدم في هذا الاستدعاء. انظر \fBcmsg\fP(3) لمزيد من التفاصيل حول رسائل التحكم. .TP \fBSO_TIMESTAMPNS\fP (منذ لينكس 2.6.22) .\" commit 92f37fd2ee805aa77925c1e64fd56088b46094fc تمكين أو تعطيل استلام رسالة التحكم \fBSO_TIMESTAMPNS\fP. تُرسل رسالة تحكم الطابع الزمني بمستوى \fBSOL_SOCKET\fP ونوع \fBSCM_TIMESTAMPNS\fP في \fIcmsg_type\fP. حقل \fIcmsg_data\fP هو \fIstruct timespec\fP يشير إلى وقت استقبال آخر حزمة مُررت للمستخدم في هذا الاستدعاء. الساعة المستخدمة للطابع الزمني هي \fBCLOCK_REALTIME\fP. انظر \fBcmsg\fP(3) لمزيد من التفاصيل حول رسائل التحكم. .IP لا يمكن للمقبس الخلط بين \fBSO_TIMESTAMP\fP و \fBSO_TIMESTAMPNS\fP: فالوضعان متنافيان. .TP \fBSO_TYPE\fP يجلب نوع المقبس كعدد صحيح (مثل \fBSOCK_STREAM\fP). خيار المقبس هذا للقراءة فقط. .TP \fBSO_BUSY_POLL\fP (منذ لينكس 3.11) يضبط الوقت التقريبي بالميكروثانية لعملية استطلاع الانشغال (busy poll) عند الاستقبال المتوقف عندما لا تتوفر بيانات. يتطلب زيادة هذه القيمة قدرة \fBCAP_NET_ADMIN\fP. يُتحكم في القيمة المبدئية لهذا الخيار بواسطة الملف \fI/proc/sys/net/core/busy_read\fP. .IP تحدد القيمة في الملف \fI/proc/sys/net/core/busy_poll\fP المدة التي سيقوم فيها \fBselect\fP(2) و \fBpoll\fP(2) باستطلاع الانشغال عند العمل على مقابس ضُبط فيها \fBSO_BUSY_POLL\fP ولم يُعثر على أحداث للإبلاغ عنها. .IP في كلتا الحالتين، لن يُجرى استطلاع الانشغال إلا عندما يكون المقبس قد استقبل بيانات لآخر مرة من جهاز شبكة يدعم هذا الخيار. .IP بينما قد يحسن استطلاع الانشغال من زمن الوصول (latency) لبعض التطبيقات، يجب توخي الحذر عند استخدامه لأن ذلك سيزيد من استهلاك المعالج واستهلاك الطاقة. .SS الإشارات عند الكتابة على مقبس موجه للاتصال أُغلق (من قبل الطرف المحلي أو البعيد)، تُرسل الإشارة \fBSIGPIPE\fP إلى العملية الكاتبة ويُعاد الخطأ \fBEPIPE\fP. لا تُرسل الإشارة عندما يحدد استدعاء الكتابة علامة \fBMSG_NOSIGNAL\fP. .P عند الطلب باستخدام \fBFIOSETOWN\fP \fBfcntl\fP(2) أو \fBSIOCSPGRP\fP \fBioctl\fP(2)، تُرسل الإشارة \fBSIGIO\fP عند وقوع حدث إدخال/إخراج. من الممكن استخدام \fBpoll\fP(2) أو \fBselect\fP(2) في معالج الإشارة لمعرفة أي مقبس وقع عليه الحدث. كبديل (في لينكس 2.2)، يمكن ضبط إشارة وقت حقيقي باستخدام \fBF_SETSIG\fP \fBfcntl\fP(2)؛ سيُستدعى معالج إشارة الوقت الحقيقي مع واصف الملف في حقل \fIsi_fd\fP لهيكل \fIsiginfo_t\fP الخاص به. انظر \fBfcntl\fP(2) لمزيد من المعلومات. .P .\" .SS Ancillary messages في بعض الظروف (مثل وصول عمليات متعددة إلى مقبس واحد)، قد تكون الحالة التي تسببت في \fBSIGIO\fP قد اختفت بالفعل عندما تستجيب العملية للإشارة. إذا حدث هذا، يجب على العملية الانتظار مرة أخرى لأن لينكس سيعيد إرسال الإشارة لاحقاً. .SS "واجهات /proc" يمكن الوصول إلى معلمات شبكة المقابس الجوهرية عبر الملفات الموجودة في الدليل \fI/proc/sys/net/core/\fP. .TP \fIrmem_default\fP يحتوي على الإعداد المبدئي بالبايت لخبيئة استقبال المقبس. .TP \fIrmem_max\fP يحتوي على الحد الأقصى لحجم خبيئة استقبال المقبس بالبايت والذي يمكن للمستخدم ضبطه باستخدام خيار المقبس \fBSO_RCVBUF\fP. .TP \fIwmem_default\fP يحتوي على الإعداد المبدئي بالبايت لخبيئة إرسال المقبس. .TP \fIwmem_max\fP يحتوي على الحد الأقصى لحجم خبيئة إرسال المقبس بالبايت والذي يمكن للمستخدم ضبطه باستخدام خيار المقبس \fBSO_SNDBUF\fP. .TP \fImessage_cost\fP .TQ \fImessage_burst\fP اضبط مرشح دلو العلامات (token bucket filter) المستخدم للحد من تحميل رسائل التحذير الناتجة عن أحداث الشبكة الخارجية. .TP \fInetdev_max_backlog\fP الحد الأقصى لعدد الحزم في طابور الإدخال الشامل. .TP \fIoptmem_max\fP .\" netdev_fastroute is not documented because it is experimental الحد الأقصى لحجم البيانات المساعدة وبيانات تحكم المستخدم مثل iovecs لكل مقبس. .SS Ioctls يمكن الوصول إلى هذه العمليات باستخدام \fBioctl\fP(2): .P .in +4n .EX \fIerror\fP\fB = ioctl(\fP\fIip_socket\fP\fB, \fP\fIioctl_type\fP\fB, \fP\fI&value_result\fP\fB);\fP .EE .in .TP \fBSIOCGSTAMP\fP .\" يعيد \fIstruct timeval\fP مع طابع زمن الاستقبال لآخر حزمة مُررت للمستخدم. هذا مفيد لقياسات وقت الرحلة الكاملة (round trip time) بدقة. انظر \fBsetitimer\fP(2) لوصف \fIstruct timeval\fP. يجب استخدام ioctl هذا فقط إذا لم تُضبط خيارات المقبس \fBSO_TIMESTAMP\fP و \fBSO_TIMESTAMPNS\fP على المقبس. خلاف ذلك، فإنه يعيد الطابع الزمني لآخر حزمة استُقبلت أثناء عدم ضبط \fBSO_TIMESTAMP\fP و \fBSO_TIMESTAMPNS\fP، أو يفشل إذا لم تُستقبل مثل هذه الحزمة، (أي يعيد \fBioctl\fP(2) القيمة \-1 مع ضبط \fIerrno\fP على \fBENOENT\fP). .TP \fBSIOCSPGRP\fP اضبط العملية أو مجموعة العمليات التي ستتلقى إشارات \fBSIGIO\fP أو \fBSIGURG\fP عندما يصبح الإدخال/الإخراج متاحًا أو تتوفر بيانات عاجلة. المُعطى عبارة عن مؤشر إلى \fIpid_t\fP. لمزيد من التفاصيل، راجع وصف \fBF_SETOWN\fP في \fBfcntl\fP(2). .TP \fBFIOASYNC\fP غيّر علم \fBO_ASYNC\fP لتمكين أو تعطيل وضع الإدخال/الإخراج غير المتزامن للمقبس. يعني وضع الإدخال/الإخراج غير المتزامن إرسال إشارة \fBSIGIO\fP أو الإشارة المضبوطة بـ \fBF_SETSIG\fP عند وقوع حدث إدخال/إخراج جديد. .IP .\" المُعطى هو علم منطقي صحيح. (هذه العملية مرادفة لاستخدام \fBfcntl\fP(2) لضبط علم \fBO_ASYNC\fP.) .TP \fBSIOCGPGRP\fP احصل على العملية أو مجموعة العمليات الحالية التي تتلقى إشارات \fBSIGIO\fP أو \fBSIGURG\fP، أو 0 في حال لم يُضبط أي منها. .P عمليات \fBfcntl\fP(2) الصالحة: .TP \fBFIOGETOWN\fP مثل \fBSIOCGPGRP\fP \fBioctl\fP(2) تمامًا. .TP \fBFIOSETOWN\fP مثل \fBSIOCSPGRP\fP \fBioctl\fP(2) تمامًا. .SH الإصدارات قُدم \fBSO_BINDTODEVICE\fP في لينكس 2.0.30. و \fBSO_PASSCRED\fP جديد في لينكس 2.2. قُدمت واجهات \fI/proc\fP في لينكس 2.2. دُعم \fBSO_RCVTIMEO\fP و \fBSO_SNDTIMEO\fP منذ لينكس 2.3.41. سابقًا، كانت المُهل الزمنية ثابتة في إعدادات مخصصة للبروتوكول، ولم يكن بالإمكان قراءتها أو كتابتها. .SH ملاحظات يفترض لينكس أن نصف مخزن الإرسال/الاستقبال يُستخدم لهياكل النواة (\fIkernel\fP) الداخلية؛ لذا فإن القيم في ملفات \fI/proc\fP المقابلة هي ضعف ما يمكن ملاحظته على السلك. .P .\" .SH AUTHORS .\" This man page was written by Andi Kleen. يسمح لينكس بإعادة استخدام المنفذ فقط مع خيار \fBSO_REUSEADDR\fP عندما يكون هذا الخيار قد ضُبط في كل من البرنامج السابق الذي نفذ \fBbind\fP(2) على المنفذ وفي البرنامج الذي يريد إعادة استخدام المنفذ. يختلف هذا عن بعض التطبيقات (مثل FreeBSD) حيث يحتاج البرنامج اللاحق فقط لضبط خيار \fBSO_REUSEADDR\fP. عادة ما يكون هذا الاختلاف غير مرئي، لأن برامج الخوادم، على سبيل المثال، صُممت لتضبط هذا الخيار دائمًا. .SH "انظر أيضًا" \fBwireshark\fP(1), \fBbpf\fP(2), \fBconnect\fP(2), \fBgetsockopt\fP(2), \fBsetsockopt\fP(2), \fBsocket\fP(2), \fBpcap\fP(3), \fBaddress_families\fP(7), \fBcapabilities\fP(7), \fBddp\fP(7), \fBip\fP(7), \fBipv6\fP(7), \fBpacket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBunix\fP(7), \fBtcpdump\fP(8) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .