مقبس الشبكة

مقبس الشبكة هو بنية برمجية ضمن عقدة شبكة حاسوبية ، يعمل كنقطة نهاية لإرسال واستقبال البيانات عبر الشبكة. تُحدد بنية المقبس وخصائصه بواسطة واجهة برمجة التطبيقات (API) الخاصة ببنية الشبكة. تُنشأ المقابس فقط خلال دورة حياة عملية تطبيق يعمل على العقدة.

بسبب توحيد بروتوكولات TCP/IP في تطوير الإنترنت ، يُستخدم مصطلح " مأخذ الشبكة" بشكل شائع في سياق مجموعة بروتوكولات الإنترنت، ولذلك يُشار إليه غالبًا باسم " مأخذ الإنترنت" . في هذا السياق، يُعرَّف المأخذ خارجيًا للأجهزة المضيفة الأخرى بواسطة عنوان المأخذ الخاص به ، والذي يتكون من بروتوكول النقل ، وعنوان IP ، ورقم المنفذ .

يُستخدم مصطلح socket أيضًا لنقطة نهاية البرنامج للاتصال بين العمليات الداخلية للعقدة (IPC)، والذي غالبًا ما يستخدم نفس واجهة برمجة التطبيقات (API) مثل مقبس الشبكة.

يستخدم

يُشابه استخدام مصطلح "المقبس" في البرمجيات وظيفة الموصل الكهربائي الأنثوي ، وهو جهاز في الأجهزة يُستخدم للتواصل بين العُقد المتصلة بكابل كهربائي . وبالمثل، يشير مصطلح " المنفذ" إلى نقاط النهاية المادية الخارجية في عقدة أو جهاز.

تُنشئ واجهة برمجة التطبيقات (API) الخاصة بمجموعة بروتوكولات الشبكة مُعرّفًا لكل مقبس يُنشئه التطبيق، ويُشار إليه عادةً باسم مُعرّف المقبس . في أنظمة التشغيل الشبيهة بنظام يونكس ، يُعد هذا المُعرّف نوعًا من مُعرّفات الملفات . ويقوم التطبيق بتخزينه لاستخدامه في كل عملية قراءة وكتابة على قناة الاتصال.

عند إنشاء مقبس الشبكة باستخدام واجهة برمجة التطبيقات (API)، يتم ربطه بمجموعة من بروتوكولات الشبكة المستخدمة في الإرسال، وعنوان الشبكة الخاص بالمضيف، ورقم المنفذ . المنافذ عبارة عن موارد مرقمة تمثل نوعًا آخر من بنية البرمجيات الخاصة بالعقدة. تُستخدم المنافذ كأنواع خدمات، وبمجرد إنشائها بواسطة عملية ما، تعمل كمكون موقع قابل للعنونة خارجيًا (من الشبكة)، مما يسمح للمضيفين الآخرين بإنشاء اتصالات.

قد يتم تخصيص منافذ الشبكة للاتصالات الدائمة للتواصل بين عقدتين، أو قد تشارك في الاتصالات غير المتصلة والاتصالات متعددة البث .

In practice, due to the proliferation of the TCP/IP protocols in use on the Internet, the term network socket usually refers to use with the Internet Protocol (IP). It is therefore often also called Internet socket.

Socket addresses

An application can communicate with a remote process by exchanging data with TCP/IP by knowing the combination of protocol type, IP address, and port number. This combination is often known as a socket address. It is the network-facing access handle to the network socket. The remote process establishes a network socket in its own instance of the protocol stack and uses the networking API to connect to the application, presenting its own socket address for use by the application.

Implementation

A protocol stack, usually provided by the operating system (rather than as a separate library, for instance), is a set of services that allows processes to communicate over a network using the protocols that the stack implements. The operating system forwards the payload of incoming IP packets to the corresponding application by extracting the socket address information from the IP and transport protocol headers and stripping the headers from the application data.

The application programming interface (API) that programs use to communicate with the protocol stack, using network sockets, is called a socket API. Development of application programs that utilize this API is called socket programming or network programming. Internet socket APIs are usually based on the Berkeley sockets standard. In the Berkeley sockets standard, sockets are a form of file descriptor, due to the Unix philosophy that "everything is a file", and the analogies between sockets and files. Both have functions to read, write, open, and close. In practice, the differences strain the analogy, and different interfaces (send and receive) are used on a socket. In inter-process communication, each end generally has its own socket.

In the standard Internet protocols TCP and UDP, a socket address is the combination of an IP address and a port number, much like one end of a telephone connection is the combination of a phone number and a particular extension. Sockets need not have a source address, for example, for only sending data, but if a program binds a socket to a source address, the socket can be used to receive data sent to that address. Based on this address, Internet sockets deliver incoming data packets to the appropriate application process.

يشير مصطلح "المقبس" غالبًا إلى مقبس الإنترنت أو مقبس 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).

انظر أيضاً

مراجع

  1. برنامج أكاديمية سيسكو للشبكات، دليل مصاحب لشهادة CCNA 1 و2، الطبعة الثالثة المنقحة، صفحة 480، رقم ISBN 1-58713-150-1
  2. RFC 147 
  3. جاك والين (22 يناير 2019). "مقدمة لأمر ss" . مؤرشف من الأصل بتاريخ 5 أغسطس 2019. تم الاطلاع عليه بتاريخ 5 أغسطس 2019 .
  4. في إس باجاد، آي إيه دهوتر (2008)، شبكات الحاسوب (الطبعة الخامسة المنقحة، طبعة 2010)، منشورات تقنية، بونا، ص 52  
  5. SO_BROADCAST ، مايكروسوفت ، تم الاطلاع عليه بتاريخ 12 ديسمبر 2019
  6. فئة DatagramSocket ، أوراكل ، مؤرشفة من الأصل بتاريخ 12-12-2019 ، تم استرجاعها بتاريخ 12-12-2019
  7. إيان غريفيثس لموقع IanG on Tap. ١٢ أغسطس ٢٠٠٤. اختفت المقابس الخام في نظام التشغيل ويندوز إكس بي SP2. مؤرشف بتاريخ ٩ فبراير ٢٠٢١ في أرشيف الإنترنت (Wayback Machine).
  8. "raw(7): IPv4 raw sockets - Linux man page" . die.net . مؤرشف من الأصل بتاريخ 2016-09-07 . تم الاطلاع عليه بتاريخ 2017-12-11 .
  9. "أسئلة وأجوبة حول شبكات IP الخام" . faqs.org . مؤرشف من الأصل بتاريخ 19 يناير 2012. تم الاطلاع عليه بتاريخ 11 ديسمبر 2017 .
  10. "www-306.ibm.com - دليل AnyNet للمقابس عبر SNA" . مؤرشف من الأصل بتاريخ 2008-05-03 . تم الاطلاع عليه بتاريخ 2006-09-07 .
  11. books.google.com - برمجة الشبكات في نظام يونكس: واجهة برمجة تطبيقات الشبكات للمآخذ
  12. books.google.com - تصميم برامج التجسس الجذرية لنظام BSD: مقدمة في اختراق نواة النظام
  13. ( جودهارت 1994 ، ص 11) خطأ في harv: لا يوجد هدف: CITEREFGoodheart1994 ( مساعدة ) 
  14. ( جودهارت 1994 ، ص 17) خطأ في harv: لا يوجد هدف: CITEREFGoodheart1994 ( مساعدة ) 
  15. ١ ٢ ٣ ٤ "historyofcomputercommunications.info - كتاب: ٩.٨ TCP/IP وXNS ١٩٨١ - ١٩٨٣" . مؤرشف من الأصل بتاريخ ١٧ يونيو ٢٠١٨. تم الاطلاع عليه بتاريخ ١٨ فبراير ٢٠١١ .
  16. الحاسوب المكتبي كمشارك في الشبكة.pdf 1985

للمزيد من القراءة

  • جونز، أنتوني؛ أولوند، جيم (2002). برمجة الشبكات لنظام التشغيل مايكروسوفت ويندوز . مطبعة مايكروسوفت. ISBN 0-7356-1579-9.