Установка соединения в TCP | Практика по курсу 'Компьютерные сети'

preview_player
Показать описание

Для установки соединения в TCP используется процедура трехкратного рукопожатия. Отправитель и получатель пересылают друг другу три сегмента TCP со специально установленными флагами, которые говорят о намерении установить соединение:
1. Отправитель передает сегмент с установленным флагом SYN.
2. Получатель отвечает сегментом с установленными флагами SYN + ACK.
3. Отправитель передает сегмент с флагом ACK.
После этих трех шагов соединение считается установленным и можно передавать данные.

Для разрыва соединения используются сегменты с установленными флагами FIN и ACK.

Соединение в TCP дуплексное, данные по нему можно передавать в две стороны. Поэтому сегменты FIN+ACK должны передать обе стороны, в противном случае соединение будет закрыто только с одной стороны.

Мой канал с краткими и понятными объяснениями сложных тем в ИТ и компьютерных науках:
Рекомендации по теме
Комментарии
Автор

Красиво всё рассказал, спасибо большое

Mrpoljkee
Автор

Добрый день Андрей!
Подскажите пожалуйста где в пакете сегменте TCP увидеть размер данного сегмента? Заранее спасибо

fdvvmqk
Автор

Как поведет себя ОС при теоретической ситуации, когда все номера портов вплоть до 65535 будут заняты приложениями?

BalynOmavel
Автор

Что может означать tcp.stream :1 и tcp.completeness: Incomplete 13 при отправке SYN?

ybcfmuf
Автор

Привет Андрей, хочу задать глупый вопрос. Клиент и сервер назначает каждый свою последовательность байт. Например, клиент подтверждает последовательность которую получил от сервера (relative ack number ) и передает серверу свою (relative sequence number) последовательность до последнего байта включительно серверу, сервер подтверждает последовательность от клиента в свою очередь и передает свою?

nagayka
Автор

То есть на разных узлах разные порядковые номера байт?
Например узел А соединяется с узлом В:
1) А отправляет сегмент с флагом SYN, в поле последовательность записан ISN на его стороне
2) В отвечает с флагом ACK (в поле номер подтверждения записывается что? запрашиваемый байт? С номером своего порядка или порядком A?) и флагом SYN, в поле последовательность он записывает ISN, сгенерированный уже на его стороне.
3) А отвечает с флагом ACK (что в поле номер подтверждения?) и запрашиваемыми данными из предыдущего шага.
...
Обмен данными по принципу запрос/подтверждение
4) Закрытие соединение со стороны А и В

FrozzSend
Автор

5:54 Флаг FIN, а не SYN. Просто оговорка, ничего критичного. Лекции и практика отличные.

ThePuskoi
Автор

Здравствуйте, а для стримов в Интернете какие протоколы используют? Рационально ли для этой цели использовать WebSocket?

sergeyufimtsev
Автор

Новых писем нет. К сожалению один только спам :-D

SC-egdv
Автор

Я немного не понимаю, содержимое пакета в шестнадцатиричном коде? А на физическом уровне информация передаётся в двоичном? Где происходит переход из шестнадцатиричной в двоичную информацию?

ulyxmxb
Автор

Вы говорили, что флаг push не используется. Странно, у меня все сообщения только с ним на диаграмме

TheLuChing
Автор

А что за красный пакет там внизу? Почему он красный?

TechBusinessDev
Автор

немного помучив строку в вайршарк придумал вот такое tcp.flags.fin == 1 || tcp.connection.rst

Tamagoa