TCP протокол простыми словами

TCP протокол простыми словами

TripiniFKYL & Сергей Зыбнев


Что такое протокол TCP?

TCP (Transmission Control Protocol) - это протокол транспортного уровня, предоставляющий транспортировку (передачу) потока данных, с необходимостью предварительного установления соединения, благодаря чему гарантирует целостность получаемых данных, также выполняет повторный запрос данных в случае потери данных. Помимо этого он проверяет дублирование пакетов.

Является обязательным протоколом стандарта TCP/IP.


Чем обеспечена надежность передачи данных?

Данные от приложения разбиваются на блоки определенного размера, которые будут отправлены.


  1. Когда TCP посылает сегмент, он устанавливает "таймер", ожидая подтверждения.
  2. Когда TCP принимает данные, он отправляет подтверждение.
  3. TCP осуществляет расчет контрольной суммы для заголовка и данных, если контрольная сумма не соответствует нужной, TCP отбрасывает его и не генерирует подтверждение.
  4. Так как TCP сегменты передаются в виде IP датаграмм, а они могут прибывать беспорядочно, так же беспорядочно могут прибывать и сегмент, после получения всех данных TCP может изменить их последовательность, получая результат в правильном порядке.


Заголовок TCP


Порядковый номер - если установлен флаг SYN, то начальное значение номера последовательности - ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер ISN + 1. Если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот номер последовательности.


  1. Номер подтверждения - если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый получателем в следующий раз.
  2. Длина заголовка - задается словами по 32 бита
  3. Размер окна - количество байт, которые готов принять получатель без подтверждения.
  4. Контрольная сумма - включает заголовок, данные.
  5. Указатель срочности - указывает последний байт срочных данных, на которые надо немедленно реагировать.


URG - флаг срочности, если = 0, поле игнорируется.
ACK - флаг подтверждения, включает поле "номер подтверждения", если = 0, поле игнорируется.
PSH - флаг требует выполнения операции push, модуль TCP должен срочно передать пакет программе.
RST - флаг прерывания соединения, используется для отказа в соединении.
SYN - флаг синхронизации порядковых номеров, используется при установлении соединения.
FIN - флаг окончание передачи, со стороны отправителя.


Рассмотрим заголовок с помощью Wireshark



TCP порты

Номер порта условное 16-битное число от 65535, указывающее, какой программе предназначался пакет. Все номера портов TCP, которые меньше чем 1024 - зарезервированы и зарегистрированны в (IANA). Номера портов UDP и TCP не пересекаются.

20-21 - File Transfer Protocol (FTP)

22 - Secure Shell (SSH)

23 - Telnet

25 - Simple Mail Transfer Protocol (SMTP)

53 -Domain Name System (DNS)

80 - Hypertext Transfer Protocol (HTTP)

110 - Post Office Protocol (POP3)

123 - Network Time Protocol (NTP)

143 - Internet Message Access Protocol (IMAP)

161 - Simple Network Management Protocol (SNMP)

443 - HTTP Secure (HTTPS) HTTP over TLS/SSL



Как устанавливается TCP-соединения.


Предположим, что процесс, работающий на одном хосте, хочет установить соединение с другим процессом на другом хосте. Перед началом передачи каких-либо данных, согласно протоколу TCP, стороны должны установить соединение. (Процесс "трехкратного рукопожатия")


Запрашиваемая сторона отправляет SYN сегмент, указывая номер порта сервера, к которому клиент хочет подсоединиться, и исходный номер последовательности клиента (ISN).


Сервер отвечает своим сегментом SYN, содержащим исходный номер последовательности сервера. Сервер также подтверждает приход SYN клиента с использованием ACK (ISN + 1). На SYN используется один номер последовательности.


Клиент должен подтвердить приход SYN от сервера своим сегментом SYN, содержащий исходный номер последовательности клиента (ISN + 1) и с использованием ACK (ISN + 1).

Бит SYN установлен в 0, так как соединение установлено.


После установления соединения TCP, эти два хоста могут передавать данные друг другу, они могут передавать информацию одновременно.


Report Page