services
NAZWA
services - lista usług sieci Internet
OPIS
services jest plikiem tekstowym umożliwiającym wzajemne przy-
porzą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), getservby-
name(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 jed-
nocześ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 numer-
ach) 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 standar-
dowym 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ą uruchami-
ane 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 proto-
cols(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 tabu-
lacji. 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), get-
servbyname(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/Hes-
iod.
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) ist-
nieje 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), getser-
vent(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