क्या टीसीपी पैकेट हेडर की क्रम संख्या चारों ओर लिपटी है?


16

मैं सोच रहा था, क्योंकि टीसीपी हैडर फ़ील्ड में अनुक्रम संख्या को हैंडशेक के दौरान अनियमित रूप से चुना जाता है और धीरे-धीरे बढ़ाया जाता है क्योंकि पैकेट का आदान-प्रदान किया जाता है, 2 ^ 32 के बाद क्या होता है - initial_seq_no प्रसारण? क्या अनुक्रम संख्या चारों ओर घूमती है और 0 हो जाती है या प्रारंभिक मूल्य का पुन: उपयोग किया जाता है (या एक नया कनेक्शन आरंभिक है जहां पिछले एक को रोका गया है)?

जवाबों:


19

यह चारों ओर 0. के लिए जा रहा लपेटता के अनुसार आरएफसी 793 :

यह याद रखना आवश्यक है कि वास्तविक अनुक्रम संख्या स्थान परिमित है, हालांकि बहुत बड़ा है। यह स्थान 0 से 2 ** 32 तक है - 1. चूंकि अंतरिक्ष परिमित है, अनुक्रम संख्या के साथ काम करने वाले सभी अंकगणित को modulo 2 ** 32 किया जाना चाहिए। यह अहस्ताक्षरित अंकगणित अनुक्रम संख्या के संबंध को संरक्षित करता है क्योंकि वे 2 ** 32 - 1 से 0 तक फिर से चक्र करते हैं। कंप्यूटर मोडुलो अंकगणित के लिए कुछ सूक्ष्मताएं हैं, इसलिए ऐसे मूल्यों की तुलना को प्रोग्रामिंग में बहुत सावधानी बरतनी चाहिए। प्रतीक "= <" का अर्थ है "से कम या बराबर" (मोडुलो 2 ** 32)।


3
प्रत्येक संख्या हर दूसरी संख्या से कम या बराबर होती है, modulo 2 ** 32 ...
user20574

2
@ user20574 यही कारण है कि टीसीपी विंडो का आकार 1GB से अधिक बढ़ने की अनुमति नहीं है, और अनुक्रम संख्याओं की तुलना के लिए सबसे छोटा रास्ता लेना चाहिए (अर्थात अंतर सीमा -2 ^ 31 से 2 ^ 31 तक होना चाहिए)।
कास्परड सिप

17

क्या अनुक्रम संख्या चारों ओर लपेटती है और 0 बन जाती है?

हाँ। सभी विवरण टीसीपी विनिर्देश आरएफसी 793 - ट्रांसमिशन कंट्रोल प्रोटोकॉल में पाए जा सकते हैं ।


अनुक्रम संख्या

यह याद रखना आवश्यक है कि वास्तविक अनुक्रम संख्या स्थान परिमित है, हालांकि बहुत बड़ा है। यह स्थान 0 से 2 32 - 1 तक है।

चूंकि अंतरिक्ष परिमित है, अनुक्रम संख्या के साथ काम करने वाले सभी अंकगणित को modulo 2 32 किया जाना चाहिए । यह अहस्ताक्षरित अंकगणित अनुक्रम संख्याओं के संबंध को संरक्षित करता है क्योंकि वे 2 32 - 1 से 0 तक फिर से चक्र करते हैं।

कंप्यूटर मॉडुलो अंकगणित के लिए कुछ सूक्ष्मताएं हैं, इसलिए ऐसे मूल्यों की तुलना को प्रोग्रामिंग में बहुत सावधानी बरतनी चाहिए। प्रतीक "= <" का अर्थ है "से कम या बराबर" (मॉडुलो 2 32 )।

स्रोत RFC 793 - ट्रांसमिशन कंट्रोल प्रोटोकॉल


1
मुझे मैसेंजर शूट करने का मतलब नहीं है, लेकिन "उससे कम या बराबर (मोडुलो एन)"? स्पष्ट रूप से आरएफसी लेखक "कंप्यूटर मॉड्यूल अंकगणित की सूक्ष्मता" पर याद किया।
बेन वोइगट

ऐसे मामलों में जहां अधिकतम खिड़की कम से कम 2 ^ 31, और अगर हो जाएगा xऔर yप्रकार के होते हैं uint32_tइसे परिभाषित करने की व्यावहारिक है x<=yमतलब करने के लिए (uint32_t)(y-x) < 0x80000000
सुपरकट

@BenVoigt, नैतिक संभावना है कि उन्होंने बाद में एक आरएफसी उपकरण
Carsten S

@ कर्स्टन जो एक उपयोगी अंकगणित है, लेकिन यह "अंकगणितीय मोडुलो एन" नहीं है
बेन वायगेट

1
@BenVoigt, हाँ, जो भी हो। Btw, मुझे अच्छी तरह से पता है कि समूह Z / (n) का आदेश नहीं दिया गया है, लेकिन मैं संदर्भ में बयानों की व्याख्या करने में भी सक्षम हूं।
कार्स्टन एस।

7

हाँ, यह चारों ओर लपेटता है। आप इसे विकिपीडिया पर या RFC1323 पर पढ़ सकते हैं , जो दिखाता है कि लिपटे अनुक्रम संख्या से कैसे बचाव किया जा सकता है।

मुझे बोली:

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

तथा:

PAWS उसी TTR टाइमस्टैम्प विकल्प का उपयोग करता है जैसा कि पहले वर्णित RTTM तंत्र करता है, और यह मानता है कि प्रत्येक प्राप्त TCP खंड (डेटा और ACK खंडों सहित) में एक टाइमस्टैम्प SEG.TSval होता है जिसके मान समय में घटते हुए मोनोटोन होते हैं। मूल विचार यह है कि एक खंड को एक पुराने डुप्लिकेट के रूप में त्याग दिया जा सकता है यदि यह टाइमस्टैम्प SEG.TSval के साथ प्राप्त होता है जो हाल ही में इस कनेक्शन पर प्राप्त कुछ टाइमस्टैम्प से कम है।

PAWS और RTTM तंत्र दोनों में, "टाइमस्टैम्प" एक 32-बिट स्पेस में 32-बिट अहस्ताक्षरित पूर्णांक हैं। इस प्रकार, "कम से कम" को उसी तरह से परिभाषित किया जाता है जैसे कि यह टीसीपी अनुक्रम संख्या के लिए है, और उसी कार्यान्वयन तकनीक लागू होती है। यदि s और t टाइमस्टैम्प मान हैं, तो s <t यदि 0 <(t - s) <2 ** 31 है, तो अहस्ताक्षरित 32-बिट अंकगणित में गणना की गई है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.