services(5)

NAZWA
services - lista usług sieci Internet

OPIS
services jest plikiem tekstowym ASCII umożliwiającym wzajemne przyporządkowanie pomiędzy przyjaznymi nazwami usług a odpowiednimi numerami portów i rodzajami protokołów. Każda aplikacja sieciowa powinna konsultować z tym plikiem numer portu (i protokołu) dla określonej usługi. Funkcje biblioteki C getservent(3), getservbyname(3), getservbyport(3), setservent(3) i endservent(3) obsługują zapytania dotyczące zawartości tego pliku od programów.

Numery portów są przydzielane przez IANA (Internet Assigned Numbers Authority), ich aktualna polityka to przydzielanie numeru portu jednocześnie dla obu protokołów: TCP i UDP. Dlatego większość usług w pliku services posiada podwójne rekordy, nawet w przypadku usług działających tylko po TCP.

Numery portów poniżej 1024 (tzw. niskie porty, porty o niskich numerach) mogą być otwierane jedynie przez administratora (patrz bind(2), tcp(7) i udp(7)). Oznacza to, że klient łączący się z niskim numerem portu może mieć pewność, że program obsługi na tym porcie jest standardowym programem systemowym, a nie dowolnym programem użytkownika danego komputera. Popularne numery portów określone przez IANA są zwykle umieszczane w tym właśnie przedziale portów administratora.

Obecność pozycji dotyczącej usługi w pliku services nie oznacza, że dana usługa jest aktualnie obsługiwana przez komputer. Konfigurację obsługiwanych usług internetowych można znaleźć w pliku inetd.conf(5). Należy również pamiętać, że nie wszystkie usługi sieciowe są uruchamiane przez inetd(8), a zatem plik inetd.conf(5) nie zawiera wszystkich usług świadczonych przez dany komputer. W szczególności serwery news (NNTP) i poczty (SMTP) są zwykle uruchamiane z systemowych skryptów startowych.

Położenie pliku services jest zdefiniowane jako _PATH_SERVICES w pliku <netdb.h>. Zwykle jest to /etc/services.

Każdy wiersz tego pliku opisuje jedną usługę i ma następującą postać:

    nazwa-usługi port/protokół [aliasy ...]

gdzie:

nazwa-usługi
    jest to przyjazna dla człowieka nazwa, pod którą usługa jest znana i pod którą jest poszukiwana. Rozróżnia się małe i wielkie litery. Często program kliencki jest nazywany tak jak nazwa-usługi.

port
    numer portu (liczba dziesiętna), z którego ma dana usługa korzystać.

protokół
    rodzaj protokołu, jaki ma być wykorzystywany. To pole powinno zawierać jeden z protokołów zdefiniowanych w pliku protocols(5). Zwykle jest to tcp lub udp.

aliasy
    jest to opcjonalna lista rozdzielonych spacjami lub znakami tabulacji innych nazw tej samej usługi. Tu też rozróżnia się małe i wielkie litery.

Poszczególne pola mogą być rozdzielane spacjami lub znakami tabulacji.

Komentarze rozpoczynają się od znaku krzyżyka # aż do końca wiersza. Puste wiersze są pomijane.

nazwa-usługi powinna się rozpoczynać w pierwszej kolumnie pliku, ponieważ początkowe spacje nie są pomijane. nazwa-usługi może się składać z dowolnych widocznych znaków, z wyjątkiem spacji i znaku tabulacji. Jednakże w celu zmniejszenia kłopotów z przenośnością powinny być użyte znaki z bardziej ograniczonych zakresów. Przykładowo a-z, 0-9 i myślnik (-) wydają się być rozsądnym wyborem.

Wiersze nie odpowiadające temu formatowi nie powinny znajdować się w pliku (obecnie są one pomijane przez funkcje getservent(3), getservbyname (3) i getservbyport(3), jednakże nie należy polegać na tym zachowaniu).

Plik ten może być rozpowszechniany w sieci za pośrednictwem takich ogólnosieciowych usług nazewnictwa, jak Yellow Pages/NIS lub BIND/Hesiod.

Przykładowy plik services mógłby wyglądać tak:

    netstat         15/tcp
    qotd            17/tcp          quote
    msp             18/tcp          # message send protocol
    msp             18/udp          # message send protocol
    chargen         19/tcp          ttytst source
    chargen         19/udp          ttytst source
    ftp             21/tcp
    # 22 - unassigned
    telnet          23/tcp

PLIKI

/etc/services
    lista usług sieci Internet

<netdb.h>
    definicja stałej _PATH_SERVICES

ZOBACZ TAKŻE
listen(2), endservent(3), getservbyname(3), getservbyport(3), getservent(3), setservent(3), inetd.conf(5), protocols(5), inetd(8)

Assigned Numbers RFC, ostatnio RFC 1700, (AKA STD0002).

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Piotr Pogorzelski <piotr.pogorzelski@ippt.gov.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.