r07 05 (31)


Rozdział 7.
Warstwa aplikacji

W tym rozdziale:

Internet jest siecią niejednorodną, na którą składają się różnego typu komputery i systemy operacyjne — takie jak Macintosh, Windows, Unix, OS/2 i tak dalej. Platformy te stosują odmienne konwencje nazywania plików, reprezentowania tekstu, odmienne metody szyfrowania danych i typy terminali. Warstwa aplikacji, piąta i ostatnia w modelu TCP/IP, odpowiada za pomyślną łączność i zgodność pomiędzy tymi niejednorodnymi platformami. Funkcjonalność tej warstwy jest zapewniana przez szereg różnych protokołów, na przykład: SMTP na potrzeby poczty elektronicznej, Telnet dla wirtualnych terminali oraz FTP do przesyłania plików. Warstwa aplikacji zawiera także aplikacje (programy) zdefiniowane przez użytkownika.

Z niniejszego rozdziału Czytelnik dowie się, jak aplikacje działające w odrębnych węzłach komunikują się ze sobą. Omówimy porty, gniazda i ich role w komunikacji równorzędnych aplikacji. Poznamy również popularne interfejsy API gniazd, takie jak gniazda Berkeley (BSD), Transport Layer Interface (TLI), Transport Independent Remote Procedure Calls (TI-RPCs) oraz Windows Sockets (WinSock). Na koniec opiszemy rolę zdalnych wywołań procedur (RPC — Remote Procedure Call) w sieciach rozproszonych globalnie.

Przegląd portów

W procesie komunikacji samo wysłanie komunikatu do odbiorcy nie wystarczy. Na­daw­ca musi nie tylko zapewnić dostarczenie komunikatu do zamierzonego odbiorcy, lecz również dostarczyć go do określonego — spośród wszystkich procesów odbiorcy — procesu, który zainicjował łączność po stronie nadawcy. Protokoły sieciowe umożliwia­ją taką łączność dwupunktową pomiędzy użytkownikiem i aplikacją, lub pomiędzy dwie­ma aplikacjami, za pomocą portów i gniazd.

0x01 graphic

Odbiorcą komunikatu może być inny węzeł lub usługa działająca w tym samym węźle.

Port jest interfejsem pomiędzy aplikacją i siecią, w której ta aplikacja działa. Inaczej mówiąc, port stanowi punkt końcowy komunikacji, dzięki któremu aplikacja, użytkownik końcowy lub inny węzeł w sieci uzyskuje połączenie z aplikacją. W sieciach opartych na protokole TCP/IP każda aplikacja, która chce komunikować się z inną równorzędną aplikacją działającą w innym węźle, musi używać numeru portu.

0x01 graphic

Numery portów są podobne do wewnętrznych numerów telefonicznych. Aby połączyć się z głównym budynkiem biura, wybieramy numer do firmy, a następnie wewnętrzny, aby połączyć się z określoną osobą w firmie. Adres IP możemy porównać do numeru biura. Każda usługa działająca w węźle posiada stały numer portu — „numer wewnętrzny” — pod którym możemy uzyskać dostęp do usługi.

Numer portu jest liczbą szesnastobitową z zakresu od 0 do 65535. Ogólnie, na potrzeby popularnych usług komunikacyjnych używane są numery portów poniżej 1024. Wartości powyżej 1024 zarezerwowane są tylko na potrzeby węzła. Większość portów serwerów stosuje numery poniżej 1024.; praktyka ta wywodzi się z wczesnej historii systemu Unix, który zezwalał na wiązanie z portami o numerach poniżej 1024. jedynie procesów użytkownika uprzywilejowanego (root).

Jeśli port serwera jest już w użytku, kolejnym żądaniom przypisywane są tymczasowe numery portów. Załóżmy, że węzeł odbiera wiele żądań FTP. W tym przypadku tylko jeden węzeł żądający usługi może łączyć się z usługą FTP na porcie 21., który jest domyślnym portem dla FTP. Innym węzłom równocześnie żądającym dostępu przydzielane są numery portów powyżej 1024. W ten sposób wiele klientów może korzystać jednocześnie z usługi FTP. Programiści systemowi i sieciowi mogą też używać portów powyżej 1024. na potrzeby własnych aplikacji.

0x01 graphic

Większość systemów operacyjnych utrzymuje plik zawierający numery portów i odpowiadające im usługi. Jednakże wartości numerów portów mogą ulegać zmianom, w zależności od platformy programowej i sprzętowej, na której uruchomione jest oprogramowanie TCP.

Większość aplikacji TCP/IP używa w komunikacji modelu klient-serwer. Po stronie użytkownika klient wysyła żądanie określonej usługi poprzez jej port w serwerze, po czym serwer odpowiada na żądanie. Gdy połączenie nawiązywane jest przez port przydzielony do określonego protokołu, wówczas odpowiadające mu usługi są wywoływane szybciej, dzięki czemu stosowanie numerów portów przyspiesza łączność TCP/IP.

Dobrze znane numery portów

Numery portów są zwykle dzielone na trzy kategorie:

Tabela 7.1. Dobrze znane porty TCP/IP i ich numery

Numer portu

Usługa

Opis

1

tcpmux

Multiplekser portów usług TCP

7

echo

Echo

11

systat

Active Users

13

daytime

Daytime (RFC 867)

17

qotd

Cytat dnia

18

msp

Message Send Protocol

19

chargen

Generator znaków

20

ftp-data

Transfer plików — dane

21

ftp

Transfer plików — sterowanie

22

ssh

Protokół logowania zdalnego SSH

23

telnet

Telnet

25

smtp

Simple Mail Transfer

31

msg-auth

Uwierzytelnianie MSG

37

time

Czas

41

graphics

Obsługa grafiki

42

name

Serwer nazw hostów

43

nickname

Who Is

49

tacacs

Login Host Protocol (TACACS)

53

domain

DNS

67

bootps

Bootstrap Protocol Server

68

bootpc

Bootstrap Protocol Client

69

tftp

Trivial File Transfer Protocol

70

gopher

Gopher

79

finger

Finger

80

http

World Wide Web HTTP

101

hostname

Serwer nazw hostów NIC

103

gppitnp

Genesis Point-to-Point Trans Net

107

rtelnet

Usługa Remote Telnet

109

pop2

Post Office Protocol — wersja 2

110

pop3

Post Office Protocol — wersja 3

111

sunrpc

SUN Remote Procedure Call

Tabela 7.1. Dobrze znane porty TCP/IP i ich numery (ciąg dalszy)

Numer portu

Usługa

Opis

119

nntp

Network News Transfer Protocol

123

ntp

Network Time Protocol

137

netbios-ns

Usługa nazewnicza NETBIOS

138

netbios-dgm

Usługa datagramów NETBIOS

139

netbios-ssn

Usługa sesji NETBIOS

143

imap

Internet Message Access Protocol

161

snmp

SNMP

162

snmptrap

SNMPTRAP

163

cmip-man

CMIP/TCP Manager

164

cmip-agent

CMIP/TCP Agent

165

xns-courier

Xerox

179

bgp

Border Gateway Protocol

194

irc

Internet Relay Chat Protocol

199

smux

SMUX

201

at-rtmp

AppleTalk — utrzymanie tras

202

at-nbp

AppleTalk — powiązanie nazw

209

qmtp

Quick Mail Transfer Protocol

213

ipx

IPX

372

ulistproc

ListProcessor

444

snpp

Simple Network Paging Protocol

465

urd

URL Rendesvous Directory dla SSM

465

igmpv3lite

IGMP przez UDP dla SSM

487

saft

Simple Asynchronous File Transfer

512

exec

Zdalne wykonywanie procesów

513

login

Zdalny login ŕ la Telnet

515

printer

kolejkowanie drukowania

517

talk

talk

531

conference

chat

533

netwall

Dla rozgłoszeń awaryjnych

765

webster

Słownik sieciowy

873

rsync

rsync

1080

socks

Socks

0x01 graphic

Numery portów przydzielone przez IANA są unikatowe. Inna usługa (lub protokół) nie może używać numeru portu przydzielonego do usługi lub do odpowiadającego jej protokołu.