अगर एक tcp क्लाइंट 10000 से 20000 तक अनुक्रम संख्या के साथ, एक tcp सर्वर पर एक पैकेट भेजता है। tcp seq_ack 20001 के साथ ACK का जवाब देगा।
अगर मैं क्लाइंट से टीसीपी पैकेट को इंटरसेप्ट करता हूं, और पैकेट को 2 tcp सेगमेंट में विभाजित करता हूं, तो 10000 से 15000 तक seq के साथ, और दूसरा 15001 से 20000 तक seq के साथ। और फिर इन 2 TCP सेगमेंट को TCP सर्वर पर भेज दिया जाता है। मान लें कि मार्ग में दूसरा खंड खो गया है। टीसीपी सर्वर 15001 seq_ack के साथ एक ACK का जवाब देगा।
अब चूंकि टीसीपी ग्राहक 10000 से 20000 के साथ एक इंटीग्रल पैकेट भेजते हैं, लेकिन ग्राहक के दृष्टिकोण से, यह 15001 के साथ एक एसीके मिलता है, यह अजीब है। यह कैसे प्रतिक्रिया देगा? सिद्धांत रूप में, क्लाइंट को seq 15001 से 20000 तक बाइट्स को फिर से जमा करना चाहिए, अर्थात्, ग्राहक seq 15001 से नए पैकेट प्रसारित करेगा। लेकिन टीसीपी स्टैक कार्यान्वयन में अभ्यास के बारे में कैसे, यह सिद्धांत के समान है?
मुझे लगता है कि टीसीपी भेजने वाले बफर में, जब एक टीसीपी सेगमेंट भेजा जाता है, तब भी खंड एसीके तक रहता है। जब ACK आता है, तो खंड के लिए ये बाइट्स बफर से साफ हो जाते हैं। सेंड बफ़र में एक पॉइंटर होता है, जब एक ACK आता है, पॉइंटर उस स्थान की ओर इशारा करता है जहाँ ack_seq से संगत होता है। Ack_seq के नीचे आने वाले बाइट्स साफ़ हो जाते हैं। इस तरह से, पूरे खंड को फिर से पढ़ने की जरूरत नहीं है?