Лекции по курсу "Системное программирование для UNIX". Литвинов Д.Г. - 44 стр.

UptoLike

Составители: 

44
}
Пространство имен интернет
Первоначально пространство имен интернет использовало только протокол
интернет (IP) версии 4 (IPv4), имеющий 32-битные адреса. С постоянным ростом
количества хостов в интернет появилась необходимость в создании нового протокола с
большим адресным пространством. В настоящее время Linux может использовать также
и версию IPv6 протокола интернет, имеющий 128-битное адресное пространство,
который должен со временем заменить IPv4.
Для создания гнезда в пространстве имен IPv4 используется символьное имя
PF_INET. Для создания гнезда в пространстве IPv6 используется символьное имя
PF_INET6.
Адрес в пространстве интернет включает следующие компоненты:
адрес машины, к которой необходимо подключиться;
номер порта этой машины.
Типы данных для представления адреса гнезда в пространстве имен интернет
определены в заголовочном файле <netinet/in.h>. Для адреса IPv4:
struct sockaddr_in {
sa_family_t sin_family;
struct in_addr sin_addr;
unsigned short int sin_port;
};
Структура данных используется для представления адресов в пространстве
имен интернет стандарта IPv4. Здесь sin_family определяет формат адреса гнезда;
sin_addr определяет адрес хоста в сети; sin_port – номер порта.
При вызове функций bind и getsockname аргумент LENGTH нужно установить
значением sizeof (struct sockaddr_in).
Для представления адреса IPv6 используется структура
struct sockaddr_in6 {
sa_family_t sin6_family;
struct in6_addr sin6_addr;
uint32_t sin6_flowinfo;
uint16_t sin6_port;
};
Здесь sin6_family – формат адреса гнезда, sin6_addr – адрес хоста, sin6_flowinfo
в настоящий момент не используется, sin6_port – адрес порта.
Адреса хостов
Каждый компьютер в сети интернет имеет один или несколько адресов,
номеров, которые идентифицируют компьютер среди всех остальных в сети. Обычно
адреса пространства IPv4 представляется в виде четырех чисел, разделенных точками,
адреса пространства IPv6 – в виде последовательность до восьми чисел, разделенных
двоеточиями. Примеры адресов:
IPv4 - 128.52.46.32,
IPv6 - 5f03:1200:836f:c100::1.
Каждый компьютер имеет также одно или более символьных имен, состоящих
из слов, разделенных точками. Программы, позволяющие пользователю указать хост, с
которым необходимо установить соединение, должны давать возможность указывать и
символьное и числовое представление адреса. Однако, программе необходим числовой
адрес для установления соединения, поэтому необходимо конвертировать символьное
представление в числовое.
        }

       Пространство имен интернет
       Первоначально пространство имен интернет использовало только протокол
интернет (IP) версии 4 (IPv4), имеющий 32-битные адреса. С постоянным ростом
количества хостов в интернет появилась необходимость в создании нового протокола с
большим адресным пространством. В настоящее время Linux может использовать также
и версию IPv6 протокола интернет, имеющий 128-битное адресное пространство,
который должен со временем заменить IPv4.
       Для создания гнезда в пространстве имен IPv4 используется символьное имя
PF_INET. Для создания гнезда в пространстве IPv6 используется символьное имя
PF_INET6.
       Адрес в пространстве интернет включает следующие компоненты:
       • адрес машины, к которой необходимо подключиться;
       • номер порта этой машины.
       Типы данных для представления адреса гнезда в пространстве имен интернет
определены в заголовочном файле . Для адреса IPv4:
        struct sockaddr_in {
             sa_family_t sin_family;
             struct in_addr sin_addr;
             unsigned short int sin_port;
        };
        Структура данных используется для представления адресов в пространстве
имен интернет стандарта IPv4. Здесь sin_family определяет формат адреса гнезда;
sin_addr определяет адрес хоста в сети; sin_port – номер порта.
        При вызове функций bind и getsockname аргумент LENGTH нужно установить
значением sizeof (struct sockaddr_in).
        Для представления адреса IPv6 используется структура
        struct sockaddr_in6 {
             sa_family_t sin6_family;
             struct in6_addr sin6_addr;
             uint32_t sin6_flowinfo;
             uint16_t sin6_port;
        };
        Здесь sin6_family – формат адреса гнезда, sin6_addr – адрес хоста, sin6_flowinfo
– в настоящий момент не используется, sin6_port – адрес порта.

        Адреса хостов
        Каждый компьютер в сети интернет имеет один или несколько адресов,
номеров, которые идентифицируют компьютер среди всех остальных в сети. Обычно
адреса пространства IPv4 представляется в виде четырех чисел, разделенных точками,
адреса пространства IPv6 – в виде последовательность до восьми чисел, разделенных
двоеточиями. Примеры адресов:
        IPv4 - 128.52.46.32,
        IPv6 - 5f03:1200:836f:c100::1.
        Каждый компьютер имеет также одно или более символьных имен, состоящих
из слов, разделенных точками. Программы, позволяющие пользователю указать хост, с
которым необходимо установить соединение, должны давать возможность указывать и
символьное и числовое представление адреса. Однако, программе необходим числовой
адрес для установления соединения, поэтому необходимо конвертировать символьное
представление в числовое.



        44