17.1.4. Адреса

17.1.4. Адреса

Поскольку каждый протокол поддерживает собственное определение сетевого адреса, интерфейс сокетов должен абстрагировать адреса. В качестве базовой формы адреса используется структура struct sockaddr; его содержимое устанавливается по-разному для каждого семейства адресов. Передавая struct sockaddr в системный вызов, процесс также указывает размер передаваемого адреса. Тип socklen_t определяется как число, достаточно большое для хранения размера любого сокета, который используется системой.

Все типы struct sockaddr соответствуют приведенному ниже определению.

#include <sys/socket.h>

struct sockaddr {

 unsigned short sa_family;

 char sa_data[MAXSOCKADDRDATA];

}

Первые два байта (размер short) указывают семейство адресов, к которому относится данный адрес. Перечень стандартных адресных семейств, используемых приложениями Linux, приведен в табл. 17.1.

Таблица 17.1. Семейства протоколов и адресов

Адрес Протокол Описание протокола AF_UNIX PF_UNIX Домен Unix. AF_INET PF_INET TCP/IP (версия 4). AF_INET6 PF_INET6 TCP/IP (версия 6). AF_AX25 PF_AX25 AX.25, используется радиолюбителями. AF_IPX PF_IPX Novell IPX. AF_APPLETALK PF_APPLETALK AppleTalk DDS. AF_NETROM PF_NETROM NetROM, используется радиолюбителями.