مقبس الشبكة
مقبس الشبكة هو بنية برمجية ضمن عقدة شبكة حاسوبية ، يعمل كنقطة نهاية لإرسال واستقبال البيانات عبر الشبكة. تُحدد بنية المقبس وخصائصه بواسطة واجهة برمجة التطبيقات (API) الخاصة ببنية الشبكة. تُنشأ المقابس فقط خلال دورة حياة عملية تطبيق يعمل على العقدة.
بسبب توحيد بروتوكولات TCP/IP في تطوير الإنترنت ، يُستخدم مصطلح " مأخذ الشبكة" بشكل شائع في سياق مجموعة بروتوكولات الإنترنت، ولذلك يُشار إليه غالبًا باسم " مأخذ الإنترنت" . في هذا السياق، يُعرَّف المأخذ خارجيًا للأجهزة المضيفة الأخرى بواسطة عنوان المأخذ الخاص به ، والذي يتكون من بروتوكول النقل ، وعنوان IP ، ورقم المنفذ .
يُستخدم مصطلح socket أيضًا لنقطة نهاية البرنامج للاتصال بين العمليات الداخلية للعقدة (IPC)، والذي غالبًا ما يستخدم نفس واجهة برمجة التطبيقات (API) مثل مقبس الشبكة.
يستخدم
يُشابه استخدام مصطلح "المقبس" في البرمجيات وظيفة الموصل الكهربائي الأنثوي ، وهو جهاز في الأجهزة يُستخدم للتواصل بين العُقد المتصلة بكابل كهربائي . وبالمثل، يشير مصطلح " المنفذ" إلى نقاط النهاية المادية الخارجية في عقدة أو جهاز.
تُنشئ واجهة برمجة التطبيقات (API) الخاصة بمجموعة بروتوكولات الشبكة مُعرّفًا لكل مقبس يُنشئه التطبيق، ويُشار إليه عادةً باسم مُعرّف المقبس . في أنظمة التشغيل الشبيهة بنظام يونكس ، يُعد هذا المُعرّف نوعًا من مُعرّفات الملفات . ويقوم التطبيق بتخزينه لاستخدامه في كل عملية قراءة وكتابة على قناة الاتصال.
عند إنشاء مقبس الشبكة باستخدام واجهة برمجة التطبيقات (API)، يتم ربطه بمجموعة من بروتوكولات الشبكة المستخدمة في الإرسال، وعنوان الشبكة الخاص بالمضيف، ورقم المنفذ . المنافذ عبارة عن موارد مرقمة تمثل نوعًا آخر من بنية البرمجيات الخاصة بالعقدة. تُستخدم المنافذ كأنواع خدمات، وبمجرد إنشائها بواسطة عملية ما، تعمل كمكون موقع قابل للعنونة خارجيًا (من الشبكة)، مما يسمح للمضيفين الآخرين بإنشاء اتصالات.
قد يتم تخصيص منافذ الشبكة للاتصالات الدائمة للتواصل بين عقدتين، أو قد تشارك في الاتصالات غير المتصلة والاتصالات متعددة البث .
عملياً، ونظراً لانتشار بروتوكولات TCP/IP المستخدمة على الإنترنت، فإن مصطلح " مقبس الشبكة" يشير عادةً إلى استخدامه مع بروتوكول الإنترنت (IP). ولذلك يُطلق عليه أيضاً اسم "مقبس الإنترنت" .
عناوين المقابس
يمكن للتطبيق التواصل مع عملية بعيدة عبر تبادل البيانات باستخدام بروتوكول TCP/IP، وذلك بمعرفة نوع البروتوكول وعنوان IP ورقم المنفذ. يُعرف هذا المزيج عادةً بعنوان المقبس . وهو بمثابة مُعرّف الوصول إلى مقبس الشبكة من خلال الشبكة. تُنشئ العملية البعيدة مقبس شبكة في مثيلها الخاص من حزمة البروتوكولات، وتستخدم واجهة برمجة تطبيقات الشبكة للاتصال بالتطبيق، مُقدّمةً عنوان مقبسها الخاص ليستخدمه التطبيق.
تطبيق
تُعدّ حزمة البروتوكولات ، التي يوفرها نظام التشغيل عادةً (بدلاً من مكتبة منفصلة مثلاً)، مجموعة من الخدمات التي تُمكّن العمليات من التواصل عبر الشبكة باستخدام البروتوكولات التي تُنفذها هذه الحزمة. يقوم نظام التشغيل بتوجيه حمولة حزم بروتوكول الإنترنت الواردة إلى التطبيق المُناسب عن طريق استخراج معلومات عنوان المقبس من رؤوس بروتوكول الإنترنت وبروتوكول النقل، ثم إزالة الرؤوس من بيانات التطبيق.
تُسمى واجهة برمجة التطبيقات (API) التي تستخدمها البرامج للتواصل مع حزمة البروتوكولات، باستخدام مقابس الشبكة، واجهة برمجة تطبيقات المقابس . ويُطلق على تطوير برامج التطبيقات التي تستخدم هذه الواجهة اسم برمجة المقابس أو برمجة الشبكة . وتعتمد واجهات برمجة تطبيقات مقابس الإنترنت عادةً على معيار مقابس بيركلي . في معيار مقابس بيركلي، تُعتبر المقابس نوعًا من مُعرّفات الملفات ، وذلك استنادًا إلى فلسفة يونكس القائلة بأن "كل شيء ملف"، والتشابه بين المقابس والملفات. فلكل منهما وظائف القراءة والكتابة والفتح والإغلاق. عمليًا، تُؤدي الاختلافات إلى تجاوز هذا التشابه، وتُستخدم واجهات مختلفة (للإرسال والاستقبال) على المقبس الواحد. في الاتصال بين العمليات ، يمتلك كل طرف عادةً مقبسه الخاص.
في بروتوكولات الإنترنت القياسية TCP وUDP، يُمثل عنوان المقبس مزيجًا من عنوان IP ورقم المنفذ ، تمامًا كما يُمثل أحد طرفي اتصال الهاتف مزيجًا من رقم الهاتف ورقم داخلي مُحدد . لا يشترط أن يكون للمقابس عنوان مصدر، على سبيل المثال، لإرسال البيانات فقط، ولكن إذا ربط برنامج ما مقبسًا بعنوان مصدر، فيمكن استخدام المقبس لاستقبال البيانات المُرسلة إلى ذلك العنوان. وبناءً على هذا العنوان، تُرسل مقابس الإنترنت حزم البيانات الواردة إلى عملية التطبيق المُناسبة .
يشير مصطلح "المقبس" غالبًا إلى مقبس الإنترنت أو مقبس TCP. ويتميز مقبس الإنترنت بالخصائص التالية على الأقل:
- عنوان المقبس المحلي، ويتكون من عنوان IP المحلي ورقم المنفذ (بالنسبة لبروتوكولي TCP وUDP، ولكن ليس IP).
- البروتوكول: بروتوكول نقل البيانات، مثل TCP أو UDP أو IP الخام. هذا يعني أن نقاط النهاية (المحلية أو البعيدة) التي تستخدم منفذ TCP رقم 53 ومنفذ UDP رقم 53 تُعتبر مقابس منفصلة، بينما لا يحتوي بروتوكول IP على منافذ.
- يحتوي المقبس الذي تم توصيله بمقبس آخر، على سبيل المثال، أثناء إنشاء اتصال TCP، على عنوان مقبس بعيد أيضًا.
تعريف
إن الفروقات بين المقبس (التمثيل الداخلي)، ووصف المقبس (المعرف المجرد)، وعنوان المقبس (العنوان العام) دقيقة، ولا يتم التمييز بينها دائمًا في الاستخدام اليومي. علاوة على ذلك، تختلف تعريفات المقبس بين المؤلفين. ففي طلب التعليقات الصادر عن فريق هندسة الإنترنت (IETF) بشأن معايير الإنترنت ، وفي العديد من الكتب الدراسية، وكذلك في هذه المقالة، يشير مصطلح المقبس إلى كيان يتم تحديده بشكل فريد بواسطة رقم المقبس. وفي كتب دراسية أخرى، [ 1 ] يشير مصطلح المقبس إلى عنوان مقبس محلي، أي "مزيج من عنوان IP ورقم منفذ". في التعريف الأصلي للمقبس الوارد في RFC 147، [ 2 ] كما كان مرتبطًا بشبكة ARPA في عام 1971، "يتم تحديد المقبس كرقم مكون من 32 بت، حيث تحدد المقابس الزوجية مقابس الاستقبال، والمقابس الفردية تحدد مقابس الإرسال". أما اليوم، فإن اتصالات المقابس ثنائية الاتجاه.
في نظام التشغيل والتطبيق الذي أنشأ المقبس، تتم الإشارة إلى المقبس بواسطة قيمة عددية فريدة تسمى واصف المقبس .
أدوات
في أنظمة التشغيل الشبيهة بنظام Unix و Microsoft Windows ، يتم استخدام أدوات سطر الأوامر netstat أو ss [ 3 ] لسرد المقابس القائمة والمعلومات ذات الصلة.
مثال
يُرسل هذا المثال المكتوب بلغة جافا ، والمُصمم وفقًا لواجهة Berkeley socket ، السلسلة النصية "Hello, world!" عبر بروتوكول TCP إلى منفذ 80المضيف ذي العنوان 203.0.113.0. ويُوضح إنشاء مقبس، وربطه بالمضيف البعيد، وإرسال السلسلة النصية، ثم إغلاق المقبس.
package org.wikipedia.examples ;استيراد java.io.IOException ؛ استيراد java.io.PrintWriter ؛ استيراد java.net.InetAddress ؛ استيراد java.net.Socket ؛ استيراد java.net.SocketException ؛public class Main { public static void main ( String [] args ) { InetAddress address = InetAddress . getByName ( "203.0.113.0" );// IP = 203.0.113.0، المنفذ = 80 // يتم إغلاق المقبس تلقائيًا في نهاية كتلة try // يستخدم java.net.Socket بروتوكول TCP، بينما يستخدم java.net.DatagramSocket بروتوكول UDP try ( Socket socket = new Socket ( address , 80 )) { // يكتب إلى دفق إخراج المقبس، مع تمكين التفريغ التلقائي PrintWriter socketOut = new PrintWriter ( socket . getOutputStream (), true ); socketOut . println ( "Hello, world!" ); } catch ( SocketException e ) { System . out . printf ( "حدث خطأ أثناء الوصول إلى المقبس: %s%n" , e . getMessage ()); e . printStackTrace (); } catch ( IOException e ) { System . out . printf ( "حدث خطأ أثناء الكتابة إلى المقبس: %s%n" , e . getMessage ()); e . printStackTrace (); } } }سيكون استخدام مقابس بيركلي التقليدية في لغة C على النحو التالي:
#include <stdio.h> #include <stdlib.h> #include <string.h>#include <arpa/inet.h> #include <unistd.h>int main () { char message [] = "Hello, World!" ;// إنشاء مقبس int sockfd = socket ( AF_INET , SOCK_STREAM , 0 ); if ( sockfd == -1 ) { fprintf ( stderr , "فشل إنشاء المقبس! \n " ); return 1 ; }// تعيين عنوان الخادم struct sockaddr_in server_addr = { . sin_family = AF_INET , // عائلة العنوان . sin_port = htons ( 80 ), // رقم المنفذ (مُحوّل إلى ترتيب بايتات الشبكة) . sin_addr . s_addr = inet_addr ( "203.0.113.0" ), // عنوان IP };// الاتصال بالخادم إذا ( connect ( sockfd , ( struct sockaddr * ) & server_addr , sizeof ( server_addr )) == -1 ) { fprintf ( stderr , "فشل الاتصال! \n " ); return 1 ; }// إرسال الرسالة send ( sockfd , message , strlen ( message ), 0 ); printf ( "تم إرسال الرسالة! \n " );// إغلاق المقبس close ( sockfd ); return 0 ; }الأنواع
تتوفر عدة أنواع من مقابس الإنترنت:
- مقابس بيانات البيانات
- المقابس غير المتصلة ، التي تستخدم بروتوكول بيانات المستخدم (UDP). [ 4 ] يتم توجيه كل حزمة بيانات مُرسلة أو مُستلمة عبر مقبس بيانات بشكل فردي. لا يُضمن الترتيب والموثوقية مع مقابس البيانات، لذا قد تصل حزم البيانات المُرسلة من جهاز أو عملية إلى أخرى بأي ترتيب، أو قد لا تصل على الإطلاق. قد يتطلب إرسال البث عبر مقبس بيانات تهيئة خاصة. [ 5 ] لاستقبال حزم البث، يجب ألا يكون مقبس البيانات مرتبطًا بعنوان محدد، مع العلم أنه في بعض التطبيقات، قد يتم استقبال حزم البث حتى عند ربط مقبس البيانات بعنوان محدد. [ 6 ]
- مقابس البث
- تستخدم المقابس الموجهة للاتصال بروتوكول التحكم بالنقل (TCP) أو بروتوكول التحكم بنقل البيانات المتدفقة (SCTP) أو بروتوكول التحكم بازدحام حزم البيانات (DCCP). يوفر مقبس التدفق تدفقًا متسلسلًا وفريدًا للبيانات الخالية من الأخطاء دون حدود للسجلات، مع آليات محددة جيدًا لإنشاء الاتصالات وإنهائها والإبلاغ عن الأخطاء. ينقل مقبس التدفق البيانات بشكل موثوق ومنظم، مع إمكانية نقلها خارج النطاق . على الإنترنت، تُنفذ مقابس التدفق عادةً باستخدام بروتوكول TCP لتمكين التطبيقات من العمل عبر أي شبكة تستخدم بروتوكول TCP/IP.
- المقابس الخام
- يُتيح هذا النظام إرسال واستقبال حزم بروتوكول الإنترنت (IP) مباشرةً دون الحاجة إلى أي تنسيق خاص بطبقة النقل. في أنواع المقابس الأخرى، يتم تغليف البيانات تلقائيًا وفقًا لبروتوكول طبقة النقل المُختار (مثل TCP أو UDP)، ولا يعلم مستخدم المقبس بوجود رؤوس البروتوكول التي يتم بثها مع البيانات. عند القراءة من مقبس خام، تُضمّن الرؤوس عادةً. أما عند إرسال الحزم من مقبس خام، فإن إضافة الرأس تلقائيًا أمر اختياري.
- تدعم معظم واجهات برمجة تطبيقات المقابس (APIs)، مثل تلك المبنية على مقابس بيركلي، المقابس الخام. صدر نظام التشغيل ويندوز إكس بي عام ٢٠٠١ مع دعم المقابس الخام المُدمج في واجهة وينسوك ، ولكن بعد ثلاث سنوات، قيّدت مايكروسوفت دعم وينسوك للمقابس الخام لأسباب أمنية. [ ٧ ]
- تُستخدم المقابس الخام في تطبيقات أمنية مثل Nmap . ومن استخداماتها تنفيذ بروتوكولات طبقة النقل الجديدة في مساحة المستخدم . [ 8 ] تتوفر المقابس الخام عادةً في معدات الشبكة، وتُستخدم لبروتوكولات التوجيه مثل بروتوكول إدارة مجموعات الإنترنت (IGMP) وبروتوكول فتح أقصر مسار أولاً (OSPF)، وفي بروتوكول رسائل التحكم في الإنترنت (ICMP) الذي تستخدمه، من بين أمور أخرى، أداة ping . [ 9 ]
يتم تنفيذ أنواع المقابس الأخرى عبر بروتوكولات نقل أخرى، مثل بنية شبكة الأنظمة [ 10 ] ومقابس مجال يونكس للاتصال الداخلي بين العمليات.
حالات المقابس في نموذج العميل والخادم
تُعرف عمليات الحاسوب التي توفر خدمات التطبيقات باسم الخوادم ، وتقوم بإنشاء منافذ اتصال عند بدء التشغيل تكون في حالة الاستماع . تنتظر هذه المنافذ مبادرات من برامج العميل .
قد يخدم خادم TCP عدة عملاء في وقت واحد عن طريق إنشاء مقبس مخصص فريد لكل اتصال عميل في عملية فرعية جديدة أو سلسلة معالجة لكل عميل. وتكون هذه الاتصالات في حالة "مُنشأة " عندما يتم إنشاء اتصال افتراضي أو دائرة افتراضية (VC)، تُعرف أيضًا بجلسة TCP ، مع المقبس البعيد، مما يوفر تدفقًا ثنائي الاتجاه للبيانات .
قد يقوم الخادم بإنشاء عدة منافذ TCP متزامنة بنفس رقم المنفذ المحلي وعنوان IP المحلي، حيث يرتبط كل منفذ بعملية خادم فرعية خاصة به، تخدم بدورها عملية عميل منفصلة. ويتعامل نظام التشغيل معها كمنافذ مختلفة لأن عنوان المنفذ البعيد (عنوان IP الخاص بالعميل أو رقم المنفذ) مختلف؛ أي أن لكل منها زوج بيانات مختلف .
لا تمتلك مقابس UDP حالة مُحددة ، لأن البروتوكول غير مُرتبط . يقوم خادم UDP بمعالجة حزم البيانات الواردة من جميع العملاء البعيدين بالتتابع عبر نفس المقبس. لا يتم تحديد مقابس UDP بواسطة العنوان البعيد، بل بواسطة العنوان المحلي فقط، على الرغم من أن لكل رسالة عنوانًا بعيدًا مرتبطًا بها، ويمكن استرداده من كل حزمة بيانات باستخدام واجهة برمجة تطبيقات الشبكة (API).
أزواج المقابس
تُسمى المقابس المحلية والبعيدة التي تتواصل عبر بروتوكول TCP أزواج المقابس . يُوصف كل زوج من المقابس بأربعة عناصر فريدة تتكون من عناوين IP المصدر والوجهة وأرقام المنافذ، أي عناوين المقابس المحلية والبعيدة. [ 11 ] [ 12 ] وكما ذُكر سابقًا، في حالة TCP، يرتبط كل زوج من المقابس على طرفي الاتصال بأربعة عناصر فريدة.
تاريخ
يعود مصطلح " المقبس" إلى نشر RFC 147 عام 1971، حيث استُخدم في شبكة ARPANET. وتعتمد معظم التطبيقات الحديثة للمقابس على مقابس بيركلي (1983)، ومجموعات بروتوكولات أخرى مثل Winsock (1991). وقد نشأت واجهة برمجة تطبيقات مقابس بيركلي في توزيعة برمجيات بيركلي (BSD) مع نظام التشغيل يونكس 4.2BSD كواجهة برمجة تطبيقات. إلا أنه في عام 1989 فقط، تمكنت جامعة كاليفورنيا في بيركلي من إصدار نسخ من نظام التشغيل ومكتبة الشبكات الخاصة بها خالية من قيود الترخيص الخاصة بنظام يونكس المحمي بحقوق الطبع والنشر لشركة AT&T .
في عام 1987 تقريبًا، قدمت شركة AT&T واجهة طبقة النقل (TLI) القائمة على بروتوكول STREAMS في نظام UNIX System V الإصدار 3 (SVR3). [ 13 ] واستمرت في الإصدار 4 (SVR4). [ 14 ]
تمت كتابة تطبيقات مبكرة أخرى لأنظمة TOPS-20 ، [ 15 ] و MVS ، [ 15 ] وVM ، [ 15 ] و IBM-DOS (PCIP) . [ 15 ] [ 16 ]
المقابس في معدات الشبكة
يُعدّ المقبس مفهومًا أساسيًا يُستخدم في طبقة النقل ضمن مجموعة بروتوكولات الإنترنت ، أو في طبقة الجلسة ضمن نموذج OSI . لا تتطلب معدات الشبكات، مثل أجهزة التوجيه التي تعمل في طبقة الإنترنت ، والمحولات التي تعمل في طبقة الربط ، تطبيقاتٍ لطبقة النقل. مع ذلك، تحتفظ جدران الحماية الشبكية ذات الحالة ، ومترجمات عناوين الشبكة ، وخوادم الوكيل بسجلات أزواج المقابس النشطة. في المحولات متعددة الطبقات ، ودعم جودة الخدمة (QoS) في أجهزة التوجيه، يُمكن تحديد تدفقات الحزم من خلال استخراج معلومات حول أزواج المقابس.
تتوفر المقابس الخام عادةً في معدات الشبكة وتستخدم لبروتوكولات التوجيه مثل IGRP و OSPF ، ولبروتوكول رسائل التحكم في الإنترنت (ICMP).
انظر أيضاً
مراجع
- ↑ برنامج أكاديمية سيسكو للشبكات، دليل مصاحب لشهادة CCNA 1 و2، الطبعة الثالثة المنقحة، صفحة 480، رقم ISBN 1-58713-150-1
- ↑ RFC 147
- ↑ جاك والين (22 يناير 2019). "مقدمة لأمر ss" . مؤرشف من الأصل بتاريخ 5 أغسطس 2019. تم الاطلاع عليه بتاريخ 5 أغسطس 2019 .
- ↑ في إس باجاد، آي إيه دهوتر (2008)، شبكات الحاسوب (الطبعة الخامسة المنقحة، طبعة 2010)، منشورات تقنية، بونا، ص 52
- ↑ SO_BROADCAST ، مايكروسوفت ، تم الاطلاع عليه بتاريخ 12 ديسمبر 2019
- ↑ فئة DatagramSocket ، أوراكل ، مؤرشفة من الأصل بتاريخ 12-12-2019 ، تم استرجاعها بتاريخ 12-12-2019
- ↑ إيان غريفيثس لموقع IanG on Tap. ١٢ أغسطس ٢٠٠٤. اختفت المقابس الخام في نظام التشغيل ويندوز إكس بي SP2. مؤرشف بتاريخ ٩ فبراير ٢٠٢١ في أرشيف الإنترنت (Wayback Machine).
- ↑ "raw(7): IPv4 raw sockets - Linux man page" . die.net . مؤرشف من الأصل بتاريخ 2016-09-07 . تم الاطلاع عليه بتاريخ 2017-12-11 .
- ↑ "أسئلة وأجوبة حول شبكات IP الخام" . faqs.org . مؤرشف من الأصل بتاريخ 19 يناير 2012. تم الاطلاع عليه بتاريخ 11 ديسمبر 2017 .
- ↑ "www-306.ibm.com - دليل AnyNet للمقابس عبر SNA" . مؤرشف من الأصل بتاريخ 2008-05-03 . تم الاطلاع عليه بتاريخ 2006-09-07 .
- ↑ books.google.com - برمجة الشبكات في نظام يونكس: واجهة برمجة تطبيقات الشبكات للمآخذ
- ↑ books.google.com - تصميم برامج التجسس الجذرية لنظام BSD: مقدمة في اختراق نواة النظام
- ↑ ( جودهارت 1994 ، ص 11) خطأ في harv: لا يوجد هدف: CITEREFGoodheart1994 ( مساعدة )
- ↑ ( جودهارت 1994 ، ص 17) خطأ في harv: لا يوجد هدف: CITEREFGoodheart1994 ( مساعدة )
- ١ ٢ ٣ ٤ "historyofcomputercommunications.info - كتاب: ٩.٨ TCP/IP وXNS ١٩٨١ - ١٩٨٣" . مؤرشف من الأصل بتاريخ ١٧ يونيو ٢٠١٨. تم الاطلاع عليه بتاريخ ١٨ فبراير ٢٠١١ .
- ↑ الحاسوب المكتبي كمشارك في الشبكة.pdf 1985
للمزيد من القراءة
- جونز، أنتوني؛ أولوند، جيم (2002). برمجة الشبكات لنظام التشغيل مايكروسوفت ويندوز . مطبعة مايكروسوفت. ISBN 0-7356-1579-9.
روابط خارجية
- كيفية عمل المقابس ( مؤرشف بتاريخ 2023-05-02 في أرشيف الإنترنت - وثائق IBM)
- برمجة الخوادم باستخدام مقابس TCP/IP
- دليل بيج لبرمجة الشبكات ( مؤرشف بتاريخ 10 أبريل 2011 على موقع Wayback Machine)
- دروس جافا: أساسيات الشبكات
- Net::RawIP؛ وحدة نمطية لتطبيقات بيرل. من ابتكار سيرجي كوليتشيف .
- شرح مبسط لتقنية SOCK_RAW: مقال يشرح آلية عمل المقابس الخام ( مؤرشف بتاريخ ٢٤ فبراير ٢٠٢١ في أرشيف الإنترنت) .
- أمثلة بلغة C لمآخذ التوصيل الخام لنظام Linux لبروتوكولي IPv4 و IPv6 - أمثلة ديفيد بوكان بلغة C لمآخذ التوصيل الخام لبروتوكولي IPv4 و IPv6 لنظام Linux.
- مقبس الشبكة
