Gniazdo Unix - porty i usługi

Gdy proces klienta chce połączyć się z serwerem, klient musi mieć możliwość zidentyfikowania serwera, z którym chce się połączyć. Jeśli klient zna 32-bitowy adres internetowy hosta, na którym znajduje się serwer, może skontaktować się z tym hostem. Ale w jaki sposób klient identyfikuje konkretny proces serwera działający na tym hoście?

Aby rozwiązać problem z identyfikacją konkretnego procesu serwera działającego na hoście, w protokołach TCP i UDP zdefiniowano grupę dobrze znanych portów.

W naszym celu port zostanie zdefiniowany jako liczba całkowita z zakresu od 1024 do 65535. Dzieje się tak, ponieważ wszystkie numery portów mniejsze niż 1024 są uważane za dobrze znane - na przykład telnet używa portu 23, http używa 80, ftp używa 21, i tak dalej.

Przypisania portów do usług sieciowych można znaleźć w pliku / etc / services. Jeśli piszesz na własnym serwerze, musisz zadbać o przypisanie portu do swojego serwera. Powinieneś upewnić się, że ten port nie powinien być przypisany do żadnego innego serwera.

Zwykle praktyką jest przypisywanie dowolnego portu o numerze większym niż 5000. Ale jest wiele organizacji, które napisały serwery o numerach portów powyżej 5000. Na przykład Yahoo Messenger działa na 5050, SIP Server na 5060 itd.

Przykładowe porty i usługi

Oto mała lista usług i powiązanych portów. Najbardziej aktualną listę portów internetowych i powiązanych usług można znaleźć na stronie IANA - TCP / IP Port Assignments .

Service Port Number Service Description
Echo 7 UDP / TCP odsyła to, co otrzymuje.
odrzucać 9 UDP / TCP odrzuca dane wejściowe.
dzień 13 UDP / TCP zwraca czas ASCII.
ładować 19 UDP / TCP zwraca znaki.
ftp 21 Transfer plików TCP.
telnet 23 Zdalne logowanie TCP.
smtp 25 E-mail TCP.
dzień 37 UDP / TCP zwraca czas binarny.
tftp 69 Prosty transfer plików UDP.
palec 79 Informacje TCP o użytkownikach.
http 80 Sieć TCP w sieci WWW.
Zaloguj sie 513 Zdalne logowanie TCP.
WHO 513 UDP różne informacje o użytkownikach.
Xserver 6000 Okna TCP X (NB> 1023).

Funkcje portów i usług

Unix udostępnia następujące funkcje do pobierania nazwy usługi z pliku / etc / services.

  • struct servent *getservbyname(char *name, char *proto) - To wywołanie przyjmuje nazwę usługi i nazwę protokołu oraz zwraca odpowiedni numer portu dla tej usługi.

  • struct servent *getservbyport(int port, char *proto) - To wywołanie przyjmuje numer portu i nazwę protokołu oraz zwraca odpowiednią nazwę usługi.

Wartość zwracana dla każdej funkcji jest wskaźnikiem do struktury o następującej postaci -

struct servent {
   char  *s_name;
   char  **s_aliases;
   int   s_port;
   char  *s_proto;
};

Oto opis pól członkowskich -

Atrybut Wartości Opis
s_name http To jest oficjalna nazwa serwisu. Na przykład SMTP, FTP POP3 itp.
s_aliases ALIAS Zawiera listę aliasów usług. W większości przypadków będzie ustawiony na NULL.
sport 80 Będzie miał powiązany numer portu. Na przykład dla HTTP będzie to 80.
s_proto

TCP

UDP

Jest ustawiony na używany protokół. Usługi internetowe są świadczone przy użyciu protokołu TCP lub UDP.