कुछ आश्वासन है कि यदि आप एक टीसीपी स्ट्रीम की शुरुआत में 20 बाइट भेजते हैं, तो यह दो 10 बाइट के टुकड़ों के रूप में नहीं आएगा। ऐसा इसलिए है क्योंकि टीसीपी स्टैक ऐसे छोटे सेगमेंट नहीं भेजेगा: एक न्यूनतम एमटीयू आकार है। हालाँकि, अगर कहीं भी स्ट्रीम के बीच में सेंड होता है, तो सभी दांव बंद हो जाते हैं। यह हो सकता है कि आपका प्रोटोकॉल स्टैक किसी सेगमेंट को भरने और इसे भेजने के लिए डेटा की 10 बाइट लेता है, और फिर अगले दस बाइट्स दूसरे सेगमेंट में जाते हैं।
आपका प्रोटोकॉल स्टैक डेटा को विखंडू में तोड़ता है और उन्हें एक कतार में रखता है। चंक आकार MTU पथ पर आधारित हैं। यदि आप एक भेज कार्रवाई करते हैं, और अभी भी कतारबद्ध डेटा लंबित है, तो प्रोटोकॉल स्टैक आमतौर पर उस खंड पर नज़र रखेगा जो कतार की पूंछ पर है और देखें कि अधिक डेटा जोड़ने के लिए उस खंड में कमरा है या नहीं। कमरा एक बाइट जितना छोटा हो सकता है, इसलिए एक दो बाइट भेजने पर भी दो टूट सकते हैं।
दूसरे छोर पर, डेटा के विभाजन का मतलब है कि आंशिक रीड हो सकते हैं। जब एक सेगमेंट आता है तो एक प्राप्त ऑपरेशन संभावित रूप से जाग सकता है और डेटा प्राप्त कर सकता है। व्यापक रूप से कार्यान्वित सॉकेट्स एपीआई में, एक कॉल कॉल 20 बाइट्स के लिए पूछ सकता है, लेकिन यह 10. के साथ वापस आ सकता है, बेशक, इस पर एक बफ़रिंग परत बनाई जा सकती है जो 20 बाइट्स प्राप्त होने तक ब्लॉक हो जाएगी, या कनेक्शन टूट जाएगा। POSIX दुनिया में, वह API मानक I / O स्ट्रीम हो सकता है: आप fdopen
एक FILE *
स्ट्रीम प्राप्त करने के लिए सॉकेट डिस्क्रिप्टर कर सकते हैं, और आप इसका उपयोग fread
बफर भरने के लिए कर सकते हैं जैसे कि पूर्ण अनुरोध इतने सारे read
कॉल से संतुष्ट है जितना कि यह लेता है ।
यूडीपी डेटाग्राम डेटा को फ्रेम करते हैं। प्रत्येक सेंड कॉल एक डेटाग्राम उत्पन्न करता है (लेकिन कॉर्किंग के बारे में नीचे देखें)। दूसरे पक्ष को एक पूर्ण डेटाग्राम प्राप्त होता है (और, सॉकेट एपीआई में, इसे धारण करने के लिए बड़े बफर को निर्दिष्ट करना होगा, अन्यथा डेटाग्राम को छोटा कर दिया जाएगा)। बड़े डेटाग्राम आईपी विखंडन से खंडित हो जाते हैं, और अनुप्रयोगों के लिए पारदर्शी रूप से फिर से इकट्ठे होते हैं। यदि कोई टुकड़ा गायब है, तो पूरा डेटाग्राम खो गया है; उस स्थिति में आंशिक डेटा पढ़ने का कोई तरीका नहीं है।
एक ही डेटाग्राम को निर्दिष्ट करने के लिए कई ऑपरेशन की अनुमति देने वाले इंटरफ़ेस के लिए एक्सटेंशन मौजूद हैं। लिनक्स में, एक सॉकेट "कॉर्क" (भेजने से रोका) जा सकता है। जबकि यह corked है, लिखित डेटा को एक इकाई में इकट्ठा किया जाता है। फिर जब सॉकेट "अनकवर्ड" होता है, तो एक एकल डेटाग्राम भेजा जा सकता है।