tcp - WebSockets पिंग/पोंग, क्यों नहीं टीसीपी की रखवाली?




keep-alive (3)

EJP के उत्तर के अलावा मुझे लगता है कि यह HTTP प्रॉक्सी तंत्र से भी संबंधित हो सकता है। Websocket कनेक्शन एक (HTTP) प्रॉक्सी सर्वर के माध्यम से भी चल सकता है। ऐसे मामलों में टीसीपी की निगरानी केवल प्रॉक्सी तक कनेक्शन की जांच करेगी और एंड-टू-एंड कनेक्शन नहीं।

वेबसॉकेट के पास दूसरे छोर पर पिंग भेजने का विकल्प होता है, जहां दूसरे छोर को एक पोंग के साथ जवाब देना होता है।

पिंग फ्रेम की प्राप्ति पर, एक समापन बिंदु को जवाब में एक पोंग फ्रेम भेजना चाहिए, जब तक कि यह पहले से ही एक बंद फ्रेम प्राप्त नहीं करता है। यह व्यावहारिक होने के साथ ही पांग फ्रेम के साथ जवाब देना चाहिए।

टीसीपी रखने के रूप में कुछ समान प्रदान करता है :

[Y] ou अपने सहकर्मी को एक बिना जांच के पैकेट भेजते हैं जिसमें कोई डेटा नहीं होता है और ACK का झंडा चालू हो जाता है। आप टीसीपी / आईपी विनिर्देशों के कारण डुप्लिकेट एसीके के एक प्रकार के रूप में कर सकते हैं, और दूरस्थ समापन बिंदु में कोई तर्क नहीं होगा, क्योंकि टीसीपी एक स्ट्रीम-उन्मुख प्रोटोकॉल है। दूसरी ओर, आपको दूरस्थ होस्ट (जिसमें टीसीपी / आईपी) का समर्थन करने की आवश्यकता नहीं है, को बिना किसी डेटा और एसीके सेट के साथ उत्तर मिलेगा।

मुझे लगता है कि टीसीपी की रखवाली अधिक कुशल है, क्योंकि इसे कर्नेल के भीतर उपयोगकर्ता स्थान तक डेटा स्थानांतरित करने की आवश्यकता के बिना, एक वेबसोकेट फ्रेम को पार्स करने, एक प्रतिक्रिया फ्रेम को शिल्प करने और ट्रांसमिशन के लिए कर्नेल में वापस सौंपने की आवश्यकता के बिना नियंत्रित किया जा सकता है। यह नेटवर्क ट्रैफिक भी कम है।

इसके अलावा, WebSockets स्पष्ट रूप से हमेशा TCP पर चलने के लिए निर्दिष्ट किया जाता है; वे परिवहन-परत अज्ञेयवादी नहीं हैं, इसलिए टीसीपी की रखवाली हमेशा उपलब्ध होती है:

WebSocket प्रोटोकॉल एक स्वतंत्र TCP- आधारित प्रोटोकॉल है।

तो कोई टीसीपी की रखवाली के बजाय कभी भी वेबसोकेट पिंग / पोंग का उपयोग क्यों करना चाहेगा?


एक वेब प्रॉक्सी के माध्यम से टीसीपी कीपेलिव न करें। वेब प्रॉक्सी के माध्यम से वेबसोकेट पिंग / पोंग को अग्रेषित किया जाएगा। TCP अंतरण को TCP समापन बिंदु के बीच कनेक्शन की निगरानी के लिए डिज़ाइन किया गया है। वेब सॉकेट एंडपॉइंट टीसीपी एंडपॉइंट के बराबर नहीं है। एक websocket कनेक्शन दो websocket समापन बिंदु के बीच कई TCP कनेक्शन का उपयोग कर सकता है।


http://www.whatwg.org/specs/web-apps/current-work/multipage/network.html#ping-and-pong-frames

.3.4 पिंग और पोंग फ्रेम

WebSocket प्रोटोकॉल विनिर्देश पिंग और पोंग फ़्रेमों को परिभाषित करता है जो कि जीवित, हृदय-धड़कन, नेटवर्क स्थिति जांच, विलंबता इंस्ट्रूमेंटेशन और आगे के लिए उपयोग किया जा सकता है। वर्तमान में ये एपीआई में उजागर नहीं हैं।

उपयोगकर्ता एजेंट पिंग और अनचाहे पोंग फ्रेम को इच्छानुसार भेज सकते हैं, उदाहरण के लिए स्थानीय नेटवर्क NAT मैपिंग को बनाए रखने के प्रयास में, असफल कनेक्शन का पता लगाने के लिए, या उपयोगकर्ता को विलंबता मैट्रिक्स प्रदर्शित करने के लिए । उपयोगकर्ता एजेंटों को सर्वर की सहायता के लिए पिंग या अनचाही पोंग का उपयोग नहीं करना चाहिए; यह माना जाता है कि सर्वर जब भी सर्वर की जरूरतों के लिए उपयुक्त होंगे

WebSockets को RTC को ध्यान में रखते हुए विकसित किया गया है, इसलिए जब मैं पिंग / पोंग कार्यक्षमता को देखता हूं, तो मुझे माप का एक तरीका भी दिखाई देता है। तथ्य यह है कि पिंग पिंग की तुलना में एक ही पेलोड को वापस करना चाहिए, टाइमस्टैम्प भेजने के लिए इसे बहुत सुविधाजनक बनाता है, और फिर क्लाइंट से सर्वर या उपाध्यक्ष कविता के लिए विलंबता की गणना करें।