दिलचस्प पोस्ट
एक टेम्पलेट क्लास का कार्यान्वयन और घोषणा उसी हेडर फ़ाइल में क्यों होना चाहिए? रेल में एक ही फ़ॉर्म के लिए एकाधिक सबमिट बटन कैसे बनाऊँ? वेक्टर <bool> एसटीएल कंटेनर क्यों नहीं है? .NET में newlines पर एक स्ट्रिंग को विभाजित करने का सबसे आसान तरीका? क्या अस्थायी चर मेरे प्रोग्राम को धीमा कर देते हैं? क्यों विम विशेषज्ञों टैब पर बफ़र्स पसंद करते हैं? जावा का अंतिम बनाम सी ++ नोड। जेएस में चक्रीय निर्भरताओं से निपटने के लिए एक नकली दस्तावेज़ को रूबी हैश में कनवर्ट करें मैं इमियॉप्शन को कैसे पूरा करता हूं? एमजीसी में एक सूची <ऑब्जेक्ट> से रेजर ड्रॉपडाउन सूची बनाना एएसपीनेट वेब एपीआई में व्युत्पन्न प्रकार के जेसन को डीएसरायलिज़ करना मैं बच निकलने वाली यूनिकोड के साथ स्ट्रिंग कैसे व्याख्या करूं? जेफ्रैम को विस्तार किए बिना getGraphics () का इस्तेमाल करते हुए ऑब्जेक्ट को आकर्षित करना नक्शा बनाम ऑब्जेक्ट में जावास्क्रिप्ट

जब आप विश्वसनीय यूडीपी की आवश्यकता होती है तो आप क्या उपयोग करते हैं?

यदि आपके पास ऐसी स्थिति है जहां एक टीसीपी कनेक्शन संभावित रूप से बहुत धीमा है और एक यूडीपी 'कनेक्शन' संभावित रूप से अविश्वसनीय है तो आप क्या उपयोग करते हैं? वहाँ विभिन्न मानक विश्वसनीय यूडीपी प्रोटोकॉल हैं, आप उनके साथ क्या अनुभव है?

कृपया प्रति उत्तर एक प्रोटोकॉल पर चर्चा करें और अगर कोई अन्य व्यक्ति आपके द्वारा उपयोग किए गए किसी का उल्लेख कर चुका है, तो उसे मतदान करने के बारे में विचार करें और यदि आवश्यक हो तो विस्तृत करने के लिए एक टिप्पणी का उपयोग करें।

मुझे यहां विभिन्न विकल्पों में दिलचस्पी है, जिसमें से टीसीपी पैमाने के एक छोर पर है और यूडीपी अन्य पर है विभिन्न विश्वसनीय यूडीपी विकल्प उपलब्ध हैं और प्रत्येक यूडीपी के लिए टीसीपी के कुछ तत्व लाते हैं।

मुझे पता है कि अक्सर टीसीपी सही विकल्प है, लेकिन विकल्पों की एक सूची होने पर अक्सर उस निष्कर्ष पर आने में मदद करने के लिए उपयोगी होता है एनेट, आरयूडीपी, आदि जैसी चीजें यूडीपी पर बनाई गई हैं, विभिन्न पेशेवर और विपक्ष हैं, क्या आपने उन्हें इस्तेमाल किया है, आपके अनुभव क्या हैं?

संदेह से बचने के लिए इसमें कोई और जानकारी नहीं है, यह एक काल्पनिक प्रश्न है और जिसकी मुझे उम्मीद थी कि उन प्रतिक्रियाओं की एक सूची प्राप्त करेगी, जो कि निर्णय लेने की जरूरत वाले किसी भी व्यक्ति के लिए उपलब्ध विभिन्न विकल्पों और विकल्पों का विस्तृत विवरण प्राप्त करें।

वेब के समाधान से एकत्रित समाधान "जब आप विश्वसनीय यूडीपी की आवश्यकता होती है तो आप क्या उपयोग करते हैं?"

समस्या के डोमेन पर कुछ अतिरिक्त जानकारी के बिना इस सवाल का जवाब देना मुश्किल है। उदाहरण के लिए, आप किस डेटा का उपयोग कर रहे हैं? कितनी बार? डेटा की प्रकृति क्या है? (उदा। क्या यह अनोखा है, डेटा बंद है? या यह नमूना डेटा की एक धारा है? आदि) आप किस मंच के लिए विकास कर रहे हैं? (जैसे डेस्कटॉप / सर्वर / एम्बेडेड) यह निर्धारित करने के लिए कि "बहुत धीमी" से आपका क्या मतलब है, आप किस नेटवर्क माध्यम का उपयोग कर रहे हैं?

लेकिन (बहुत!) सामान्य शब्दों में मुझे लगता है कि आप गति के लिए टीसीपी को हरा करने के लिए वास्तव में कड़ी मेहनत कर रहे हैं, जब तक आप उन डेटा के बारे में कुछ कठिन धारणाएं नहीं कर सकते जो आप भेजने का प्रयास कर रहे हैं

उदाहरण के लिए, यदि वह डेटा जिसे आप भेजने का प्रयास कर रहे हैं, तो ऐसा है कि आप एक पैकेट के नुकसान को बर्दाश्त कर सकते हैं (जैसे नियमित रूप से नमूना डेटा जहां सिग्नलिंग दर बैंडविड्थ की तुलना में कई गुना अधिक है) तो आप शायद संचरण की कुछ विश्वसनीयता को सुनिश्चित करने से सुनिश्चित करें कि आप डेटा भ्रष्टाचार (जैसे एक अच्छा सीआरसी के उपयोग के माध्यम से) का पता लगा सकते हैं।

लेकिन अगर आप एक पैकेट के नुकसान को बर्दाश्त नहीं कर सकते हैं, तो आपको टीसीपी की विश्वसनीयता के लिए तकनीकों के प्रकार को शुरू करना होगा। और, उचित मात्रा में काम किए बिना, आप पा सकते हैं कि आप उन तत्वों को एक उपयोगकर्ता-स्थान समाधान में बनाने के लिए शुरू कर रहे हैं जिसमें सभी गतिशील मुद्दों के साथ चलना है।

एससीटीपी के बारे में क्या यह आईईटीएफ (आरएफसी 4960) द्वारा एक मानक प्रोटोकॉल है

इसमें क्षमता में कमी है जो गति के लिए मदद कर सकता है

अपडेट: टीसीपी और एससीटीपी के बीच एक तुलना दिखाती है कि जब तक दो इंटरफेस उपयोग नहीं किए जा सकते हैं, प्रदर्शन तुलनीय हो जाते हैं।

अद्यतन: एक अच्छा परिचयात्मक लेख

एनईईटी – http://enet.bespin.org/

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

एनईईटी आपको डेटा के कई 'चैनल' भेजने और अविश्वसनीय, विश्वसनीय या अनुक्रमित होने के लिए भेजे गए डेटा के लिए विकल्प देता है। इसमें पीयर को सहारा देने के लिए पूर्ववर्ती सहकर्मी भी शामिल है जो जीवित रहने के काम करता है।

हमारे पास कुछ रक्षा उद्योग के ग्राहकों हैं जो यूडीटी (यूडीपी-आधारित डेटा अंतरण) का उपयोग करते हैं (देखें http://udt.sourceforge.net/ ) और इसके साथ बहुत खुश हैं। मुझे लगता है कि इसके पास एक मैत्रीपूर्ण बीएसडी लाइसेंस भी है

जैसा कि दूसरों ने बताया है, आपका प्रश्न बहुत सामान्य है, और चाहे टीसीपी की तुलना में 'तेज' कुछ भी आवेदन के प्रकार पर निर्भर करता है।

टीसीपी आम तौर पर उतना ही तेजी से होता है जब यह एक मेजबान से डेटा के विश्वसनीय स्ट्रीमिंग के लिए दूसरे स्थान पर जाता है हालांकि, यदि आपका एप्लिकेशन ट्रैफ़िक के बहुत छोटे फटों और प्रतिक्रियाओं की प्रतीक्षा करता है, तो यूडीपी लेटेंसी को कम करने के लिए अधिक उपयुक्त हो सकता है

एक आसान मध्य जमीन है नागल के एल्गोरिदम टीसीपी का हिस्सा है जो यह सुनिश्चित करने में मदद करता है कि प्रेषक डेटा के बड़े प्रवाह के रिसीवर को डूब नहीं करता है, जिसके परिणामस्वरूप भीड़ और पैकेट नुकसान होता है।

अगर आपको टीसीपी के विश्वसनीय, इन-ऑर्डर डिलीवरी की जरूरत है, और यूडीपी की तेज़ी से प्रतिक्रिया की जरूरत है, और डेटा की बड़ी धाराओं भेजने से भीड़ को लेकर चिंता करने की आवश्यकता नहीं है, तो आप नागल के एल्गोरिदम को निष्क्रिय कर सकते हैं:

int opt = -1; if (setsockopt(sock_fd, IPPROTO_TCP, TCP_NODELAY, (char *)&opt, sizeof(opt))) printf("Error disabling Nagle's algorithm.\n"); 

आरयूडीपी – विश्वसनीय उपयोगकर्ता डाटाग्राम प्रोटोकॉल

यह प्रदान करता है:

  • प्राप्त पैकेटों की पावती
  • वायु और भीड़ नियंत्रण
  • खोए गए पैकेटों का पुनःसंचालन
  • ओवरबफरिंग (रीयल-टाइम स्ट्रीमिंग से तेज)

यह थोड़ा और अधिक विन्यास करने योग्य है, जो एलीट्स को फिर से एईनेट रखने के संबंध में है लेकिन यह आपको कई विकल्प नहीं देता है (यानी सभी डेटा विश्वसनीय और अनुक्रमित नहीं है जो कि आप तय किए गए बिट्स हैं)। यह लागू करने के लिए काफी सीधे आगे दिखता है

जो कोई भी यह तय करता है कि ऊपर दी गई सूची पर्याप्त नहीं है और वे अपने विश्वसनीय विश्वसनीय यूडीपी को विकसित करना चाहते हैं, उन्हें निश्चित रूप से Google QUIC स्पेक पर एक नज़र रखना चाहिए क्योंकि इसमें बहुत से जटिल कोने वाले मामलों और सेवा हमलों की संभावित अस्वीकृति शामिल है। मैं अभी तक इसके क्रियान्वयन के साथ नहीं खेला है, और आप जो कुछ भी प्रदान करते हैं, उसे आप सभी की जरूरत नहीं है या इसकी ज़रूरत नहीं है, लेकिन एक नया "विश्वसनीय" यूडीपी डिज़ाइन तैयार करने से पहले दस्तावेज अच्छी तरह लायक है।

QUIC के लिए एक अच्छा कूदने वाला बिंदु यहां है , क्रोमियम ब्लॉग पर

वर्तमान QUIC डिजाइन दस्तावेज़ यहां पाये जा सकते हैं ।

यदि आपके पास ऐसी स्थिति है जहां एक टीसीपी कनेक्शन संभावित रूप से बहुत धीमा है और एक यूडीपी 'कनेक्शन' संभावित रूप से अविश्वसनीय है तो आप क्या उपयोग करते हैं? वहाँ विभिन्न मानक विश्वसनीय यूडीपी प्रोटोकॉल हैं, आप उनके साथ क्या अनुभव है?

आपके वाक्य में महत्वपूर्ण शब्द 'संभावित रूप से' है मुझे लगता है कि आपको वास्तव में स्वयं को साबित करने की आवश्यकता है कि टीसीपी वास्तव में आपकी आवश्यकताओं के लिए बहुत धीमा है अगर आपको अपने प्रोटोकॉल में विश्वसनीयता की जरूरत है।

यदि आप यूडीपी से विश्वसनीयता प्राप्त करना चाहते हैं तो आप मूल रूप से यूडीपी के शीर्ष पर टीसीपी की कुछ विशेषताओं को पुनः कार्यान्वित करने जा रहे हैं जो शायद पहली जगह में टीसीपी का उपयोग करने से कुछ धीमी गति से कर देगा।

प्रोटोकॉल डीसीसीपी, आरएफसी 4340 में मानकीकृत, "डेटाग्राम कन्जेंस कंट्रोल प्रोटोकॉल" हो सकता है कि आप क्या चाहते हैं।

ऐसा लगता है कि लिनक्स में लागू होता है।

आरएफसी 5405 हो सकता है, "यूनिकस्ट यूडीपी प्रयोक्ता के दिशानिर्देशों के लिए आवेदन डिजाइनर" आपके लिए उपयोगी होंगे

क्या आपने अपने डेटा को संप्रेषित करने पर विचार किया?

जैसा कि ऊपर बताया गया है, हमें आपकी समस्या की सटीक प्रकृति के बारे में जानकारी की कमी है, लेकिन उन्हें परिवहन के लिए डेटा को संपीड़ित करने में मदद मिल सकती है।

आरयूडीपी खेल के लिए कई सॉकेट सर्वर कुछ इसी तरह लागू करते हैं।

यूडीपी का उपयोग करने वाली विश्वसनीयता हासिल करने का सबसे अच्छा तरीका अनुप्रयोग प्रोग्राम में विश्वसनीयता बनाए रखना है (उदाहरण के लिए, पावती और पुनःसंरचना तंत्र को जोड़कर)