Установяване на връзка

Осъществяване на връзка

"Три ръкостискане" - процедура, използвана при установяване на връзка. Тази процедура обикновено се инициира от един TCP и отговори на от друг TCP. Тази процедура също работи, ако два TCP едновременно започне. Когато инициализиране опит се извършва от двете страни по едно и също време, всеки TCP получава сегмент от "SYN", която не носи признание, след като е изпратил "SYN". Разбира се, "SYN" сегмент от пристигането на стари дубликати да впечатли на получателя, че едновременно връзка. Правилното използване на "Reset" сегменти могат да избегне двусмислието тези случаи.

По-долу са няколко примера за съединения инициализация. Въпреки, че тези примери не показват връзка синхронизиране по сегменти, носещи данни, че е напълно законна, тъй като TCP програма получаване сегменти не дават данни за клиента, докато не е ясно, данните са валидни (т.е. данните на потребителя, трябва да се "съхранява", докато докато връзката не навлиза в състояние на СЪЗДАДЕНА). Трипътен ръкостискане намалява възможността за фалшиви връзки. Получаване на информация за извършване на проверката се постига чрез прилагане на обмен между паметта на компютъра и циркулира в мрежата на съобщения.

Тук, "състояние" програмата TCP протокол съответства на момента, веднага след изпращане или получаване на сегмент (съдържанието на сегмента е показано на средната колона на всеки ред). съдържанието на сегмента са показани в съкратена форма, с пореден номер, за контрол на знамена, както и поле ACK. Други области, като дължината на прозореца и полето за данни остават извън обхвата на нашия интерес.

Фиг. 7 стари дубликат сигнал SYN Получаване

Като прост пример, помислете за ситуацията, за да се получи стария дубликат на фигура 7. В съответствие 3 стари SYN сигнал достига дубликат TCP B. Последната програма не може да се определи, че това е един стар екземпляр, и следователно отговаря на обичайния начин (линия 4).

TCP програма открива стойност за грешка в областта и затова се връща RST АСК сигнал (нулиране). Така SEQ поле стойност се подбира така, че да се направи правдоподобно сегмент. Pro гр TCP B след получаване на сигнала се променя RST към държавата слушате. Когато на линията 6 сигнал SYN валидна и не остарели достигне TCP B програма, процеса на синхронизация се случва обикновено. Ако SYN сигнала по линия 6 достига TCP B RST програма сигнал и преди, може да е по-сложна комбинация с размяна корпус RST и в двете посоки.

Половин отворени връзки и други аномалии

Вече установен връзка се нарича "полуотворена", ако един от връзка TCP затворена, или да го изостави. И той го направи по края си, без да каже на партньора си. Също така, може да се случи тази ситуация, ако синхронизацията е нарушен в края на линията, поради спиране, което доведе до загуба на информация в паметта. Ако тези съединения е опит за изпращане на данни в двете посоки, а след това връзката рестартиране. Но се очаква, че полуотворените връзки са рядкост, и процедурата по възстановяване е леко включат.

Ако в края на съединението А се счита за несъществуващ, и клиента в края на Б се опитва да изпраща данни, това ще доведе до факта, че в края на TCP Б ще получи съобщението за контрол на рестартиране. Това съобщение се показва програмата TCP в края на Б, че нещо не е наред и се предлага да се премахне връзката.

Да предположим, че двама клиенти в точки А и Б да общуват помежду си, и в този момент има срив, в резултат на загуба на информация в паметта на програмата в края на TCP А. В зависимост от операционната система, сервизната програма TCP А, е вероятно да бъдат включени механизъм за коригиране на грешката. Когато TCP програма ще се стартира отново, много е вероятно отново да започне работата си от началото или от гледна точка на възстановяване. В резултат на това, програмата А, най-вероятно ще се опитате да отворите съединение (OPEN) или изпращане на информация (ИЗПРАТИ) чрез съединение, което е на мнение, е отворен. В последния случай, от местната програма TCP (в края A) е получил съобщение "връзка не е отворен." Когато се опитвате да се установи TCP връзка програма ще изпрати един сегмент, съдържащ сигнал SYN. Този сценарий води до положението показано на фигура 8. След TCP А катастрофи, потребителят се опитва да отвори отново връзката. Програма TCP B, междувременно продължава да вярва, че връзката ще остане отворена.

Фиг. 8 откриване полуотворена

Когато по линия 3 SYN сигнал достига програма B TCP, което е в синхрон и входящия сегмент е извън прозореца, програма TCP В отговор на това потвърждение, показва номера на реда, че желае да получава (АСК = 100). TCP е програма, виждайки, че в рамките на отсечката 4 не се потвърди, че е пратил, той определя липсата на синхронизация и изпраща нулиране (RST), тъй като открили, че съединението е полуотворена. На линия 5 програма TCP Б прекъсва връзката. TCP програма ще продължи да се опита да установи връзка.

Сега проблемът е решен с с проста потвърждение на трите начина (Фигура 5).

Друга интересна история се провежда, ако TCP програма катастрофи и TCP B програма, като се има предвид това, което е в състояние на синхронизация, като се опитва да изпрати данните. Това положение е показано на фигура 9.

В този случай, данните, изпращани от програма TCP В, и дойдоха в програмата TCP А (линия 2). Те ще бъдат отхвърлени, тъй като се използва връзката не съществува. Въз основа на тази TCP програма изпраща RST сигнал. Веднага след като сигналът е получен RST програма TCP Б, той ще бъде прегледан и да се използва преди връзката се елиминира.

. TCP А. TCP B 1.sboy. (Парцел номер 300, рецепция - 100) 2. (??) <-- <-- ESTABLISHED 3. --> --> (Ликвидация !!)

Фиг. 9 активната страна води до откриването на
полу-отворена връзка

Фигура 10 показва, че програма два TCP - А и В -, като пасивно състояние, в очакване на SYN на сигнала. Старият сигнал дубликат програма достига TCP B (линия 2), да се изпълнява. Върнати сигнал SYN-ACK (линия 3) и причинява TCP програма за генериране на RST сигнал (сигнал на ред 3 ACK неприемливо). TCP B приема нулирането и се връща към своето пасивно състояние LISTEN.

Фиг. 10 Стари SYN сигнал първоначално открие дублиращи се рестартира
двете пасивни гнезда

Може да има много други варианти, които могат да бъдат обяснени с долуописаните правила за създаване и обработка на RST сигнал.

Създаване на рестарт сигнал

Според основното правило, нулиране (RST) трябва да бъдат изпратени, когато един сегмент пристига, което очевидно не е предназначен за тази връзка. Ако не е ясно дали има такъв, трябва да се въздържате от рестартиране.

три групи държави могат да бъдат разграничени за връзка:

Ако връзката е във всеки не-синхронизирана състояние (Слушай, SYN-пратил, SYN-получила), ако има такива потвърждение на входящия сегмент все още не е изпратил (сегмента носи неприемлива стойност в полето ACK), или ако входящо сегмент има ниво на сигурност / не е затворена и съответстваща на искания за свързване ниво, а след това за нулиране е изпратено.

Ако нашата SYN не е потвърдена, а нивото на приоритет на входящия сегмент е по-голям от желаното ниво, или ще се увеличи на местно ниво на приоритет (ако това е приемливо за потребителя и системата) или ще изпрати нулиране. Или, ако нивото на приоритет на входящия сегмент е по-малко от исканата, обработката ще бъде продължена по-нататък, тъй като, ако нивото е същото (ако дистанционното TCP не може да се повиши нивото на предимство да съответства наш това ще бъде отбелязано в следващия сегмент тя изпраща, а след това ще бъде затворен съединение). Ако нашата SYN получи потвърждение (може би в този входящ сегмент) нивото на предимство на входящия сегмент трябва да съответства точно на местата Ноум ниво. Ако последното условие не е изпълнено, за нулиране е изпратено.

Ако входящото сегмент има АСК сигнал, след нулиране ще има номер на последователност, съответстваща на броя на сигнал ACK във входящия сегмент. В противен случай, нулиране ще имате номера на нулева последователност, и АСК - номер, равен на сумата от броя на входящия сегмент и с еднаква дължина. Връзката не променя състоянието си.

Ако връзката е в синхрон състояние (СЪЗДАДЕН, FIN-WAIT-1, FIN-WAIT-2, в близост чакай, затваряне, LAST ACK, TIME-WAIT), както и неприемливо сегмент (от номера прозорец последователност, носещ грешен номер потвърждение) трябва да доведе до появата на празен потвърждение сегмент поле съдържащ текущия номер на опашката за пакета, както и доказателства показва следващия пореден номер очаква да бъде връзката. Връзката остава в предишното му състояние. Ако входящото сегмент има ниво на защита, изолация или приоритет, без съответните съединения местно ниво, тогава нулиране се изпраща, и съединението се движи да посочи затворен. нулиране черпи брой последователност, съответстваща на броя на АСК на входящия сегмент.

Обработка за рестартиране на сигнала

При всички състояния изключение SYN-изпрати всички сегменти от сигнал за нулиране (RST) тествани области SEQ. При рестартиране е валидно, ако й номер е в рамките на прозореца. В щата вдигнат ИЗПРАТЕНИ (RST се получава сигнал в отговор на първоначалната SYN сигнал), RST сигнал се признава, ако потвърждават поле ACK-рано изпращане SYN сигнал.

Приемникът на RST първо да го проверява, и едва след това се променя своето състояние. Ако приемникът е в състоянието, СЛУШАЙТЕ, той го игнорира. Ако приемникът е в състояние да син- ПОЛУЧЕНИ, той се връща отново към държавата LISTEN. В други случаи, приемникът може да се прекрати връзката и продължава към затворено състояние. Ако получателят е във всяка друга държава, той прекъсва връзката и преди да отидете в затворено състояние, уведомява клиента.