Андрей Созыкин

Андрей Созыкин 

Делаю обучающие видео и тексты по ИТ

167subscribers

67posts

goals1
30 of 1 000 paid subscribers
1000 платных подписчиков в месяц позволит мне регулярно записывать новые обучающие видео.

Соединение в TCP

Многие знают, что в TCP перед отправкой данных нужно установить соединение, и что для этого используется процедура "трехкратного рукопожатия". Своих студентов на экзамене я всегда спрашивал: зачем в TCP устанавливать соединение?

Самый популярный ответ: чтобы обеспечить гарантию доставки. Ведь TCP - это протокол, который надежно передает данные.
Но для гарантии доставки используются подтверждения. Чтобы подтверждать получение сегментов не нужно устанавливать соединение. В этом месте многие задумывались. Но большинство отвечало правильно.
Кроме гарантии доставки в TCP есть еще гарантия сохранения порядка следования сообщений. Чтобы сообщения не перепутались при передаче по сети, TCP нумерует данные в потоке байт. Процедура установки соединения нужна именно чтобы договориться о том, какие числа отправитель и получатель будут использовать в качестве начального номера в потоке байт. Называется процедура синхронизация, для нее используется флаг SYN (сокращение от synchronization).
Следующий вопрос: зачем такая сложная схема? Почему нельзя нумеровать байты в каждом соединение всегда с одного и того же числа, например, с нуля? Причина в том, что в сетях всегда возникают ошибки. Могут возникнуть несколько инкарнаций одного соединения. Например, отправитель установил соединение, начал передавать данные, после этого произошел сбой. Отправитель перезагрузился, снова установил соединение и начал передавать данные.
Если всегда нумеровать данные в потоке байт с нуля, то получатель не сможет отличить данные из разных инкарнаций соединения. Поэтому нужно, чтобы номера начальных байтов в потоке со временем увеличивались. Чтобы узнать, какие именно номера будут использоваться для конкретного соединения, проводится процедура синхронизации.
Если плохо работает YouTube, то можно смотреть в Дзен или VK.
Subscription levels4

Студент

$1.33 per month
Спасибо за поддержку! Я не предлагаю эксклюзивный контент за подписку, потому что хочу чтобы все зрители имели одинаковый доступ к обучающим видео независимо от того, есть ли возможность поддержать меня. Благодарю своих подписчиков за любую помощь!

Начинающий

$2.66 per month
Спасибо за поддержку! Я не предлагаю эксклюзивный контент за подписку, потому что хочу чтобы все зрители имели одинаковый доступ к обучающим видео независимо от того, есть ли возможность поддержать меня. Благодарю своих подписчиков за любую помощь!

Профи

$6.7 per month
Спасибо за поддержку! Я не предлагаю эксклюзивный контент за подписку, потому что хочу чтобы все зрители имели одинаковый доступ к обучающим видео независимо от того, есть ли возможность поддержать меня. Благодарю своих подписчиков за любую помощь!

Эксперт

$13.3 per month
Спасибо за поддержку! Я не предлагаю эксклюзивный контент за подписку, потому что хочу чтобы все зрители имели одинаковый доступ к обучающим видео независимо от того, есть ли возможность поддержать меня. Благодарю своих подписчиков за любую помощь!
Go up