Как работает TCP?
Разрешение адреса:
— Когда клиентское приложение хочет отправить данные другому приложению, первым шагом является получение IP-адреса целевого сервера. Это достигается с помощью протокола разрешения адресов (ARP).
Установление TCP-соединения (трехстороннее рукопожатие):
- Во время установления соединения TCP выполняет трехэтапный процесс установления связи.
1. Клиент отправляет на сервер пакет SYN (синхронизация). Этот пакет содержит начальный порядковый номер, который клиент будет использовать для своих сегментов данных.
2. Сервер отвечает пакетом SYN-ACK (подтверждение синхронизации). Это подтверждает SYN клиента, а также включает начальный порядковый номер сервера.
3. Клиент подтверждает ответ сервера, отправляя пакет ACK (подтверждение).
Передача и подтверждение данных:
- Как только TCP-соединение установлено, клиент и сервер могут начать обмен данными.
- TCP обеспечивает надежную передачу данных, разбивая данные на сегменты соответствующего размера и присваивая каждому сегменту порядковые номера.
- Получатель отправляет пакет подтверждения (ACK) обратно отправителю для каждого полученного сегмента данных. Отправитель поддерживает буфер неподтвержденных данных и продолжает отправлять новые сегменты, пока все они не будут подтверждены.
- Если подтверждение не получено в течение заданного периода ожидания, отправитель повторно передает сегмент. Этот механизм помогает обеспечить надежную доставку данных.
Управление потоком (протокол скользящего окна):
- Чтобы отправитель не перегружал получателя, TCP использует механизм, называемый управлением потоком.
- Он использует протокол скользящего окна, который определяет максимальный объем данных, которые могут быть неподтверждены в любой момент времени. Это предотвращает переполнение буфера на стороне получателя.
Контроль перегрузок (медленный запуск и предотвращение перегрузок):
- TCP реализует механизмы контроля перегрузки для адаптации скорости передачи в зависимости от доступных сетевых ресурсов.
1. Медленный старт. Это предотвращает внезапную перегрузку сети отправителем. Он начинается с отправки небольшого объема данных, а затем постепенно увеличивает скорость передачи до тех пор, пока не будут получены подтверждения.
2. Предотвращение перегрузки. Как только отправитель достигает пропускной способности сети, он переходит в фазу предотвращения перегрузки. На этом этапе контролируется рост скорости передачи, чтобы избежать перегрузки сети.
Завершение соединения (четырёхстороннее рукопожатие):
- Когда обмен данными завершен, TCP-соединение разрывается посредством четырехстороннего процесса установления связи.
1. Клиент отправляет на сервер пакет FIN (Готово).
2. Сервер подтверждает FIN и указывает, что у него есть дополнительные данные для отправки с помощью пакета FIN-ACK.
3. Клиент подтверждает FIN-ACK сервера пакетом ACK.
4. Сервер отправляет клиенту окончательное подтверждение, и оба конца закрывают соединение.
На протяжении всего соединения TCP обеспечивает надежную и контролируемую связь между клиентом и сервером, управляя сегментами данных, подтверждениями, контролем потока и контролем перегрузки. Это позволяет приложениям эффективно и надежно обмениваться данными по сети.