Konfiguracja TCP/IP w systemie Unix

    Konfiguracja TCP/IP w większości wersji systemu UNIX, opiera się na kilku plikach konfiguracyjnych wymienionych w poniższej tabeli. W niektórych implementacjach mogą się różnić nazwami, lecz ich znaczenie pozostaje takie samo. Wymienione pliki są plikami tekstowymi, więc do ich modyfikacji potrzebny jest dowolny edytor tekstowy, operujący w czystym kodzie ASCII.

 

konfig.gif (12132 bytes)

 

    Symboliczne nazwy maszyn – plik /etc/hosts

    Za każdym razem, gdy program użytkownika odwołuje się do symbolicznej nazwy maszyny, nazwa ta musi zostać przekształcona na odpowiadający jej adres sieciowy. Przekształcenie to odbywa się na bazie plików tekstowych zawierających wykaz adresów maszyn wraz z ich nazwami symbolicznymi. Wyjątek stanowią systemy Yellow Pages, DNS oraz Network Information Services (NIS); używają one plików w specyficznym formacie.

    W systemie UNIX plik wiążący nazwy i adresy maszyn nazywa się hosts i jest zlokalizowany w katalogu /etc.

    Adres sieciowy we wspomnianym pliku konfiguracyjnym może zostać podany w formie dziesiętnej, szesnastkowej lub ósemkowej. Jednemu adresowi można przypisać kilka nazw symbolicznych, oddzielając je od siebie spacją lub znakiem tabulacji. Kolejność opisów nie ma znaczenia, nie jest też ograniczona jego długość. Przykładowa zawartość pliku może być następująca:

        #network host addresses

        127.0.0.1             localhost local tpci_server
        157.40.40.1        tpci_sco1
        157.40.40.2        tpci_sco2

    Jak łatwo zauważyć, zawartość pliku jest podzielona między dwie kolumny. Pierwsza z nich zawiera adresy IP poszczególnych maszyn, druga zaś ich nazwy.

    Zawartość pliku /etc/hosts może zostać zmieniona w dowolnej chwili, a dokonane zmiany są od razu skuteczne (nie wymagają przeładowania systemu). Każde odwołanie programu użytkownika do symbolicznej nazwy maszyny powoduje przeszukanie pliku /etc/hosts.

    Nazwy sieci – plik /etc/networks

    Podobnie jak maszyny, także sieci mogą posiadać nazwy mnemoniczne (oprócz oczywiście jednoznacznego adresu IP). Odwzorowanie to jest sterowane zawartością pliku /etc/networks. Plik ten nie jest wykorzystywany zbyt często z tej prostej przyczyny, że programy użytkownika rzadko odwołują się do sieci jako całości.

    Format linii pliku /etc/networks jest nieco inny niż w przypadku pliku /etc/hosts. Pierwsze dwie kolumny to odpowiednio nazwa sieci i jej adres IP; kolejne kolumny linii to alternatywne nazwy danej sieci, zwane jej aliasami. Oto przykładowa zawartość pliku /etc/networks:

#local networks names
tpci 146.1 tpci_network tpci_local
bnr 47.80 BNR bnr.ca
sco 132.147 SCO

    Zwróćmy uwagę na to, że druga kolumna zawiera jedynie globalną część adresu IP – jest to zrozumiałe, gdyż adres ten identyfikuje sieć jako całość, nie zaś konkretną maszynę w sieci.

    Protokoły sieciowe – plik /etc/protocols

    Numery protokołów identyfikują poszczególne protokoły transportowe, dzięki czemu maszyna odbierająca datagram potrafi właściwie rozkodować zawartą tam informację – numer protokołu zawarty jest w nagłówku IP. Plikiem odpowiedzialnym za powiązanie numerów protokołów z ich nazwami symbolicznymi, jest w systemie UNIX plik /etc/protocols. Oto jego przykładowa zawartość:

#
# Internet (IP) protocols
#
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet protocol message protocol
igmp 2 IGMP # internet group message protocol
ggp 3 GGP # gateway-gateway protocol
tcp 6 TCP # transmission control protocol
udp 17 UDP # user datagram protocol

    W odróżnieniu od plików poprzednio omówionych, plik /etc/protocols nie jest zazwyczaj modyfikowany przez operatora, lecz jest tworzony podczas instalacji protokołu TCP/IP oraz uaktualniany przy instalowaniu nowego oprogramowania na jego potrzeby – wszelkie nowe usługi protokołu TCP/IP znajdują tutaj odzwierciedlenie.

    Zawartość tego pliku nie powinna być w ogóle modyfikowana samodzielnie, gdyż numery i nazwy protokołów rodziny TCP/IP nie są prywatną sprawą sieci, lecz ich znaczenie jest ujednolicone w ramach całej rodziny.

    Usługi sieciowe – plik /etc/services

    Kolejnym rozpatrywanym tutaj plikiem konfiguracyjnym jest plik /etc/services określający zasób dostępnych usług sieciowych. Podobnie jak w przypadku pliku /etc/protocols, jest on zarządzany przez oprogramowanie protokołu TCP/IP i nie powinien być bezpośrednio modyfikowany. Każda linia zawiera kolejno nazwę usługi, numer przypisanego jej portu, typ usługi oraz – opcjonalnie – przypisane danej usłudze aliasy. Ze względu na szeroki wachlarz usług TCP/IP sam plik również ma wcale niemałe rozmiary. Jego początek mógłby wyglądać następująco:

# network services
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
ftp 21/tcp
telnet 23/tcp

    Demon inetd – plik /etc/inetd.conf

    Przy uruchamianiu systemu UNIX zostaje również uruchomiony protokół TCP/IP, który z kolei uruchamia procesy potomne dla wszystkich swoich portów. Zadaniem każdego z tych procesów jest obsługa połączeń związanych z poszczególnymi portami. Większość z tych procesów jest zwykle bezczynna, gdyż z danym portem może nie być kojarzone połączenie nawet przez długi czas, w skrajnym przypadku nigdy.

    Znacznie lepszym pomysłem jest przypisanie procesów nie do portów lecz do połączeń, przez co unika się blokowania zasobów komputera przez jałowe procesy. Temu celowi służy program inetd, uruchamiany przy starcie systemu i cały czas obecny w tle (dlatego zalicza się do demonów). Przejmuje na siebie nadzorowanie inicjowanych połączeń. Za jego pośrednictwem wykonuje się wiele poleceń, zazwyczaj echo, discard, time i inne.

Działanie tego demona zależne jest od pliku konfiguracyjnego o nazwie /etc/inetd.conf, którego przykładową zawartość pokazano niżej:

# @(#)inetd.conf 5.2 Lachman System V STREAMS TCP source
#
# System V STREAMS TCP – Release 4.0

ftp stream tcp nowait NOLUID /etc/ftpd ftpd
telnet stream tcp nowait NOLUID /etc/telnetd telnetd
login stream tcp nowait NOLUID /etc/rlogind rlogind
ntalk dgram udp wait root /etc/talkd talkd

 

Poszczególne kolumny zawierają kolejno:

    Plik konfiguracyjny odczytywany jest przy uruchomieniu programu inetd (podczas startu systemu) oraz każdorazowo, gdy odebrany zostanie od aplikacji sygnał zawieszenia (ang. hang-up); umożliwia to jego dynamiczną aktualizację w trakcie pracy systemu.

| Wprowadzenie | Sieć komputerowa | Protokoły | Model OSI (Open Systems Interconnection) | TCP/IP a model OSI | Adresowanie fizyczne | Adresy IP |

| Protokół Odwzorowania Adresów (ARP) | Protokół Odwrotnego Odwzorowania Adresów (RARP) | Internet Protocol (IP) | Kapsułkowanie | Fragmentacja |

| Koleje Życia Datagramu | ICMP | Określanie Ostatecznego Adresata | UDP | Multipleksowanie I Demultipleksowanie | Transmission Control Protocol (TCP) |

| Idea przesuwających się okien | Segment TCP | Porty i połączenia | Konfiguracja TCP/IP w systemie Unix | Przyszłość TCP/IP | Bibliografia |