bzero((char *)&clientAddr, sizeof(clientAddr));

 clientAddr.sin_family = AF_INET;

 clientAddr.sin_addr.s_addr = htonl(INADDR_ANY);

 clientAddr.sin_port = 0;

 if (bind(sock, &clientAddr, sizeof(clientAddr)) < 0) {

  perror('Клиент не получил порт. ');

  exit(1);

 }

 /* 4. Клиент анонсирует свою готовность к приему сообщений.

  * Он посылает сообщение и распечатывает последнюю строку. */

 printf ('CLIENT: Готов к пересылке ');

 if (sendto(sock, argv[3], strlen(argv[3]), 0, &servAddr, sizeof(servAddr)) < 0) {

  perror 'Проблема с sendto. ');

  exit(1);

 }

 printf ('CLIENT: Пересылка закончена. Счастливо. ');

 /* Закрытие socket */

 close(sock);

}

21.11.1 Запросы в клиентской программе UDP

1. sock = socket(AF_INET, SOCK_DGRAM, 0); UDP клиента создает socket для UDP.

2. bzero((char *)&servAddr, sizeof(servAddr));

servAddr.sin_family = AF_INET;

hp = gethostbyname(argv[1]);

bcopy(hp->h_addr, &servAddr.sin_addr, hp->length);

servAddr.sin_port = htons(atoi(argv[2]));

Структура servAddr заполнена введенными конечным пользователем значениями, как это делалось и в клиенте для TCP.

3. bind (sock, &clientAddr, sizeof(clientAddr)); Клиент вызывает bind для получения порта.

4. sendto(sock, argv[3], strlen(argv[3]), 0, &servAddr, sizeof (servAddr));

Вызов sendto имеет форму:

sendto(дескриптор_socket, буфер, длина_буфера, флаги, адресная_структура_назначения, длина адресной_структуры_назначения)

Этот запрос содержит всю информацию о точке назначения, необходимую для отправки датаграммы протокола UDP.

21.12 Дополнительная литература

Любое техническое руководство по программированию в Unix содержит описания программных вызовов socket. В книге Ричарда Стивенса (Richard Stevens) Unix Network Programming детально обсуждается программирование socket. Руководства программиста TCP/IP для других операционных систем, описывают вызовы socket и часто содержат примеры типичных программ. Следует ознакомиться с подобным руководством, поскольку между операционными системами могут существовать различия.

Глава 22

IP версии 6

22.1 Введение

За относительно короткий период времени персональные компьютеры стали подключаться к локальным сетям, которые объединялись в региональные сети. Многие из этих систем связаны со всем миром. Результатом стало распространение Интернета среди миллионов пользователей.

Структура исходной схемы адресации IP не вполне подходит для такого окружения. Пространство номеров ограничено, и, в отличие от структуры телефонных номеров с иерархической системой кодов стран и областей, здесь нумерация не является иерархической. Присваивание организациям блоков адресов не слишком эффективно, поскольку большая часть адресного пространства не используется.

Пространство номеров быстро истощилось. Кроме того, поскольку номера присваивались не иерархически, быстро разрослись таблицы маршрутизации.

Однако расширение Интернета нельзя остановить. Количество персональных компьютеров и их подключений к глобальной сети постоянно растет. Появляются новые потребности:

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

■ Требования для аудио и видео в реальном времени, приведшие существующую технологию к своему естественному пределу.

К Интернету обратился серьезный деловой мир, которому требуется обеспечение реальной безопасности сетевых инфраструктур.

Существует и проблема с сетевым управлением. Многие организации используют магистральные соединения по IP для объединения своих сетей и пересылке трафика средствами протокола IP. На сегодняшний день эти задачи не решены полностью и нет эффективных механизмов для управления нагрузкой.

Разработка IP версии 6 (IPv6, называемый еще IP следующего поколения) проводилась для решения проблем адресации, маршрутизации, производительности, безопасности и нагрузки в Интернете. В этой главе рассматриваются наиболее важные возможности IPv6. При реализации следует учитывать требования самых последних RFC.

22.2 Обзор IPv6

Протокол IPv6 имеет следующие характеристики:

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату