Что такое TCP / IP порт

Порт (port) — натуральное число, записываемое в заголовках протоколов транспортного уровня модели OSI (TCP, UDP, SCTP, DCCP).

Номера портов разделены на три диапазона: стандартные, зарегистрированные и динамические или частные:

  • Стандартные порты — это порты в диапазоне от 0 до 1023.
  • Зарегистрированные порты — это порты в диапазоне от 1024 до 49151.
  • Динамические или частные порты — это порты в диапазоне от 49152 до 65535.

В стеке TCP/IP определены 4 уровня.

Для протокола TCP порт с номером 0 зарезервирован и не может использоваться. Для протокола UDP указание порта процесса-отправителя («обратного» порта) не является обязательным, и порт с номером 0 означает отсутствие порта. Таким образом, номер порта — число в диапазоне от 1 до 216-1=65 535.

Соединение TCP

Чтобы установить соединение между двумя процессами на разных компьютерах сети, необходимо знать не только интернет-адреса компьютеров, но и номера тех ТСР-портов (sockets), которые процессы используют на этих компьютерах. Любое TCP-соединение в сети Интернет однозначно идентифицируется двумя IP-адресами и двумя номерами ТСР-портов.

Протокол TCP умеет работать с поврежденными, потерянными, дублированными или поступившими с нарушением порядка следования пакетами. Это достигается благодаря механизму присвоения каждому передаваемому пакету порядкового номера и механизму проверки получения пакетов.

Когда протокол TCP передает сегмент данных, копия этих данных помещается в очередь повтора передачи и запускается таймер ожидания подтверждения.

Сокеты TCP и их состояния

Активные TCP соединения с интернетом (w/o servers)

# netstat -nt
Proto Recv-Q Send-Q Local Address Foreign Address State      
tcp        0      0 192.26.95.251:56981     10.161.85.55:22        ESTABLISHED
tcp        0      0 10.26.95.251:44596      10.26.95.226:2193       ESTABLISHED

Для сокетов TCP допустимы следующие значения состояния:

  • CLOSED Закрыт. Сокет не используется.
  • LISTEN Сокет ожидает входящих соединений.
  • SYN_SENT Активно пытается установить соединение. Cокет в процессе установки соединения.
  • SYN_RECEIVED (SYN_RCVD) Идет начальная синхронизация соединения. Был принят запрос установки соединения из сети.
  • ESTABLISHED Соединение установлено.
  • CLOSE_WAIT Удаленная сторона отключилась; ожидание закрытия сокета.
  • FIN_WAIT_1 Сокет закрыт; соединение закрывается.
  • CLOSING Сокет закрыт, затем удаленная сторона отключилась; ожидание подтверждения.
  • LAST_ACK Удаленная сторона отключилась, затем сокет закрыт; ожидание подтверждения.
  • FIN_WAIT_2 Сокет закрыт; ожидание отключения удаленной стороны.
  • TIME_WAIT Сокет закрыт, но ожидает пакеты, ещё находящиеся в сети для обработки
  • UNKNOWN Статус сокета неизвестен.

Что такое TCP RST?

TCP RST – это сегмент TCP (обратите внимание, что TCP посылает сообщения сегментами, а НЕ пакетами, что часто неправильно употребляется в среде сетевых администраторов), который показывает, что с соединением что-то не так. RST посылается в следующих случаях:

  • Посылается SYN для несуществующего сервера.
  • TCP хочет прервать соединение.
  • Получен сегмент, для которого не существует соединения.
PQ VPS сервера в 28+ странах.