2

Я работаю над службой Windows, которая использует порты для обсуждения с клиентскими приложениями.

Я видел, что порты, используемые Windows, зарегистрированы в файле C:\Windows\System32\drivers\etc\services , а также порты, используемые некоторыми приложениями, не разработанными Windows.

Должен ли я добавить порты, которые моя служба использует в этом файле? Это в любом случае полезно, или только для информации?

1 ответ1

3

Этот файл в основном является копией /etc/services из старой версии BSD - поскольку Windows использует один и тот же API-интерфейс «BSD-сокеты» и даже содержит различные клиентские программы (команды ftp, telnet, rsh, finger ), нужен файл services для работы функции getservbyname() .

В Unix различные интернет-серверы и клиенты вызывали getservbyname() чтобы узнать, какой порт им следует прослушивать; getservbyname("finger", "tcp") вернет порт 79. Но когда /etc/hosts был заменен на DNS, /etc/services не был - так что он быстро устареет по мере роста количества сайтов.

Я предполагаю, что из-за этого программы перестали использовать getservbyname() и начали использовать вместо них свои собственные файлы конфигурации или номера портов в жестком коде . Я думаю, что только демон inetd (и его преемник xinetd ) по-прежнему используют имена сервисов как часть своей конфигурации. И только устаревшие клиенты, такие как telnet или ftp, используют имена сервисов для подключения.

В наши дни файл в основном информационный - например, программа netstat может преобразовывать порты в имена служб, точно так же, как она переводит IP-адреса в имена хостов.

$ netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:pulse-native          *:*                     LISTEN     
tcp6       0      0 [::]:mpd                [::]:*                  LISTEN     
tcp6       0      0 [::]:pulse-native       [::]:*                  LISTEN     
tcp6       0      0 [::]:netbios-ssn        [::]:*                  LISTEN     
tcp6       0      0 [::]:finger             [::]:*                  LISTEN     
tcp6       0      0 [::]:auth               [::]:*                  LISTEN     

В Windows, я уверен, файл используется еще меньше - я не могу вспомнить ни одну программу, которая его использует, кроме тех же инструментов ftp и telnet .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .