SERVICES(5)

NAZWA
services - lista usług sieci Internet

OPIS
services jest plikiem tekstowym 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 konsultowac 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 maszynę. 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 /usr/include/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 (ale zajrzyj też do sekcji BŁĘDY, poniżej). 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żyta znaki z bardziej ograniczonych zakresów. Np. a-z, 0-9 i myślnik (-) wydaje 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.) Jako cecha zgodności z poprzednimi wersjami, ukośnik (/) pomiędzy numerem portu a nazwą protokołu może być w rzeczywistości również przecinkiem (,). Jednak stosowanie przecinka w nowych instalacjach nie jest zalecane. 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

BŁĘDY
Ze względu na sposób, w jaki jest napisana funkcja getservent(3) istnieje ograniczenie liczby aliasów do 35. Wiersze dłuższe niż BUFSIZ (obecnie 1024) będą ignorowane przez funkcje getservent(3), getservbyname(3) i getservbyport(3). Spowoduje to również błędne zinterpretowanie następnego wiersza.

PLIKI

/etc/services
    lista usług sieci Internet

/usr/include/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). Przydzielone numery można znaleźć w RFC 1700 (inaczej, STD0002) Przewodnik po usłudze Yellow Pages Przewodnik po usłudze BIND/Hesiod