وينسوك
في مجال الحوسبة ، تُعدّ واجهة برمجة تطبيقات Windows Sockets API ( WSA )، والتي اختُصرت لاحقًا إلى Winsock ، واجهة برمجة تطبيقات (API) تُحدد كيفية وصول برامج تطبيقات الشبكة في نظام Windows إلى خدمات الشبكة، وخاصةً بروتوكول TCP/IP . وهي تُحدد واجهة قياسية بين تطبيق عميل TCP/IP في نظام Windows (مثل عميل FTP أو متصفح ويب ) ومجموعة بروتوكولات TCP/IP الأساسية . ويستند هذا المصطلح إلى واجهة برمجة تطبيقات Berkeley sockets API المستخدمة في نظام BSD للاتصالات بين البرامج.
خلفية
قدّمت أنظمة تشغيل مايكروسوفت المبكرة، MS-DOS ومايكروسوفت ويندوز، إمكانيات محدودة للشبكات، تعتمد بشكل أساسي على NetBIOS . وعلى وجه الخصوص، لم تُقدّم مايكروسوفت دعمًا لبروتوكول TCP/IP في ذلك الوقت. وقد طرحت العديد من المجموعات الجامعية والشركات التجارية، بما في ذلك مجموعة PC/IP في معهد ماساتشوستس للتكنولوجيا ، وشركة FTP Software ، وشركة Sun Microsystems ، وشركة Ungermann-Bass ، وشركة Excelan ، منتجات TCP/IP لنظام MS-DOS، غالبًا كجزء من حزمة برمجية/مادية. ومع إصدار ويندوز 2.0 ، انضمت إلى هذه الشركات شركات أخرى مثل Distinct و NetManage في تقديم TCP/IP لنظام ويندوز.
تمثلت المشكلة التي واجهت جميع هذه الشركات في استخدام كل منها واجهة برمجة تطبيقات (API) خاصة بها. وبدون نموذج برمجة موحد، كان من الصعب إقناع مطوري البرامج المستقلين بإنشاء تطبيقات شبكات تعمل مع أي تطبيق TCP/IP أساسي لأي شركة. يُضاف إلى ذلك تخوف المستخدمين النهائيين من الارتباط بشركة واحدة، مما أوضح الحاجة الماسة إلى توحيد المعايير.
بدأ مشروع Windows Sockets في جلسة نقاشية عُقدت ضمن فعاليات مؤتمر Interop '91 في سان خوسيه بتاريخ 10 أكتوبر 1991. [ 1 ] ويستند المشروع إلى مواصفات المقابس التي وضعتها شركة NetManage ونشرتها للعموم خلال هذا الاجتماع. في ذلك الوقت، كان مقبس NetManage المنتج الوحيد متعدد الخيوط والمبني بالكامل على مكتبات DLL لنظام Windows 3.0 . وقد وضع النسخة الأولى من المواصفات كلٌ من مارتن هول، ومارك توفيق من شركة Microdyne (التي أصبحت لاحقًا Sun Microsystems )، وجيف أرنولد من شركة Sun Microsystems ، وهنري ساندرز وجيه ألارد من شركة Microsoft ، بمساعدة من آخرين. دار نقاش حول أفضل السبل لمعالجة حقوق النشر والملكية الفكرية وقضايا مكافحة الاحتكار المحتملة، وتم النظر في إمكانية العمل من خلال فريق عمل هندسة الإنترنت (IETF) أو إنشاء مؤسسة غير ربحية. وفي النهاية، تقرر أن تُسجل حقوق النشر للمواصفات باسم المؤلفين الخمسة بصفتهم أفرادًا (غير تابعين لأي جهة).
قاوم جميع المطورين المشاركين اختصار الاسم إلى Winsock لفترة طويلة، نظرًا للالتباس الكبير بين المستخدمين بين واجهة برمجة التطبيقات (API) وملف مكتبة DLL (winsock.dll) الذي كان يعرض فقط واجهات WSA الشائعة للتطبيقات الأعلى منه. وكان المستخدمون يعتقدون عادةً أن مجرد وجود ملف DLL على النظام يكفي لتوفير دعم كامل لبروتوكول TCP/IP.
تكنولوجيا
تحدد مواصفات واجهة برمجة تطبيقات Windows Sockets واجهتين: واجهة برمجة التطبيقات (API) التي يستخدمها مطورو التطبيقات ، وواجهة SPI التي توفر لمطوري برامج الشبكات وسيلة لإضافة وحدات بروتوكول جديدة إلى النظام. تمثل كل واجهة عقدًا. تضمن واجهة برمجة التطبيقات (API) أن يعمل التطبيق المتوافق بشكل صحيح مع أي تطبيق بروتوكول متوافق من أي مورد لبرامج الشبكات. يضمن عقد SPI إمكانية إضافة وحدة بروتوكول متوافقة إلى Windows، وبالتالي ستكون قابلة للاستخدام من قبل تطبيق متوافق مع واجهة برمجة التطبيقات (API). على الرغم من أهمية هذه العقود عند إصدار Windows Sockets لأول مرة، إلا أنها أصبحت الآن ذات أهمية نظرية فقط نظرًا لأن بيئات الشبكات تتطلب دعمًا متعدد البروتوكولات (انظر أعلاه). تتضمن واجهة برمجة تطبيقات Windows Sockets الإصدار 2.0 وظائف لاستخدام IPX/SPX ، على الرغم من أن البروتوكول كان شبه مهجور بالفعل عند إصدار WSA 2.0. قامت Microsoft بتضمين حزمة بروتوكول TCP/IP مع جميع الإصدارات الحديثة من Windows، ولا توجد بدائل مستقلة مهمة، كما لم يكن هناك اهتمام كبير بتنفيذ بروتوكولات أخرى غير TCP/IP.
يعتمد تصميم وبرمجة Windows Sockets على مقابس BSD ، ولكنه يوفر وظائف إضافية لتمكين واجهة برمجة التطبيقات (API) من التوافق مع نموذج برمجة Windows المعتاد. غطت واجهة برمجة تطبيقات Windows Sockets جميع ميزات واجهة برمجة تطبيقات BSD Sockets تقريبًا ، ولكن واجهت بعض العقبات التي لا مفر منها، والتي نشأت في الغالب من اختلافات جوهرية بين Windows و Unix (مع أن Windows Sockets كانت أقل اختلافًا عن مقابس BSD من اختلاف الأخيرة عن STREAMS ). تبدأ جميع استدعاءات الدوال في واجهة برمجة التطبيقات بالاختصار WSA ، على سبيل المثال WSASend() لإرسال البيانات عبر مقبس متصل.
مع ذلك، كان من أهداف تصميم Windows Sockets تسهيل نقل التطبيقات القائمة على المقابس من أنظمة Unix إلى Windows للمطورين. لم يكن كافيًا إنشاء واجهة برمجة تطبيقات (API) مخصصة لبرامج Windows الجديدة فقط، ولذلك، تضمنت Windows Sockets عددًا من العناصر المصممة لتسهيل عملية النقل. على سبيل المثال، كانت تطبيقات Unix قادرة على استخدام متغير errno نفسه لتسجيل أخطاء الشبكة والأخطاء المكتشفة داخل دوال مكتبة C القياسية . ولأن هذا لم يكن ممكنًا في Windows، قدمت Windows Sockets دالة مخصصة، WSAGetLastError() ، لاسترجاع معلومات الخطأ. كانت هذه الآليات مفيدة، لكن عملية نقل التطبيقات ظلت معقدة للغاية. تم تنفيذ العديد من تطبيقات TCP/IP الأصلية باستخدام ميزات نظام خاصة بـ Unix ، مثل المحطات الطرفية الوهمية واستدعاء النظام fork ، وكان إعادة إنتاج هذه الوظائف في Windows أمرًا صعبًا. في غضون فترة قصيرة نسبيًا، أفسح النقل المجال لتطوير تطبيقات Windows مخصصة.
تحديد
- حدد الإصدار 1.0 (يونيو 1992) آلية عمل Winsock الأساسية. وقد تم الحفاظ على توافقه الشديد مع واجهة Berkeley sockets الحالية لتسهيل نقل التطبيقات الموجودة. أُضيفت بعض الامتدادات الخاصة بنظام Windows، وخاصةً للعمليات غير المتزامنة مع الإشعارات القائمة على الرسائل.
- على الرغم من أن الوثيقة لم تقصر الدعم على بروتوكول TCP/IP، إلا أن بروتوكولي TCP وUDP كانا البروتوكولين الوحيدين المذكورين صراحةً. معظم الموردين لم يقدموا سوى دعم بروتوكول TCP/IP، مع أن برنامج Winsock من شركة DEC تضمن دعم بروتوكول DECNet أيضاً.
- أدخل الإصدار 1.1 (يناير 1993) العديد من التصحيحات والتوضيحات الطفيفة على المواصفات. وكان التغيير الأهم هو إضافة الدالة gethostname() .
- كان Winsock 2 امتدادًا متوافقًا مع الإصدارات السابقة من Winsock 1.1. أضاف دعمًا لحل أسماء النطاقات المستقل عن البروتوكول، والعمليات غير المتزامنة مع إشعارات قائمة على الأحداث وروتينات الإكمال، وتطبيقات البروتوكولات متعددة الطبقات، والبث المتعدد ، وجودة الخدمة . كما عزز دعم بروتوكولات متعددة، بما في ذلك IPX/SPX و DECnet . سمحت المواصفات الجديدة بمشاركة المقابس بين العمليات بشكل اختياري، وقبول طلبات الاتصال الواردة بشكل مشروط، وتنفيذ عمليات معينة على مجموعات المقابس بدلًا من المقابس الفردية. على الرغم من اختلاف المواصفات الجديدة اختلافًا كبيرًا عن Winsock 1، إلا أنها وفرت توافقًا على مستوى المصدر والملفات الثنائية مع واجهة برمجة تطبيقات Winsock 1.1. من بين الإضافات الأقل شهرة واجهة برمجة تطبيقات موفر الخدمة (SPI) وموفرو الخدمات متعددو الطبقات .
- كانت الإصدارات 2.0.x (من مايو 1994 فصاعدًا) في حالة مسودة داخلية، ولم يتم الإعلان عنها كمعايير عامة.
- كان الإصدار 2.1.0 (يناير 1996) هو الإصدار العام الأول لمواصفات Winsock 2.
- تضمنت النسخة 2.2.0 (مايو 1996) العديد من التصحيحات والتوضيحات والتوصيات الطفيفة المتعلقة بالاستخدام. وكانت أيضاً أول نسخة تزيل دعم تطبيقات ويندوز ذات 16 بت.
- أدخل الإصداران 2.2.1 (مايو 1997) و2.2.2 (أغسطس 1997) تحسينات طفيفة على الوظائف. كما أُضيفت آليات للاستعلام عن التغييرات في تكوين الشبكة والنظام وتلقي إشعارات بشأنها.
- شهدت المعاينة التقنية لبروتوكول IPv6 لنظام التشغيل Windows 2000 (ديسمبر 2000) أول تطبيق لـ RFC 2553 (مارس 1999، والذي تم إلغاؤه لاحقًا بواسطة RFC 3493 )، وهو واجهة برمجة تطبيقات مستقلة عن البروتوكول لحل الأسماء، والتي ستصبح جزءًا من Winsock في Windows XP .
تحديثات في نظام التشغيل ويندوز 8
يتضمن نظام التشغيل Windows 8 امتدادات "RIO" (الإدخال/الإخراج المسجل) لبروتوكول Winsock. [ 2 ] صُممت هذه الامتدادات لتقليل الحمل الزائد لعملية الانتقال من وضع المستخدم إلى وضع النواة فيما يتعلق بمسار بيانات الشبكة ومسار الإشعارات، مع استخدام باقي حزمة بروتوكولات TCP وUDP الخاصة بنظام Windows (واستخدام بطاقات الشبكة الموجودة). يبقى مسار الإعداد (على سبيل المثال، وظيفة "الاتصال") كما هو دون تغيير عن مسار Winsock العادي.
التطبيقات
تطبيقات مايكروسوفت
- لم تقدم مايكروسوفت تطبيقًا لبروتوكول Winsock 1.0.
- تم توفير الإصدار 1.1 من Winsock في حزمة إضافية (تسمى Wolverine) لنظام Windows for Workgroups (الاسم الرمزي Snowball ). وكان مكونًا أساسيًا في نظامي التشغيل Windows 95 و Windows NT بدءًا من الإصدار 3.5 فصاعدًا (تضمن الإصدار التجاري الأولي المتاح من Windows NT، وهو الإصدار 3.1، تطبيقًا خاصًا وغير مكتمل لبروتوكول TCP/IP يعتمد على واجهة برمجة تطبيقات AT&T UNIX System V "STREAMS" ).
- تم توفير الإصدار 2.1 من Winsock كحزمة إضافية لنظام التشغيل Windows 95. وكان مكونًا أساسيًا في Windows 98 و Windows NT 4.0 وجميع إصدارات Windows اللاحقة. (لم توفر مايكروسوفت تطبيقات Winsock 2 لنظامي التشغيل Windows 3.x أو Windows NT 3.x).
- تم توفير الإصدارات الحديثة من Winsock 2.x مع إصدارات Windows الجديدة أو كجزء من حزم الخدمة.
- يُمكن توسيع نطاق Winsock 2 عبر آلية تُعرف باسم موفر الخدمة متعدد الطبقات (LSP). تتوفر موفرات الخدمة متعددة الطبقات في Winsock لأغراض متنوعة، تشمل الرقابة الأبوية على الإنترنت، وتصفية محتوى الويب، وجودة الخدمة (QoS) ، وغيرها. يُحفظ ترتيب الطبقات لجميع الموفرين في كتالوج Winsock. في الإصدارات السابقة من Windows، كان حذف موفر خدمة متعدد الطبقات به خلل قد يؤدي إلى تلف كتالوج Winsock في سجل النظام، مما قد يتسبب في فقدان الاتصال بالشبكة بالكامل . أما في Windows XP Service Pack 2 وWindows Server 2003 Service Pack 1 وجميع أنظمة تشغيل Windows اللاحقة، فيتمتع Winsock بالقدرة على إصلاح نفسه تلقائيًا بعد قيام المستخدم بإلغاء تثبيت موفر الخدمة متعدد الطبقات.
تطبيقات أخرى
- ومن بين البائعين الآخرين الذين يقدمون حزم TCP/IP و UDP/IP المتوافقة مع Winsock (حسب الترتيب الأبجدي) 3Com و Beame & Whiteside و DEC و Distinct و Frontier و FTP Software و IBM و Microdyne و NetManage و Novell و Sun Microsystems و Trumpet Software International.
- كان برنامج Trumpet Winsock من تطوير بيتر تاتام أحد تطبيقات Winsock 1.0 القليلة التي يمكن تثبيتها على نظام التشغيل Windows 3.0 ، الذي لم يكن يدعم Winsock بشكلٍ مدمج. [ 3 ] [ 4 ] كما كان Trumpet أشهر تطبيقات Winsock المجانية لنظام Windows 3.x. يتوفر Trumpet Winsock 5.0 لأنظمة Windows 95/98 و Windows NT ، ويتضمن حزمة بروتوكولات IPv6 متوافقة مع Winsock 1.1 لهذه الأنظمة. [ 5 ]
- يحتوي مشروع Wine على إعادة تنفيذ متوافقة مع المصدر والتنفيذ الثنائي لـ Winsock على واجهة برمجة تطبيقات مقابس BSD .
انظر أيضاً
- مقابس بيركلي
- مزود الخدمة متعدد الطبقات (Winsock LSP)
مراجع
- ↑ "Winsock الإصدار 1.0 المراجعة أ" . تم الاطلاع عليه بتاريخ 8 أكتوبر 2020 .
- ↑ "تقنيات جديدة لتطوير تطبيقات شبكية منخفضة زمن الاستجابة" . القناة التاسعة .
- ↑ "موزاييك تبلغ من العمر 20 عامًا: فلنُشغّلها ونُعرّفها على الإنترنت اليوم" . theregister.co.uk .
- ↑ "كيف كان بناء موقع ويب عالمي في عام 1995" . fastcompany.com . 18 نوفمبر 2015.
- ↑ "التنزيلات" . www.trumpet.com.au .
روابط خارجية
- MSDN - مرجع ما الجديد في Windows Socket 2
- صفحة بدء تشغيل MSDN - Windows Socket 2
- الأسئلة الشائعة حول المقابس - الأسئلة الشائعة حول مقابس ويندوز
- برمجة العميل/الخادم باستخدام مقابس TCP/IP على موقع Wayback Machine (أرشيف 3 مارس 2016) - برمجة Winsock C++
- نقل برامج Berkeley Socket إلى Winsock
- مدونة تطوير شبكات ويندوز — مدونة مطوري مايكروسوفت التي تغطي Winsock وWSK وWinINet وHttp.sys وWinHttp وQoS وSystem.Net، مع التركيز على الميزات التي يتم تقديمها في ويندوز فيستا
- نبذة تاريخية عن مايكروسوفت على الإنترنت
- {رابط معطل} معلومات تطوير WinSock
- الأسئلة الشائعة لمبرمجي Winsock
- مقبس الشبكة
- تاريخ الإنترنت
- برنامج عام 1992
- اتصالات وخدمات ويندوز
- واجهات برمجة تطبيقات مايكروسوفت
