Учебники

Unix Socket — Порты и услуги

Когда клиентский процесс хочет подключиться к серверу, клиент должен иметь способ идентифицировать сервер, к которому он хочет подключиться. Если клиент знает 32-битный интернет-адрес хоста, на котором находится сервер, он может связаться с этим хостом. Но как клиент идентифицирует конкретный процесс сервера, работающий на этом хосте?

Чтобы решить проблему идентификации конкретного серверного процесса, выполняющегося на хосте, как TCP, так и UDP определили группу известных портов.

Для нашей цели порт будет определяться как целое число от 1024 до 65535. Это связано с тем, что все номера портов, меньшие 1024, считаются общеизвестными — например, telnet использует порт 23, http использует 80, ftp использует 21, и так далее.

Назначения портов для сетевых служб можно найти в файле / etc / services. Если вы пишете свой собственный сервер, необходимо позаботиться о том, чтобы назначить порт вашему серверу. Вы должны убедиться, что этот порт не назначен никакому другому серверу.

Обычно рекомендуется назначать номера портов более 5000. Но есть много организаций, которые написали серверы с номерами портов более 5000. Например, Yahoo Messenger работает на 5050, SIP Server работает на 5060 и т. Д.

Примеры портов и сервисов

Вот небольшой список сервисов и связанных с ними портов. Самый последний список интернет-портов и связанных с ними услуг вы можете найти в IANA — Назначение портов TCP / IP .

обслуживание Номер порта Описание услуг
эхо 7 UDP / TCP отправляет обратно то, что получает.
отбрасывать 9 UDP / TCP отбрасывает ввод.
дневное время 13 UDP / TCP возвращает время ASCII.
CHARGEN 19 UDP / TCP возвращает символы.
FTP 21 Передача файлов по протоколу TCP
телнет 23 TCP удаленный вход.
SMTP 25 TCP электронная почта.
дневное время 37 UDP / TCP возвращает двоичное время.
TFTP 69 UDP тривиальная передача файлов.
Палец 79 TCP информация о пользователях.
HTTP 80 TCP World Wide Web.
авторизоваться 513 TCP удаленный вход.
кто 513 UDP разная информация о пользователях.
Xserver 6000 TCP X windows (NB> 1023).

Порт и сервисные функции

Unix предоставляет следующие функции для извлечения имени службы из файла / etc / services.

  • struct servent * getservbyname (char * name, char * proto) — этот вызов принимает имя службы и имя протокола и возвращает соответствующий номер порта для этой службы.

  • struct servent * getservbyport (int port, char * proto) — этот вызов принимает номер порта и имя протокола и возвращает соответствующее имя службы.

struct servent * getservbyname (char * name, char * proto) — этот вызов принимает имя службы и имя протокола и возвращает соответствующий номер порта для этой службы.

struct servent * getservbyport (int port, char * proto) — этот вызов принимает номер порта и имя протокола и возвращает соответствующее имя службы.

Возвращаемое значение для каждой функции — указатель на структуру со следующей формой:

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

Вот описание полей участника —

TCP

UDP