2010-07-20 17 views
10

मैं समझता हूं कि डिफ़ॉल्ट अधिकतम बफर आकार मैं इन कार्यों के साथ उपयोग कर सकता हूं 65507 (5535 - आईपीवी 4 हेडर - यूडीपी हेडर) है। हालांकि, क्या इसे बदलने का कोई तरीका है? मुझे एक बड़ा बफर ~ 66000 बाइट भेजने में सक्षम होना चाहिए। मैंने setockopt() फ़ंक्शन का उपयोग करने का प्रयास किया, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा था।यूडीपी sendto() और recvfrom() अधिकतम बफर आकार

धन्यवाद!

+0

क्या आप अपने बफर को विभाजित नहीं कर सकते हैं, ऑर्डर जानने के लिए इसे अतिरिक्त बिट्स के साथ टैग कर सकते हैं? – Scharron

+0

ऐसा लगता है कि मुझे इस तरह की एक योजना के साथ आना होगा। –

+1

5535 स्पष्टीकरण के लिए 65535 – kumar

उत्तर

12

सं

यूडीपी केवल एक आईपी पैकेट के डेटा हिस्से के रूप में एक आंकड़ारेख प्रदान करता है, एक IP पैकेट इस प्रकार हेडर सहित 2^16 बाइट्स, या के लिए 65,507 बाइट्स के लिए डेटा को सीमित करने के लिए एक 16 बिट लंबाई क्षेत्र है यूडीपी डेटा भाग (कोई आईपीवी 4 विकल्प नहीं मानते), यूडीपी के साथ बड़े पैकेट को संभालने के अलावा उन्हें कई पैकेट में विभाजित करने और रीसाइक्लिंग आदि को संभालने का कोई तरीका नहीं है।

+0

होना चाहिए। इसके बजाय टीसीपी का सुझाव देने के लिए –

6

यूडीपी विनिर्देश आपको पैकेट आकार के लिए यूडीपी हेडर में 16 बिट देता है, जिसका अर्थ है कि आप एक बार में 65k से अधिक नहीं भेज सकते हैं। आप इसे बदल नहीं सकते

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

+1

+1। – Matt

8

इसके अलावा, रास्ते में "बड़े" यूडीपी पैकेट को खोने की संभावना है, क्योंकि MTU सीमाओं के कारण रैपिंग आईपी पैकेट को खंडित किया जा सकता है। प्रत्येक टुकड़े खो सकते हैं और यूडीपी में कोई वसूली तंत्र नहीं है। इसलिए यूडीपी पेलोड के लिए सैद्धांतिक सीमा लगभग है। 64kB व्यावहारिक सीमा लगभग 1kB है।

+4

यह एक महत्वपूर्ण बात है। ईथरनेट आकार के टुकड़ों में विभाजित 65500 बाइट यूडीपी पैकेट एक ~ 37% यूडीपी पैकेट हानि दर में 1% अंतर्निहित खंड हानि दर को बदल देगा। बड़े यूडीपी पैकेट - ऐसा मत करो! – caf

+0

जहां मैं काम करता हूं हम बड़े पैकेट (और आवधिक एआरपी बूंदों को रोकने के लिए स्थिर एआरपी प्रविष्टियों) के साथ यूडीपी यातायात के लिए एक निजी सबनेट पर समर्पित इंटरफेस का उपयोग करके इस मुद्दे के आसपास मिलता है। यदि आप ऐसा नहीं कर सकते हैं, तो गिराए गए पैकेट के लिए तैयार रहें। –

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