Что такое трехстороннее рукопожатие
1. Клиент, который намеревается установить соединение, посылает серверу сегмент с номером последовательности и флагом SYN.
Сервер получает сегмент, запоминает номер последовательности и пытается создать сокет (буферы и управляющие структуры памяти) для обслуживания нового клиента;
В случае успеха сервер посылает клиенту сегмент с номером последовательности и флагами SYN и ACK, и переходит в состояние SYN-RECEIVED;
2. Если клиент получает сегмент с флагом SYN, то он запоминает номер последовательности и посылает сегмент с флагом ACK.
Если он одновременно получает и флаг ACK (что обычно и происходит), то он переходит в состояние ESTABLISHED;
Если клиент получает сегмент с флагом RST, то он прекращает попытки соединиться;
Если клиент не получает ответа в течение 10 секунд, то он повторяет процесс соединения заново.
3. Если сервер в состоянии SYN-RECEIVED получает сегмент с флагом ACK, то он переходит в состояние ESTABLISHED.
В противном случае после тайм-аута он закрывает сокет и переходит в состояние CLOSED.
Процесс называется «трёхэтапным рукопожатием» (англ. three way handshake), так как несмотря на то что возможен процесс установления соединения с использованием четырёх сегментов (SYN в сторону сервера, ACK в сторону клиента, SYN в сторону клиента, ACK в сторону сервера), на практике для экономии времени используется три сегмента.
Зачем нам нужно 3-стороннее рукопожатие? Почему не просто 2-way?
Трехстороннее рукопожатие TCP работает следующим образом:
Почему не только это?
7 ответов
Разбейте рукопожатие на то, что он действительно делает.
В TCP обе стороны отслеживают, что они отправили, используя номер последовательности. Эффективно это заканчивается тем, что он является байтом байта всего, что было отправлено. Принимающая сторона может использовать порядковый номер противоположного громкоговорителя, чтобы подтвердить, что он получил.
Но порядковый номер не начинается с 0. Он начинается с ISN (Initial Sequence Number), который является случайно выбранным значением. И поскольку TCP является двунаправленной связью, обе стороны могут «говорить», и поэтому оба должны произвольно генерировать ISN в качестве своего начального порядкового номера. Это, в свою очередь, означает, что обе стороны должны уведомить другую сторону об их стартовом ISN.
Итак, вы получаете эту последовательность событий для начала TCP-беседы между Алисой и Бобом:
Обратите внимание, что происходят четыре события:
Обратите внимание на два экземпляра «SYN» и «ACK», по одному в каждом из них.
Итак, чтобы вернуться к вашему вопросу, почему бы просто не использовать двухстороннее рукопожатие? Короткий ответ заключается в том, что двухстороннее рукопожатие позволит только одной стороне создать ISN, а другая сторона признает это. Это означает, что только одна сторона может отправлять данные.
Собственно, трехстороннее рукопожатие не является единственным средством установления TCP-соединения. Также допускается одновременный обмен SYN: http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentProcessTheThreeWayHandsh- 4.htm
Это можно рассматривать как своеобразное двухстороннее рукопожатие.
Русские Блоги
TCP трехсторонний анализ рукопожатия-wireShark
1. Запросите IP-адрес сервера
Используйте nslookup для запроса IP-адреса www.tmall.com.
Во-вторых, настройте фильтр wireshark
Используйте инструмент фильтрации Wireshark, чтобы создать сервер, который специально собирает данные, с которыми мы должны общаться
3. Захват данных и анализ три рукопожатия
Нажмите на веб-страницу, войдите на страницу Tmall, просмотрите wireshark capture TCP

Рукопожатие впервые: Начиная с первого рукопожатия, наш Клиент отправил последовательность num = 0, которая является относительным числом, фактически сгенерированным случайным образом; номер подтверждения = 0; подтверждение этого поля не установлено, и Syn = 1, эти два поля указывают это Именно данные, инициированные клиентом, указывают, что это запрос соединения.
Второе рукопожатие: Из второго рукопожатия мы видим, что сервер отправляет данные клиенту, и номер последовательности = 0, но номер подтверждения = 1 является результатом номера последовательности клиента + 1, указывающего, что сервер получил данные, отправленные клиентом; И поле Syn, и Подтверждение установлены в 1, чтобы указать, что это дейтаграмма, что сервер устанавливает соединение и передает сигнал подтверждения.
Четыре, TCP трехстороннее рукопожатие
4.1 Трехсторонний процесс рукопожатия
Первое рукопожатие: клиент отправляет запрос на подключение, где номер последовательности = 0, номер подтверждения = 0, подтверждение = 0, Syn = 1;
Второе рукопожатие: сервер получает запрос от клиента, и основная отправленная информация имеет номер последовательности = 0, номер подтверждения = номер последовательности клиента +1, подтверждение = 1, синтаксис = 1; номер подтверждения = последовательность клиентов номер +1 означает сервер Клиент получает данные до того, как клиентская последовательность num = 1, и запрашивает у клиента отправить последовательность num, начиная с 1, поле Syn указывает, что эта информация является запросом для установления данных соединения. Как только соединение установлено, для Syn будет установлено значение 0, для параметра Подтверждение установлено значение 1, чтобы указать, что это сервер для установки соединения, и он передает сигнал подтверждения дейтаграммы.
Третье рукопожатие: после того, как клиент получит данные, отправленные сервером, он установит собственную последовательность num = 1 в соответствии с номером подтверждения сервера и установит свой собственный номер подтверждения = 1 в соответствии с номером последовательности сервера, указывая, что он получил сервер. Все данные перед последовательностью num в конце, в то же время мы видим, что Acknowledgement = 1 и Syn = 0, что это данные подтверждения, а не данные запроса соединения. Здесь три рукопожатие было завершено.
4.2 Зачем нам нужно три рукопожатия
Если используется два рукопожатия, если клиент отправляет данные запроса соединения на сервер в первый раз, но эти данные поступят на сервер после долгого маршрута, клиент не получит запрос подтверждения соединения с сервером в течение указанного времени Информация, он будет повторно отправлять данные соединения запроса для соединения запроса, на этот раз данные соединения приходят быстро, и соединение установлено, соединение будет закрыто после завершения обмена данными. В это время первое запрашивающее данные соединение, наконец, поступает на серверную часть.В это время серверной стороне не нужно выполнять второе и третье рукопожатие и непосредственно запускает поток для установления соединения, но клиент уже передал данные. Больше данных не будет отправлено. Таким образом, сервер приведет к пустой трате ресурсов.
Что такое трехстороннее рукопожатие
Процесс начала сеанса TCP (также называемый «рукопожатие», состоит из трёх шагов.
1. Клиент, который намеревается установить соединение, посылает серверу сегмент с номером последовательности и флагом SYN.
2. Если клиент получает сегмент с флагом SYN, то он запоминает номер последовательности и посылает сегмент с флагом ACK.
3. Если сервер в состоянии SYN-RECEIVED получает сегмент с флагом ACK, то он переходит в состояние ESTABLISHED.
Процесс называется «трёхэтапным согласованием», так как несмотря на то что возможен процесс установления соединения с использованием четырёх сегментов (SYN в сторону сервера, ACK в сторону клиента, SYN в сторону клиента, ACK в сторону сервера), на практике для экономии времени используется три сегмента.
В этом поле содержится число, определяющее в байтах размер данных, которые отправитель может отправить без получения подтверждения.
TCP окно – алгоритм управления интенсивностью потока данных, основанный на изменении максимального количества данных, которое получатель готов принять и подтвердить одним ответным сегментом
Размер окна всегда назначает получатель, исходя из статистики количества ошибок
Домены коллизий
Режимы работы VTP на коммутаторах
VTP — VLAN Trunking Protocol, позволяет облегчить администрирование коммутаторов, а именно управление VLAN-ами на коммутаторах Cisco. С VTP можно создавать, изменять или удалять VLAN-ы на VTP сервере и все эти изменения автоматически перенесутся на все коммутаторы в одном домене VTP. Что избавляет администратора от конфигурирования VLAN на каждом коммутаторе.
Существует три режима работы VTP (VTP mode):
1. VTP Server — серверный режим.В этом режиме можно создавать, удалять и изменять VLAN-ы, а так же задавать различные параметры, такие как версию протокола (vtp version), vtp фильтрацию (vtp pruning) для всего VTP домена. VTP сервер извещает о своей конфигурации VLAN-ов другие коммутаторы, находящиеся в том же VTP домене, и синхронизирует их конфигурацию VLAN. Так же VTP сервер может синхронизировать свою конфигурацию с конфигурацией VTP клиента, если у клиента выше номер ревизии конфигурации. Обмен VTP информацией проиcходит через ТРАНКВЫЕ порты.
2. VTP Client — режим клиента. На коммутаторе с режимом VTP Client нельзя создавать, удалять или изменять VLAN-ы. Всю настройку VLAN-ов коммутатор берёт от VTP сервера.
3. VTP Transparent — прозрачный режим. В этом режиме коммутатор не применяет себе конфигурацию VLAN от VTP сервера и не извещает о своей конфигурации другие коммутаторы, но позволяет пропускать через свои транковые порты VTP извещения от других коммутаторов.
Квитирование
Зачем нам нужно трехстороннее рукопожатие? Почему бы не просто 2-полосная?
Трехстороннее рукопожатие TCP работает так:
Почему не только это?
Разбейте рукопожатие на то, что оно действительно делает.
В TCP две стороны отслеживают то, что они отправили, используя порядковый номер. По сути, это заканчивается тем, что все количество отправленных байтов было запущено. Принимающая сторона может использовать порядковый номер противоположного говорящего для подтверждения того, что она получила.
Но порядковый номер не начинается с 0. Он начинается с ISN (начальный порядковый номер), который является случайно выбранным значением. А поскольку TCP является двунаправленной связью, обе стороны могут «говорить», и поэтому обе стороны должны случайным образом генерировать ISN в качестве своего начального порядкового номера. Это, в свою очередь, означает, что обе стороны должны уведомить другую сторону о своем начальном ISN.
Таким образом, вы получите следующую последовательность событий для начала TCP-диалога между Алисой и Бобом:
Обратите внимание, что происходят четыре события:
Обратите внимание на два экземпляра «SYN» и «ACK», по одному в каждом направлении.
Поскольку SYN-ACK является ACK, клиент теперь точно знает, что он может отправлять пакеты на сервер. И поскольку SYN-ACK является SYN, он также знает, что серверу нужны доказательства того, что это сообщение получено. Таким образом, он отправляет обратно ACK: на этот раз просто ACK, потому что ему больше не нужно доказательство того, что его пакеты могут пройти. Это последний шаг рукопожатия: клиент теперь знает, что пакеты могут идти обоими путями, и что сервер только что выяснит это (потому что он знает, что ACK пройдет).
.png)




