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 Port Assignments .
Service | Port Number | Service Description |
эхо | 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 (NB> 1023). |
Порт и сервисные функции
Unix предоставляет следующие функции для получения имени службы из файла / etc / services.
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;
};
Вот описание полей членов -
Атрибут | Значения | Описание |
---|---|---|
s_name | http | Это официальное название службы. Например, SMTP, FTP POP3 и т. Д. |
s_aliases | НИКНЕЙМЫ | Он содержит список псевдонимов служб. В большинстве случаев он будет установлен в NULL. |
s_port | 80 | Он будет иметь связанный номер порта. Например, для HTTP это будет 80. |
s_proto | TCP UDP |
Он настроен на используемый протокол. Интернет-услуги предоставляются с использованием TCP или UDP. |