Цей файл здебільшого є лише копією /etc/services
старої версії BSD - оскільки Windows використовує той самий API BSD sockets і навіть приносить із нього різні клієнтські програми ( ftp , telnet , rsh , finger finger ), йому потрібен services
файл у порядок роботи getservbyname()
функції.
На Unix використовували різні Інтернет-сервери та клієнти, getservbyname()
щоб дізнатися, який порт вони повинні слухати; getservbyname("finger", "tcp")
повертається порт 79. Але коли /etc/hosts
його замінив DNS, /etc/services
не було - значить, він швидко застаріє, оскільки кількість сайтів зростала.
Я здогадуюсь, що через це програми перестали використовувати getservbyname()
та замість них почали використовувати власні конфігураційні файли чи жорсткі коди портів. Я думаю, що тільки демон inetd (і його наступник xinetd ) як і раніше використовують назви служб як частину своєї конфігурації. І лише застарілі клієнти, такі як telnet або ftp, використовують імена служб для підключення.
У цей час файл є переважно інформаційним - наприклад, netstat
програма може переводити порти на імена служб, так само як і переводить IP адреси на імена хостів.
$ netstat -lt
Активні підключення до Інтернету (лише сервери)
Proto Recv-Q Send-Q Місцева адреса з іноземною адресою
tcp 0 0 *: пульс *: * LISTEN
tcp6 0 0 [::]: mpd [::]: * СПИСОК
tcp6 0 0 [::]: імпульсний рідний [::]: * LISTEN
tcp6 0 0 [::]: netbios-ssn [::]: * LISTEN
tcp6 0 0 [::]: finger [::]: * LISTEN
tcp6 0 0 [::]: auth [::]: * СПИСОК
У Windows, я впевнений, що файл використовується ще менше - я не пам'ятаю жодної програми, яка використовує його, окрім тих же інструментів ftp та telnet .