Процесс начала сеанса TCP - обозначаемое как "рукопожатие"...

Процесс начала сеанса TCP - обозначаемое как "рукопожатие" (handshake), состоит из 3 шагов.
1. Клиент, который намеревается установить соединение, посылает серверу сегмент с номером последовательности и флагом SYN.Сервер получает сегмент, запоминает номер последовательности и пытается создать сокет (буферы и управляющие структуры памяти) для обслуживания нового клиента.В случае успеха сервер посылает клиенту сегмент с номером последовательности и флагами SYN и ACK, и переходит в состояние SYN-RECEIVED.В случае неудачи сервер посылает клиенту сегмент с флагом RST.
2. Если клиент получает сегмент с флагом SYN, то он запоминает номер последовательности и посылает сегмент с флагом ACK.Если он одновременно получает и флаг ACK (что обычно и происходит), то он переходит в состояние ESTABLISHED.Если клиент получает сегмент с флагом RST, то он прекращает попытки соединиться.Если клиент не получает ответа в течение 10 секунд, то он повторяет процесс соединения заново.
3. Если сервер в состоянии SYN-RECEIVED получает сегмент с флагом ACK, то он переходит в состояние ESTABLISHED.В противном случае после тайм-аута он закрывает сокет и переходит в состояние CLOSED.
Процесс называется "трехэтапным согласованием" ("three way handshake"), так как несмотря на то что возможен процесс установления соединения с использованием 4 сегментов (SYN в сторону сервера, ACK в сторону клиента, SYN в сторону клиента, ACK в сторону сервера), на практике для экономии времени используется 3 сегмента.
Пример базового 3-этапного согласования: TCP A TCP B 1. CLOSED LISTEN 2. SYN-SENT —> <SEQ=100><CTL=SYN> —> SYN-RECEIVED 3. ESTABLISHED <— <SEQ=300><ACK=101><CTL=SYN,ACK> <— SYN-RECEIVED 4. ESTABLISHED —> <SEQ=101><ACK=301><CTL=ACK> —> ESTABLISHED 5. ESTABLISHED —> <SEQ=101><ACK=301><CTL=ACK><DATA> —> ESTABLISHED
В строке 2 TCP A начинает передачу сегмента SYN, говорящего об использовании номеров последовательности, начиная со 100. В строке 3 TCP B передает SYN и подтверждение для принятого SYN в адрес TCP A. Надо отметить, что поле подтверждения показывает ожидание TCP B приема номера последовательности 101, подтверждающего SYN с номером 100.
В строке 4 TCP A отвечает пустым сегментом с подтверждением ACK для сегмента SYN от TCP B; в строке 5 TCP A передает некоторые данные. Отметим, что номер последовательности сегмента в строке 5 совпадает с номером в строке 4, поскольку ACK не занимает пространства номеров последовательности (если это сделать, придется подтверждать подтверждения — ACK для ACK!).
The process of starting a TCP session - denoted by handshake, consists of 3 steps.
1. A client who intends to establish a connection sends the server a segment with a sequence number and the SYN flag. The server receives a segment, remembers the sequence number and tries to create a socket (buffers and control memory structures) to serve the new client. In case of success, the server sends a segment to the client the sequence number and the SYN and ACK flags, and transitions to the SYN-RECEIVED state. In case of failure, the server sends a segment with the RST flag to the client.
2. If the client receives a segment with the SYN flag, then he remembers the sequence number and sends the segment with the ACK flag. If he also receives the ACK flag at the same time (which usually happens), then he switches to the ESTABLISHED state. If the client receives the segment with the RST flag then he stops trying to connect. If the client does not receive a response within 10 seconds, he repeats the connection process again.
3. If the server in the SYN-RECEIVED state receives a segment with the ACK flag, then it enters the ESTABLISHED state. Otherwise, after a timeout, it closes the socket and enters the CLOSED state.
The process is called "three-way handshake", because despite the fact that it is possible to establish a connection using 4 segments (SYN for the server, ACK for the client, SYN for the client, ACK for the server), in practice, 3 segments are used to save time.
Example of basic 3-stage matching: TCP A TCP B 1. CLOSED LISTEN 2. SYN-SENT -> <SEQ = 100> <CTL = SYN> -> SYN-RECEIVED 3. ESTABLISHED <- <SEQ = 300> <ACK = 101> <CTL = SYN, ACK> <- SYN-RECEIVED 4. ESTABLISHED -> <SEQ = 101> <ACK = 301> <CTL = ACK> -> ESTABLISHED 5. ESTABLISHED -> <SEQ = 101> <ACK = 301> <CTL = ACK> <DATA> -> ESTABLISHED
In line 2, TCP A starts transmitting the SYN segment, talking about the use of sequence numbers starting at 100. In line 3, TCP B sends the SYN and acknowledgment for the received SYN to TCP A. It should be noted that the confirmation field indicates waiting for TCP B to receive the sequence number 101 confirming SYN number 100.
In line 4, TCP A responds with an empty ACK-confirmed segment for a SYN segment from TCP B; in line 5, TCP A sends some data. Note that the sequence number of the segment in line 5 is the same as the number in line 4, since the ACK does not occupy the space of sequence numbers (if this is done, you will have to confirm the confirmations - ACK for ACK!).
У записи 2 лайков,
0 репостов.
Эту запись оставил(а) на своей стене Игорь Тирский

Понравилось следующим людям