2011-01-29 16 views
13

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

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

+2

मुझे लगता है कि हैंडशेक की विलंबता सबसे महत्वपूर्ण लागत है। – CodesInChaos

+0

अहह अच्छा बिंदु। पूरे हैंडशेक को पूरा होने तक कनेक्शन को तब तक खुला नहीं माना जाता है। हालांकि एक बार खुलने पर आप प्रत्येक सेगमेंट (स्लाइडिंग विंडो की वजह से) के लिए इंतजार किए बिना डेटा स्ट्रीम कर सकते हैं – seand

+0

कोई भी 'प्रत्येक सेगमेंट पर एक' नहीं है। – EJP

उत्तर

6

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

9

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

और फिर 3-तरफा हैंडशेक भी है। कुछ ब्राइंडेड (और/या दुर्भावनापूर्ण सिस्टम) प्रक्रिया का दुरुपयोग कर सकते हैं ('syn बाढ़' देखें), या बस अपने अंत में कनेक्शन छोड़ दें, जिससे आपका सिस्टम प्रतिक्रिया या नज़दीकी नोटिस के लिए प्रतीक्षा कर रहा है जो कभी नहीं आएगा। प्लस साइड यह है कि टीसीपी के साथ यह सुनिश्चित करने के लिए सिस्टम पैकेट को प्राप्त करने के लिए सबसे अच्छा करेगा। यूडीपी के साथ, बिल्कुल कोई गारंटी नहीं है।

4

विकल्प 1: एक TCP कनेक्शन बनाने के सामान्य लागत हैं:

  1. बनाएं गर्तिका कनेक्शन
  2. डेटा भेजें
  3. गर्तिका कनेक्शन नीचे आंसू

चरण 1: आवश्यक है पैकेट का आदान-प्रदान, इसलिए नेटवर्क विलंबता और गंतव्य सर्वर के सेवा समय से & तक देरी हो रही है। किसी भी बॉक्स पर कोई महत्वपूर्ण CPU उपयोग शामिल नहीं है।

चरण 2: संदेश के आकार पर निर्भर करता है।

चरण 3: आईआईआरसी, सिर्फ 'बंद करने वाला' पैकेट भेजता है, गंतव्य एके के लिए प्रतीक्षा नहीं करता है, इसलिए कोई विलंबता शामिल नहीं है।

विकल्प 2: यूडीपी की लागत: आवश्यक न्यूनतम सेटअप, कोई विलंबता चिंता: *

  1. बनाएं यूडीपी वस्तु
  2. डेटा
  3. बंद यूडीपी वस्तु

चरण 1 भेजें , बहुत तेज़।

चरण 2: आकार की सावधानी बरतें, यूडीपी में कोई पुन: प्रेषण नहीं है क्योंकि इससे कोई परवाह नहीं है कि पैकेट किसी के द्वारा प्राप्त किया गया था या नहीं। मैंने सुना है कि संदेश जितना बड़ा होगा, डेटा की अधिक संभावना दूषित हो जाएगी, और अंगूठे का नियम यह है कि आप 20 एमबी से अधिक संदेशों का एक निश्चित प्रतिशत खो देंगे।

चरण 3: न्यूनतम कार्य, न्यूनतम समय।

विकल्प 3: का प्रयोग करें ZeroMQ इसके बजाय

आप पुनर्संयोजन समय को कम करने के लक्ष्य के साथ यूडीपी के लिए टीसीपी तुलना कर रहे हैं। एक नाइस कंप्रेमी है: ज़ीरोएमक्यू सॉकेट।

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

विवरण के लिए: ZeroMQ.org देखें।

यह बहुत तेज गति और गलती सहनशील है, और उन कारणों से वित्तीय उद्योग में बढ़ते उपयोग में है।

+2

मुझे यकीन नहीं है कि आपको यूडीपी के लिए 20 एमबी नंबर कहां मिला है। आईपीवी 4 में, अधिकतम संदेश आकार 65,507 बाइट्स (65,535 - 8 बाइट यूडीपी हेडर - 20 बाइट आईपी हेडर) है, विकिपीडिया के मुताबिक। शायद आप आईपीवी 6 मान रहे हैं? – Joe

+0

मैं पैकेट आकार का जिक्र नहीं कर रहा था, लेकिन संदेश आकार के लिए। इसके अलावा, संख्या एक सुनवाई हेरिस्टिक है। स्थिति: यूडीपी के माध्यम से एक उचित उच्च गति वाले आंतरिक डेटासेंटर नेटवर्क पर, आकार 20 एमबी के एन संदेशों के किसी भी सेट में, उनमें से 5% एन (एन * 0.05) दूषित हो गए थे। यह एक फायरहोज डब्ल्यू/विशाल डेटा एक-> कई था, जिसमें बॉक्स के विभिन्न सेट उन्हें संबोधित संदेशों के लिए सुनते थे। गलतफहमी के लिए खेद है। उनके (मेरे सहकर्मी) संदेश मुझे यह था कि अगर उन्होंने बड़े हिस्से का उपयोग किया, तो उच्च प्रतिशत में त्रुटियां होंगी और कुछ भी नहीं भेजेगा। पुनः भेजने के अनुरोध के लिए उनके पास बैकचैनल था। –

+2

यूडीपी में एक 64k डेटाग्राम से बड़े संदेश की कोई अवधारणा नहीं है, क्योंकि यूडीपी हेडर में आकार फ़ील्ड 16 बिट्स (https://tools.ietf.org/html/rfc768) है। यह आमतौर पर अंतर्निहित परिवहन परत के एमटीयू से बड़ा होता है, इसलिए आईपी की संभावना कम हो जाएगी और 64k पैकेट को फिर से इकट्ठा किया जाएगा। यदि कोई टुकड़ा गुम हो जाता है, तो पूरा पैकेट खो जाता है, इसलिए एमटीयू से अधिक की सिफारिश नहीं की जाती है। एक 20 एमबी संदेश के लिए यूडीपी या टीसीपी जैसे कुछ और उच्च स्तर के प्रोटोकॉल की आवश्यकता होती है। यदि आपके पास बड़े संदेशों का संदर्भ है, तो मुझे इसे पढ़ने में दिलचस्पी है। – Joe

संबंधित मुद्दे