Всем привет! В интернете полно статей про сетевые порты, но очень мало где используется нормальный человеческий язык. Именно поэтому я решил написать свою подробную статью по разбору этой темы. Давайте для начала ответим на вопрос – а что же такое сетевой порт в компьютере и информатике в целом.
Определение
Лучше всего расскажу на примере. Представим себе, что у вас есть компьютер, который уже подключен к интернету. У данного компьютера есть свой IP адрес, который определяет его среди множества других сетевых устройств, находящихся в интернет пространстве.
Если кабель от провайдера идёт на компьютер напрямую, то ему присваивается внешний IP адрес. Если же подключение идет через роутер, то внешний IP находится именно у данного интернет-центра. Данный IP нужен для того, чтобы пакеты доходили именно до этого компьютера.
Но тут встаёт небольшая проблема, когда пакет информации доходит, компьютер или сервер не понимает – в каком приложении его открывать?! Вот за данную функцию частично и отвечают порты. Например, пользователь сделал запрос в интернете на определенный сайт. Далее пакет данных доходит до сервера, на котором работает одновременно много системных служб и программ.
В запросе от пользователя также одновременно прописывается информация о порте. Тогда сервер сразу понимает, что запрос был отправлен с целью получения информации о какой-нибудь Web-странице. И сервер отправляет ответ с нужной информацией.
Если говорить грубо, то IP (в нашем примере) – это адрес дома. Но когда почтальон приходит к дому, он не знает в какую квартиру отнести письмо. И вот порт – это и есть номер квартиры. На данный момент существует определенное число портов – 65 535. Вы можете заметить аналогию с многоквартирным домом, по сути в каждом доме есть определенное количество квартир.
Некоторые порты компьютера могут быть открыты или закрыты в зависимости от настроек системы. Также некоторые приложения открывают свои порты или используют смежные. Также не забываем, что для передачи информации по сети используется модель TCP/IP или UDP. Ещё один пример, который сможет более точно объяснить – для чего же нужны сетевые порты на компьютере.
Вася решил завести у себя на компьютере свой Web-сайт. После верстки он все же решил загрузить его на свой компьютер. Конечно, он мог бы арендовать сервер, но он решил сэкономить. Интернет у него подключен напрямую к системному блоку. Теперь вопрос знатокам: при запросе из интернета – как компьютер будет понимать, что нужно отдавать по запросу именно страницы сайта, а не данные общих папок или ответ от какого-нибудь запущенного приложения?
Вот тут и будет вступать в силу порт. В данном случае чаще всего используется номера: 80 или 8080. Именно поэтому Вася должен на своем компьютере открыть локальный порт для своего сайта. Конечно объяснение было немного грубое, и все там обстоит куда сложнее, но моя задача была разъяснить именно суть и назначение порта. Потому что почему-то нигде толкового объяснения нет, а многие оперируют сложными техническими понятиями.
Номера портов
И так товарищ, ты теперь почти просветлел и понял – что же такое порт. Теперь же давайте поговорим про понятие «номер порта». Как я уже и говорил, в каждом компьютере, сервере, маршрутизаторе существует ровно 65 535 портов. Конечно, используются они не все и есть свободные «адреса».
С 0 до 1023-го – это зарезервированные «квартиры» для систем как Windows, так и Linux. Насчет Mac OS сказать не могу, с данной ОС не работал. Далее с 1024 по 49151 идут свободно используемые входы. То есть их могут использовать отдельные приложения, утилиты или даже системные службы. Некоторые программы могут одновременно использовать один и тот же номер.
Остальные порты, можно сказать – находятся в свободном полете и могут использоваться или не использоваться по усмотрению ОС или пользователя. Запоминать тот или иной номер бессмысленно, потому что их очень и очень много. Например, очень часто для игр на домашних роутерах нужно открыть дополнительные номера. Но запоминать, к какой именно игре используется тот или иной номер, смысла нет.
Но со временем за определенными портами закрепились отведенные службы. Вот пример нескольких из них:
- 20, 21: FTP
- 22: SSH
- 23: Telnet
- 25: SMTP
- 43: WHOIS
- 53: DNS
- 67, 68: DHCP
- 80: HTTP (Веб-port)
- 110: POP3
- 113: аутентификация в IRC
- 143: IMAP
- 161: SNMP
- 194: IRC
- 389: LDAP
- 443: HTTPS
- 587: SMTP
- 631: CUPS
Чаще всего обычный пользователь не задумывается о пробросе, открытии или закрытии портов. Этим занимается сама операционная система, а в частности Брандмауер. Также при установке приложений, игр и утилит, которые используют интернет или сетевое подключения, они сами прописывают при инсталляции настройки по использованию тех или иных входных номеров. Некоторые программы используют сразу несколько.
ПРИМЕЧАНИЕ! Портовая конфигурация также есть у роутеров и провайдера.
Просмотр открытых и закрытых портов
Чтобы посмотреть все входные номера, которые используются, заблокированы или ждут своей очереди – можно через консоль. В Windows достаточно зайти в командную строку: для этого нажимаем на кнопки и R и прописываем команду «cmd». Далее нужно будет ввести:
netstat -a
В Kali Linux прописываем другую команду:
less /usr/share/nmap/nmap-services
Для удобства я все же советую использовать удобную программку «Process and port analyzer». Она в более удобном виде выводит все задействованный список портов на данном устройстве. Вы можете посмотреть зарезервированные, свободные и используемые номера.
Таблица портов
Открытие и закрытие
Как я уже и говорил ранее – данную функцию выполняет сама система или установленные программы. Но вы сами можете изменять или добавлять некоторые правила. По сути вам нужно указать сетевой порт, а также приложение или программу, для которой это правило будет действовать. Если же вы будете производить настройку на роутере, то нужно будет указывать IP адрес устройства переадресации.
Для начала вам нужно определиться с тем – какой «вход» вы хотите открыть и для чего. Номер и название приложение вы можете посмотреть в том PDF файле, который я прикрепил выше. Покажу на примере игры World of Warcraft. Будем открывать официально зарезервированный номерной «вход» – 3724. Вообще в играх чаще всего используется именно UDP порт, который работает в потоковой передаче данных. Но вам нужно смотреть именно в столбец с портом: там будет подсказка, какой протокол надо использовать в выбранном приложении (TCP или UDP).
- В Windows нужно открыть меню «Пуск» и перейти в «Панель управления».
- Заходим в «Брандмауэр»
- «Дополнительные параметры»
- Слева в окне нажимаем «Правила для входящих подключений». Вы сразу тут увидите очень много правил под каждое установленное приложение.
- В окошке справа выбираем «Создать правило…». Так как мы будем открывать порт для игры, то выбираем вторую галочку.
- Создаем UDP правило и вводим только номер, указанные в том PDF файлике – в моем случае это: 3724 (я показываю на примере игры WOW у вас может быть совершенно другой номер). Вы также можете указать диапазон номеров. Для TCP и UDP лучше создать два правила отдельно.
- Оставляем значение по умолчанию «Разрешить подключение».
ПРИМЕЧАНИЕ! Таким образом вы можете закрыть определенный «вход», выбрав «Блокировать подключение».
- Далее идут правила профилей – можно оставить все. Самое главное, чтобы при подключении к удаленному ресурсу через интернет был включен «Публичный» профиль.
- В самом конце вводим название и описание. В название я советую добавлять номер порта, который вы открыли, чтобы потом его не потерять.
Проброс
Открытие и проброс портов – это разные вещи, хоть некоторые их и путают. Когда вы открываете какой-то «вход», то вы делаете это на конкретном устройстве – например, на своём компьютере. Проброс портов – обычно делается на сетевом шлюзе, который из внешней сети принимает какой-то запрос от пользователя. Далее он или разрешает данный запрос, или запрещает. Чаще всего если порт не проброшен, то идет точный запрет, и пользователь не получит ответа.
Например, у вас дома стоит система видеонаблюдения. Сеть камер, подключенных к видеорегистратору, который в свою очередь привязан к интернету с помощью роутера. Камера кстати может быть вообще одна и подключена напрямую к маршрутизатору.
Чтобы просматривать камеру через интернет, отдыхая на Бали или во Вьетнаме, нужно пробросить порт. После проброса, чтобы попасть на камеру, нужно будет зайти в браузер, ввести внешний IP адрес вместе с проброшенным номером, и тогда можно увидеть изображение с камеры.
По пробросу у нас уже есть отдельные инструкции на сайте:
Если у вас ещё остались вопрос или есть дополнения, то пишите в комментариях.
Бородачу, спасибо за разбор – помог!
Теперь осталось пробросить порты и все станет гуд
Я даже половину из них не знаю – как их много оказывается
Огромнейшее спасибище !!!! Очень полезно.
Очень доступное объяснение, без сисадминских штучек! Огромное спасибо!
Доброго времени суток, Бородач! Напиши по открытию и пробросу портов для TOTOLINK, пожалуйста.
Спасибо. Узнал полезную инфу просто и доходчиво.
На вопрос, что же такое порт и какова его суть, ответа в статье, к сожалению нет. Правда, это общая беда многих статей по информатике. Вопрос действительно непростой: писать просто о сложном трудно. В статье много материала, но, как обычно, смешение сложного с простым.
Александр.