Тізбек нөмірлер арифметикасы және олардың қайнауын басқару
Serial number arithmetic
IETF протоколындағы тізбек нөмірлерінің санамалау әдісі. Байланыс протоколдарында пакеттерді салыстыру, реттеу үшін қолданылады. Қатесіз деректерді жіберуге көмектеседі.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Көптеген протоколдар мен алгоритмдер байланысты объектілерді сериялауды немесе тізімдеуді қажет етеді. Мысалы, байланыс протоколы белгілі бір пакет басқа пакетке "бұрын" немесе "кейін" келетінін білуі керек. IETF (Интернет-инженерлік жұмыс тобы) осы реттік нөмірлерді өңдеу және салыстыру мақсатында "реттік нөмірлер арифметикасын" анықтауға тырысады. Қысқаша айтқанда, абсолютті реттік нөмірдің мәні ең жоғары мәннің жартысынан артық төмендесе (мысалы, 8 биттік мәнде 128), ол бұрынғыдан кейін деп есептеледі, ал қалған төмендеулер бұрын деп есептеледі. Бұл міндет алғашқыда көрінетіндей қарапайым емес, себебі көптеген алгоритмдер тізбектік сандар үшін белгілі өлшемді (бинарлық) ұсынылымдарды қолданады. Алгоритмнің сандар тым үлкен болып, соңғы рет артқанда және олардың ең үлкен сандық диапазонында "айналып" (бірден үлкен оң саннан 0-ге немесе үлкен теріс санға өту) кеткенде "бұзылмауы" маңызды. Кейбір протоколдар бұл мәселелерді елемеуді және бағдарлама проблема туындамай тұрып ауыстырылуына (немесе олар қолдан шығарылуына) үміттенеді, санағыштар үшін өте үлкен бүтін сандарды пайдаланады (Y2K-ға қараңыз). Көптеген байланыс протоколдары жылжымалы терезе протоколын іске асыру кезінде пакеттік реттік нөмірлерге реттік нөмірлер арифметикасын қолданады. TCP-нің кейбір нұсқалары оралған реттік нөмірлерге (PAWS) қарсы қорғанысты қолданады. PAWS пакеттік уақыт белгілеріне дәл сол реттік нөмірлер арифметикасын қолданады, уақыт белгісін реттік нөмірдің жоғары біттерінің кеңейтілген түрі ретінде пайдаланады.
Many protocols and algorithms require the serialization or enumeration of related entities. For example, a communication protocol must know whether some packet comes "before" or "after" some other packet. The IETF (Internet Engineering Task Force) attempts to define "serial number arithmetic" for the purposes of manipulating and comparing these sequence numbers. In short, when the absolute serial number value decreases by more than half of the maximum value (e. g. 128 in an 8 bit value), it is considered to be "after" the former, whereas other decreases are considered to be "before". This task is rather more complex than it might first appear, because most algorithms use fixed size (binary) representations for sequence numbers. It is often important for the algorithm not to "break down" when the numbers become so large that they are incremented one last time and "wrap" around their maximum numeric ranges (go instantly from a large positive number to 0 or a large negative number). Some protocols choose to ignore these issues and simply use very large integers for their counters, in the hope that the program will be replaced (or they will retire) before the problem occurs (see Y2K). Many communication protocols apply serial number arithmetic to packet sequence numbers in their implementation of a sliding window protocol. Some versions of TCP use protection against wrapped sequence numbers (PAWS). PAWS applies the same serial number arithmetic to packet timestamps, using the timestamp as an extension of the high order bits of the sequence number.
Реттік нөмірлер бойынша операциялар
Тек реттік нөмірге кішкентай оң бүтін санды қосу және екі реттік нөмірді салыстыру талқыланады. Тек қолтаңбасыз екілік түрдегі іске асырулар қарастырылады, біттердегі кез келген мөлшері RFC (және төменде) бойынша "SERIAL BITS" деп белгіленеді.
Only addition of a small positive integer to a sequence number and comparison of two sequence numbers are discussed. Only unsigned binary implementations are discussed, with an arbitrary size in bits noted throughout the RFC (and below) as "SERIAL BITS".