Categories: Разработка

Протокол TCP

Полностью протокол описывается в стандарте RFC 793 (скачать в PDF на русском)

ip соединение определяется двумя параметрами:

  1. ip адресом сервера
  2. Портом

Порты определяют для какого сервиса приходит информация. Для каждого сервиса назначается свой порт, который этот сервис "слушает".

ip-адрес вместе с портом называется сокет

В юниксовых системах порты назначаются в файле /etc/services. Строки в нем выглядят примерно таким образом:

http-alt  8080/udp     # HTTP Alternate (see port 80)

Стандартно для http используется порт 80, а для https-соединения (SSL) - 443, этому соответствуют строки:

  http             80/tcp     www www-http # World Wide Web HTTP
  https           443/tcp     # http protocol over TLS/SSL

Почтовые порты

  smtp             25/tcp     # Simple Mail Transfer  
  pop3            110/tcp     # Post Office Protocol - Version 3

Порт для подключения по FTP:

  ftp              21/tcp     # File Transfer [Control]

Все порты до номера 1024 работают под управлением пользователя root

Когда мы набираем адрес сайта, браузер обращается к ip-адресу сервера. Мы можем посмотреть на какой ip-адрес уходит запрос и какую информацию браузер отправляет, например в инструментах разработчика Chrome. Пример на скриншоте. Инструменты разработчика можно открыть сочетанием клавиш ⌘ + ⌥ + I для mac os и ctrl + atl + i для Windows


Статистику активных подключений можно посмотреть в терминале функцией netstat. Некоторые полезные параметры этой команды:

  • -a - вывод всех активных подключений TCP и прослушиваемых компьютером портов TCP и UDP.
  • -n - Показывать сетевые адреса как числа. netstat обычно показывает адреса как символы. Эту опцию можно использовать с любым форматом показа.

Приведу пример использования. У меня в локальной сети стоит NAS Synology. Это домашнее хранилище под управлением сборки linux. На него я установил веб-сервер, чтобы заниматься веб-разработкой и хранить на нем локально файлы сайтов. При переносе сайтов не смог подключиться к базе данных MySQL ни по ip, ни по localhost.

Подключаюсь через терминал к серверу и запускаю команду sudo netstat -tlpn и вижу в консоли строку:

tcp        0      0 0.0.0.0:3307            0.0.0.0:*               LISTEN      8662/mysqld

Соответственно добавляю к адресу порт ":3307" и благополучно подключаюсь к базе. Стоит отметить, что если выполнить netstat -tlpn без прав рута, то получим список без имен (8662/mysqld).

Admin

Share
Published by
Admin

Recent Posts

Отправка писем WooCommerce через GMail

Если письма с сайта не приходят, можно попробовать отправлять из через почтовый сервер gmail. Для…

1 год ago

html audio play/pause button

jQuery аудио плейер на сайт для нескольких треков с кнопкой Play/Pause

2 года ago

Чек лист по закуску сайта

Favicon Фавиконка это маленькая пиктограмма сайта, нужна для отображения на вкладке браузера и в закладках.…

2 года ago

Не получается зайти в админку WordPress

При входе в админку происходит редирект на ту же страницу входа. Эта статья для вас,…

2 года ago

wp-cli RuntimeException: failed to get url No working transport found

Иногда можно получить такую ошибку: RuntimeException: failed to get url ... No working transport found…

2 года ago

wp-cli под Windows

Перед запуском wp-cli вам потребуется скачать и установить cygwin Весь wp-cli это один файл, который…

2 года ago