порты и что они делают

Мне любопытно относительно того, что делает номер порта. Есть ли определенные номера портов для определенных вещей?

Я знаю, что существует порт 80, и я слышал о 8 000 мимоходом. Я не знаю, почему их называют этим и что это на самом деле означает.

У меня могла быть веб-страница, которая является, говорит пример com:10? Я говорю 10 как случайное число. Имеет значение, что Вы называете портом? Куда эти числа прибывают из? Как я пошел бы об установке среды разработки с номером порта и почему я захочу сделать это? Во время разработки я вижу все виды номеров портов на основе того, кто они. Я всегда задавался вопросом, куда числа прибывают из и как они настраивают сервер, чтобы заставить его работать.

6
задан 14.08.2010, 15:44

5 ответов

Номера портов ничего не 'делают' конкретно. Они - один из способов, которыми однозначно определяется соединение. Каждое соединение TCP определяется четырьмя вещами: IP-адреса каждой машины и номер порта на каждой машине. Каждый пакет IP, который входит, содержит эти четыре сведения, позволяя сетевому уровню определить то, что должно быть сделано с тем пакетом. Например, пакет прибывает с целевым портом 80, и система знает, что Apache слушает на порте 80, таким образом, это передает его к веб-серверу (я заминаю некоторые детали).

Чтобы клиент установил связь с Вашим сервисом, это должно знать Ваш IP и которые портируют Ваш сервис, слушает на. Поскольку Ваш IP и порт исключительно определяют Ваш конец любого входящего соединения, только один сервис может послушать на данном порте в любой момент. Если бы у Вас не было ничего иного порт использования 10, то Вы могли бы определенно разместить свой веб-сервер на нем, и все клиенты должны были бы указать:10 в конце Вашего имени хоста/IP. Нет ничего волшебного о порте 80 или 443, за исключением того, что они - стандартные порты, определенные для HTTP и HTTPS (таким образом, клиенты будут использовать те порты, если пользователь не укажет один).

Когда клиент (1.2.3.4) подключения к веб-серверу (11.12.13.14) на значении по умолчанию http порт, это выбирает в настоящее время неиспользуемый порт на своей стороне, например, 5307, и устанавливает соединение. Теперь соединение однозначно определяется - 1.2.3.4:5307 <-> 11.12.13.14:80

Если тот же клиент устанавливает вторую связь одновременно, ей нужно другое число неиспользуемого порта (5308 на этот раз), потому что другие три части соединения являются постоянными - порт прослушивания сервиса и оба IP-адреса уже установлены. Это позволяет единственному клиенту иметь несколько различимых соединений с тем же сервисом. Другой клиент мог также соединить использование 5307, и это будет различимо сначала другим IP-адресом.

1
ответ дан 07.12.2019, 16:10

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

Теперь, когда у Вас есть та визуализация, номера портов на компьютере подобны. У Вас есть TCP и UDP с TCP, имеющим диапазон портов 1-65535. Это - то, куда те числа прибывают из. Теперь, некоторые из этих портов резервируются для общих типов трафика. Пример, 80 для HTTP, 443 для HTTP-SSL, 21 для FTP, 25 для SMTP, 110 для POP3. Существуют намного больше, конечно, но я надеюсь, что это помогает с общим представлением. Теперь, можно использовать незарезервированные порты для вещей, которые Вы хотите сделать, но я не использовал бы низкий порт как 10. Если Вы хотите разместить свой сайт на альтернативном порте, выбрать 8080 или 8443 (альтернативный порт HTTP-SSL), некоторое число, которое не резервируется или является известным альтернативным портом для Трафика HTTP.

Альтернативные порты используются, потому что у Вас может только быть один сервис, слушающий на определенном порте когда-то. Пример, у Вас не может быть Apache и IIS, оба слушают на порте 80 для веб-запроса на той же машине. Это вызвано тем, что те сервисы отличны, и они не смогут сказать, кто, как предполагалось, добирался что трафик. При помощи различных портов те сервисы знают, что трафик в том порте был предназначен для них.

Для установки это, сервис конца (веб-сервер, электронная почта, VPN, безотносительно) должно знать, какой порт послушать на (около которого грузовой отсек пойти стоит и ожидает материала, чтобы войти или выйти). Кроме того, Ваш брандмауэр должен будет иметь исключение (Ваши охранники для Вашей проверки концентратора, чтобы видеть, разрешают ли Вам перейти к определенным местам) для того порта также.

Список используемых общих портов

5
ответ дан 07.12.2019, 16:10

Порты существуют для различения различных сервисов на тот же IP. Таким образом, та же машина могла бы иметь электронную почту (SMTP: 25) и веб-сервер (HTTP: 80).

Номера портов под 1 000 обычно резервируются для известного материала как те, которых я просто упомянул. Выберите числа выше этого приблизительно до 65 565 (питание 2) для Вашего собственного материала.

Кроме того, примечание там не является никакой причиной, Ваш веб-сервер должен работать на закрепленном порте. Это, где все будут искать его.

В эти дни, из-за перевода Адреса порта, Ваш маршрутизатор на самом деле переводит Ваш внутренний трафик в неиспользуемый порт на Вашем интернет-IP. Вот почему Вы видите набор различных чисел. Так, например, Ваш веб-клиент попросил бы у Google com:80 страниц. Но источник был бы от Вашего IP на неиспользуемом порте. Как это:

Google com:80 <=talks к => 88.88.88.88:4502 (Независимо от того, что Ваш IP, и порт, - то, что Ваш шлюз NAT решил использовать),

Комбинацию IP/порта называют сокетом, между прочим. Что касается разработки, Вы, возможно, должны были бы смочь указать номер порта для не столкновения с другим материалом, но функциональность не должна изменяться.

Наконец при прохождении через брандмауэра у Вас должен быть открытый порт.

0
ответ дан 07.12.2019, 16:10

Аналогия прикрепления загрузки Tommy является превосходной.

Сервис может послушать только в одном порте (и да, listen(2) название системного вызова, где сервис связывает с портом), и порт может иметь самое большее один сервис, слушающий в нем. Если Вы хотите послушать на двух портах (скажите, что выполнение сервера HTTP на портах 80 и 8080), то необходимо запустить два процесса, один для каждого порта.

Номера портов не резервируются ни в каком смысле - Вам разрешают иметь почтовый сервер, слушающий на порте 80 и веб-сервер на порте 25, но это довольно сбивало бы с толку всех. Но порты связаны с сервисами двумя способами:

  1. Существуют 'известные числа для сервисов (и о списке заботится Администрация адресного пространства Интернет). Это не резервирование как таковое, но они являются эффективными, 'сохраняют - ясные' маркеры. Эти числа могут также быть найдены в файле /etc/services на машинах Unix.
  2. Протокол, такой как HTTP или SMTP обычно будет, в его RFC, объявлять порт по умолчанию для протокола – для HTTP, это - порт 80, и для порта SMTP 25. Все это означает, то, что клиент HTTP, например, попытается соединиться с портом 80 на удаленной машине, если он не будет сказан иначе.

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

Результат всего этого то, что, если, например, Вы хотели иметь несколько веб-серверов на машине (или любого другого сервиса), Вы можете, пока Вы запускаете их, говоря им послушать на различных портах. Вы могли бы сделать это с параметром командной строки при запуске обслуживания или записи в конфигурационном файле.

У Вас мог бы быть веб-сервис на порте 80 (корень должен будет запустить это), плюс некоторые другие основанные на HTTP сервисы на порт 8080, или 9000. Первое было бы адресуемо как http://example.org/, другой как http://example.org:8080/. Поскольку порт 80 является зарегистрированным значением по умолчанию для HTTP, Ваш веб-браузер (или безотносительно клиента, который Вы использовали) автоматически выберет порт 80 в первом случае.

Нет никакого значения для тех номеров 8080 и 9000, между прочим – они - просто 'традиционные' непривилегированные номера портов для использования для альтернативных веб-сервисов; потому что они непривилегированны, любой некорневой пользователь может запустить сервис, слушающий там, пока уже нет никакого сервиса там.

0
ответ дан 07.12.2019, 16:10

Позволяет говорят, что у Вас есть сервер, и это - IP-адрес, XXX.XXX.XXX.XXX. Можно соединиться с сервером, чтобы сделать множество вещей. Вы всегда соединяетесь с ним с помощью того же IP-адреса, но номер порта, который Вы используете, - то, как сервер определяет то, что Вы пытаетесь сделать.

Если бы Вы хотите просмотреть веб-страницы на своем сервере, Вы соединились бы с портом использования сервера 80: XXX.XXX.XXX.XXX:80. Когда сервер принимает Ваше соединение на порте 80, это понимает, что Вы хотите просмотреть веб-страницу.

Если Вы хотите соединиться с программой FTP, работающей на сервере, Вы соединяетесь с портом 21: XXX.XXX.XXX.XXX:21. Когда сервер принимает Ваше соединение на порте 21, это понимает, что Вы хотите использовать FTP.

Та же ситуация идет для SSH/SFTP (порт 22), HTTPS (порт 443), запросы DNS (порт 53), и т.д... Существуют тысячи стандартизированных номеров портов для различных приложений/сервисов.

Порты являются в основном просто путем к компьютеру для определения, какой запрос выполняется к нему.

0
ответ дан 07.12.2019, 16:10

Теги

Похожие вопросы