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. |