2012-03-30 16 views
8

मैं सोच रहा था कि टीसीपी इन-ऑर्डर डिलीवरी को कैसे कार्यान्वित करता है।टीसीपी कैसे डेटा ट्रांसमिशन में लागू/गारंटी करता है?

कहते हैं कि यह घटनाओं

  1. packet1 भेजा है, प्राप्त एसीके की सूची है की सुविधा देता है।
  2. पैकेट 2 भेजा गया, एक प्राप्त नहीं हुआ।
  3. पैकेट 3 भेजा गया।
  4. पैकेट 4 भेजा गया।
  5. ack4 प्राप्त हुआ।
  6. ack3 प्राप्त हुआ।
  7. ack2 प्राप्त हुआ।

क्या आप मुझे बता सकते हैं कि क्रमशः क्या होता है?

उत्तर

7

संक्षिप्त उत्तर यह है कि प्रत्येक पैकेट में ऑफसेट जानकारी (अनुक्रम संख्या के रूप में छिपी हुई) होती है, यह निर्दिष्ट करता है कि स्ट्रीम में उसका पेलोड कहां है।

मान लें कि निम्न हुआ: पैकेट 1 प्राप्त हुआ है, पैकेट 2 प्राप्त नहीं हुआ है, और पैकेट 3 और 4 प्राप्त किए गए हैं। इस बिंदु पर टीसीपी स्टैक प्राप्त करना जानता है कि बफर पर पैकेट 3 और 4 की सामग्री को कॉपी करने के लिए कहां है, और यह जानता है कि इसे अभी भी पूर्व डेटा प्राप्त नहीं हुआ है, इसलिए यह पढ़ने के लिए पैकेट 1 डेटा उपलब्ध कराएगा, लेकिन यह नहीं करेगा पैकेट 2 या 4 डेटा उपलब्ध है जब तक कि पैकेट 2 प्राप्त नहीं होता है।

ट्रांसमीटर टीसीपी स्टैक आमतौर पर अगले एक को भेजने से पहले किसी एकल पैकेट के लिए स्वीकृति के लिए इंतजार नहीं करता है, लेकिन अगर उसे किसी दिए गए पैकेट के लिए पावती प्राप्त नहीं होती है (और एसीके सक्षम हो सकती है और दक्षता के लिए एक ही पैकेट में एक साथ बंडल की जाती है), यह एक एसीके प्राप्त होने तक इसे फिर से प्रेषित कर देगा।

घटनाओं का सटीक अनुक्रम नेटवर्क स्थितियों, टीसीपी स्टैक कार्यान्वयन, चयनित टीसीपी नीति, सॉकेट विकल्प और अन्य कारकों पर निर्भर करता है।

4

टीसीपी पैकेट अनुक्रम संख्या (शुरुआत के बाद से बाइट ऑफसेट, स्मृति से) और एसीके संदेश स्वीकार करते हैं कि एक विशिष्ट ऑफसेट प्राप्त हो गया है:

enter image description here

तो आप की तरह एक स्थिति लग सकती है :

data 1 (10 bytes)   -> 
          <- ack (10, data1) 
data 2 (15 bytes)   -> 
data 3 (10 bytes)   -> 
data 4 (8 bytes)   -> 
          <- ack (25, data1/2/3) 
          <- ack (33, data1/2/3/4) 

दूसरे शब्दों में, इस बिंदु जहां अपने बफ़र्स भरे हुए हैं अप करने के लिए स्वीकृतियां की परवाह किए बिना भेजने के लिए जारी रख सकते हैं (यह अस्वीकृत पैकेट मामले में यह उन्हें फिर से संचारित करने के लिए की जरूरत है रखने के लिए है)।

भेजता है और स्वीकृति के बीच यह "डिस्कनेक्ट" डेटा प्रवाह को बहुत तेज़ी से बढ़ा सकता है।

प्राप्त करने के अंत में, पैकेट क्रम से बाहर निकल सकते हैं, और उन्हें तब तक रखा जाता है जब तक कि उच्च स्तर पर कुछ स्तर तक पहुंचाया जा सके।

उदाहरण के लिए, data 3data 2 से पहले पहुंचे, तो प्राप्त करने वाला अंत data 2 तक पहुंच जाएगा, तब दोनों को डिलीवरी के लिए ऊपर भेजा जाएगा।