Этот файл в основном просто копия /etc/services
из старой версии BSD - поскольку Windows использует один и тот же API-интерфейс «BSD-сокеты» и даже используется в различных клиентских программах ( FTP , телнет , RSH , Палец команды) от него, это нужно services
файл для того, чтобы getservbyname()
функция для работы.
В Unix различные интернет-серверы и клиенты звонили getservbyname()
выяснить, какой порт они должны слушать; getservbyname("finger", "tcp")
вернет порт 79. Но когда /etc/hosts
был заменен DNS, /etc/services
не было - поэтому он быстро устареет, так как количество сайтов выросло.
Я предполагаю, что из-за этого программы перестали использовать getservbyname()
и вместо этого начал использовать свои собственные файлы конфигурации или номера портов. Я думаю только Inetd демон (и его Xinetd преемник) по-прежнему использует имена служб как часть своей конфигурации. И только старые клиенты любят телнет или же 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 а также телнет инструменты.