لماذا لا تدعم تطبيقات عميل Websocket الحالية؟

StackOverflow https://stackoverflow.com/questions/2201317

  •  18-09-2019
  •  | 
  •  

سؤال

يكتشف مقبس الويب وجود خادم وكيل ويقوم تلقائيا بإعداد نفق المرور عبر الوكيل. تم تأسيس النفق عن طريق إصدار عبارة توصيل HTTP إلى الخادم الوكيل، والذي يطلب إلى خادم الوكيل لفتح اتصال TCP / IP بمضيف وميناء محدد. بمجرد إعداد النفق، يمكن أن يتدفق الاتصالات دون عوائق عن طريق الوكيل. نظرا لأن HTTP / S يعمل بطريقة مماثلة، فإن مآخذ الويب الآمنة عبر SSL يمكن أن يستفيد من نفس تقنية ربط HTTP. [1

حسنا، يبدو مفيدا! ولكن، في تطبيقات العميل التي رأيتها حتى الآن (GO [2]، Java [3]) لا أرى أي شيء يتعلق بالكشف عن الوكيل.

هل أفتقد شيئا أم هؤلاء التطبيقات صغارا فقط؟ أعلم أن أجهزة الإنترنت هي تطبيقات جديدة للغاية وقد تكون عمليات التنفيذ من العملاء غير ناضجة بنفس القدر. أريد فقط أن أعرف ما إذا كنت أفتقد شيئا عن الكشف والتعامل مع الوكيل.

[1] http://www.kaazing.org/confluence/display/kaazing/what+is+html +5+Websocket.

[2] http://golang.org/src/pkg/websocket/client.go.go.

[3] http://githubub.com/adamac/java-websocket-client/raw/master/src/com/sixfire/websocket/websocket.java.

هل كانت مفيدة؟

المحلول 3

الجواب هو أن هؤلاء العملاء لا يدعمون فقط الوكلاء. منظمات

نصائح أخرى

اسمحوا لي أن أحاول شرح معدلات النجاح المختلفة التي قد تواجهها. في حين أن بروتوكول مأخذ ويب HTML5 نفسه غير مدرك لخوادم الوكيل وجدران الحماية، فإنه يتميز بمصاففة متوافقة مع HTTP بحيث يمكن لخوادم HTTP مشاركة منافذ HTTP و HTTPS الافتراضية (80 و 443) بوابة أو خادم مآخذ للخادم.

يحدد بروتوكول مقبس الويب WS: // و WSS: // بادئة للإشارة إلى Websocket واتصال آمن ويب Websocket، على التوالي. يستخدم كل من المخططين آلية ترقية HTTP للترقية إلى بروتوكول مقبس الويب. بعض خوادم الوكيل غير ضارة وتعمل بشكل جيد مع مآخذ الويب؛ سيؤدي الآخرون إلى منع مآخذ الويب من العمل بشكل صحيح، مما تسبب في فشل الاتصال. في بعض الحالات قد تكون هناك حاجة إلى تكوين خادم وكيل إضافي، قد تحتاج إلى ترقية خوادم الوكيل معينة لدعم مآخذ الويب.

إذا كانت تدفق حركة مرور الويب غير المشفوهة من خلال خادم وكيل صريح أو شفاف في طريقه إلى خادم Websocket، فعندئذ، ما إذا كان الخادم الوكيل الذي يجب أن يتصرف به، فإن الاتصال ملزم من المؤكد أن يفشل اليوم (في المستقبل، قد تصبح إدراك مقبس الويب). لذلك، يجب استخدام اتصالات Websocket غير المشفرة فقط في أبسط طبعات.

إذا تم استخدام اتصال Web Jecuty Webkoilted، فإن استخدام أمان طبقة النقل (TLS) في اتصال آمن مؤضم يضمن إصدار أمر HTTP Connect يتم إصداره عند تكوين المتصفح لاستخدام خادم وكيل صريح. يقوم هذا بإعداد نفق، يوفر اتصالات TCP ذات المستوى المنخفض المنخفض من خلال وكيل HTTP، بين عميل آمن من مآخذ الويب وخادم WebSocket. في حالة خوادم الوكيل الشفافة، يكون المتصفح غير مدرك لخادم الوكيل، لذلك يتم إرسال عدم إرسال HTTP Connect. ومع ذلك، نظرا لأن حركة المرور الأسلاك مشفرة، فقد تسمح خوادم الوكيل الشفافة المتوسطة ببساطة بالحركة المشفرة من خلال، لذلك هناك فرصة أفضل بكثير من أن اتصال WebSocket سينجح في حالة استخدام مآخذ الويب الآمنة. باستخدام التشفير، بالطبع، ليست مجانية، ولكن في كثير من الأحيان يوفر أعلى معدل النجاح.

طريقة واحدة لرؤيتها في العمل هي تنزيل وتثبيت بوابة Kaazing Websocket Websway - بوابة Websocket Probled Websocket Uptique-Aware-Aware، والتي توفر دعم WebSocket الأصلي بالإضافة إلى مضاهاة كاملة لمعيار المتصفحات القديمة.

تم إنشاء قناة الاتصالات بالفعل بحلول الوقت الذي يدخل بروتوكول Websocket في المشهد. تم تصميم Websocket على رأس TCP و HTTP حتى لا تضطر إلى تهتم بالأشياء التي تقوم بها هذه البروتوكولات بالفعل، بما في ذلك الوكلاء.

عند إنشاء اتصال WebSocket، يبدأ دائما باتصال HTTP / TCP الذي يتم "ترقيته" لاحقا أثناء مرحلة "المصافحة" من Websocket. في هذا الوقت، تم تأسيس النفق، وبالتالي فإن الوكلاء شفافة، فلا حاجة لرعايةهم.

فيما يتعلق بعملاء WebSocket وكلاء شفافة، أعتقد أن اتصالات عميل Websocket ستفشل معظم الوقت للأسباب التالية (غير اختبارها):

  • إذا كان الاتصال واضحا، نظرا لأن العميل لا يعرف أنه يتصل بخادم وكيل HTTP، فلن يقوم بإرسال تعليمات "الاتصال ب" التي تحول وكيل HTTP إلى وكيل TCP (مطلوب للعميل بعد Websocket مصافحة). يمكن أن تعمل إذا كان الوكيل يدعم Websocket Nectively ويقنع عنوان URL مع نظام WS بشكل مختلف عن HTTP.

  • إذا كان الاتصال في SSL، فإن الوكيل الشفاف لا يمكن أن يعرف الخادم الذي يجب أن يتصل به لأنه قام بفك تشفير اسم المضيف في طلب HTTPS. يمكن إما عن طريق إنشاء شهادة موقعة ذاتيا على الطاير (مثل SSLStrip) أو تقديم شهادة ثابتة الخاصة بفك تشفير الاتصالات ولكن إذا كان العميل يتحقق من صحة شهادة الخادم ستفشل (انظر https:/serverfault.com/Questions/369829/setting-up-a-transparent-ssl-proxy.).

لقد ذكرت وكلاء Java، والرد على ذلك أردت ذكر أن Java-Websocket يدعم الآن الوكلاء.

يمكنك رؤية المعلومات حول ذلك هنا: http://github.com/tootallnate/java-websocket/issues/88.

websocket-client, ، حزمة بيثون، تدعم الوكلاء، على الأقل على المخطط الآمن wss:// كما هو الحال في هذه الحالة، لا يحتاج الوكيل إلى أن تكون على دراية بالحركة

https://github.com/liris/liris/websocket-client/commit/9f4cdb9ec982bfedb9270e883adab2e028bbd8e9.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top