210 3. Контрол на потока от данни (Flow control) – гарантира, че входящият трафик няма да запълни буферите на приемащия хост и той ще може да обработи потока от данни, както и да отговори на запитвания от страна на предаващия хост. Механизмът, който се използва е познатият плъзгащ се прозорец (sliding window). Всеки хост поддържа такъв прозорец и контролира размера му спрямо моментните си възможности.
Чрез него приемащият
хост указва количеството данни, което може да буферира. Максималната стойност е 65535 байта и се определя от размера на полето, което е 16-битово (Window). Размерът на прозореца, потвържденията и поредните номера са байтово базирани, а не сегментно;
4. Поддържане на връзката при липса на данни за предаване – използва се служебно съобщение (keepalive) за поддържане на връзката. То не
съдържа данни от по-горен слой, което означава, че полето за дължина е
0 и следващият ACK номер не се увеличава. Ако такива връзки не се затворят се увеличава натоварването на мрежата,
особено в случаите, когато са много на брой;
5. Потвърждение на правилно приетите данни (Acknowledgement)–
потвърждението е механизъм, позволяващ на хостовете да определят кога има загуба на данни. Приемащият хост не изпраща ACK потвърждение за изгубен пакет. При неполучаване на потвърждение за определен период от време (използва се таймер), изпращащият хост повтаря предаването на непотвърдените данни, които се съхраняват в т.нар. TCB буфер (блок за контрол на предаването) (фигура 158);
фигура 158 Препредаване на липсваща поредица 211 6. Разпадане на логическото съединение (Session teardown) – процесът е подобен на този за установяване на сесия. Използва се трикратно ръкостискане, където SYN сегментът е заменен с FIN. Затварящият хост изпраща FIN сегмент към другата страна за затваряне на сесията.
Приемащият хост потвърждава с ACK/FIN отговор, които включва и собствен FIN, очакващ потвърждението му от хоста-инициатор. След тази процедура сесията се затваря. Състоянията, през
които преминават двете страни, използващи TCP съединението са:
за клиента – CLOSED, SYN-SENT, ESTABLISHED, FIN-WAIT-1,
CLOSE-WAIT, FIN-WAIT-2, CLOSING, LAST-ACK, CLOSED;
за сървъра – CLOSED, LISTEN,
SYN-RESEIVED, ESTABLISHED,
FIN-WAIT-1, CLOSE-WAIT, FIN-WAIT-2, CLOSING, TIME-WAIT,
CLOSED.
Сподели с приятели: