services - lista usług sieci Internet
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
- /etc/services
- lista usług sieci Internet
- <netdb.h>
- definicja stałej _PATH_SERVICES
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).
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Piotr Pogorzelski <
[email protected]>, Andrzej
Krzysztofowicz <
[email protected]> i Michał Kułach
<
[email protected]>
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 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy
zgłaszać na adres listy dyskusyjnej
[email protected]