- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) - Сидни Фейт
Шрифт:
Интервал:
Закладка:
/* argv[2] ссылается на порт, */
/* а argv [3] ссылается на текстовое сообщение. */
{
int sock;
struct sockaddr_in, servAddr, clientAddr;
struct hostent *hp, *gethostbyname();
/* Должно быть четыре аргумента. */
if (argc < 4) {
printf ("ВВЕСТИ udpclient имя_хоста порт сообщениеn");
exit(1);
}
/* 1. Создать socket для UDP. */
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("He получен socketn");
exit(1);
}
/* 2. Занести адрес и порт сервера в servAddr.
* Сначала заполнить адресную структуру нулями.
* Использовать функцию gethostbyname для получения имени хоста
* и его IP-адреса. Затем скопировать IP-адрес
* в servAddr функцией bcopy.
* Наконец занести номер порта из argv[2]. */
bzero((char *)&servAddr, sizeof(servAddr));
servAddr.sin_family = AF_INET;
hp = gethostbyname(argv[1]);
bcopy(hp->h_addr, &servAddr.sin_addr, hp->h_length);
servAddr.sin_port = htons(atoi(argv[2]));
/* 3. Вызвать bind для получения порта UDP. Система
* назначает свободный порт. */
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("Клиент не получил порт.n");
exit(1);
}
/* 4. Клиент анонсирует свою готовность к приему сообщений.
* Он посылает сообщение и распечатывает последнюю строку. */
printf ("CLIENT: Готов к пересылкеn");
if (sendto(sock, argv[3], strlen(argv[3]), 0, &servAddr, sizeof(servAddr)) < 0) {
perror "Проблема с sendto.n");
exit(1);
}
printf ("CLIENT: Пересылка закончена. Счастливо.n");
/* Закрытие 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 имеет следующие характеристики:
■ Введен 128-разрядный адрес (16 октетов), который иерархически структурирован для упрощения делегирования прав выделения адресов и маршрутизации.
■ Упрощен главный заголовок IP, но определены многие необязательные заголовки расширения, что позволяет при необходимости добавлять новые сетевые возможности.
■ Поддерживаются аутентификация, целостность данных и конфиденциальность на уровне IP.
■ Введены потоки, поддерживающие многие новые типы пересылки запросов, например видео в реальном времени.
■ Упрощена инкапсуляция других протоколов, и предложен механизм для управления нагрузкой при пересылке данных от других протоколов.
■ Реализован новый метод автоматической самоконфигурации адресов и проверки уникальности IP-адресов.
■ Улучшены методы исследования маршрутизаторов, определения неисправных путей и недостижимых соседей по связи.
На момент написания книги многие детали IPv6 находились еще в стадии разработки, однако основные архитектурные элементы уже подготовлены и рассматриваются в этой главе. Уже стали стандартами IPv6, ICMPv6, расширение DNS и архитектура адресации IPv6.
22.3 Терминология
Версия 6 вносит некоторые изменения в терминологию версии 4 и вводит новые термины:
■ Пакетом (packet) называется заголовок IPv6 плюс полезные данные
■ Узел (node) — любая система, реализующая IPv6
■ Маршрутизатор (router) — узел, пересылающий не адресованные ему пакеты IPv6
■ Связь (link) — носитель, по которому взаимодействуют узлы на уровне связи данных
■ Соседи (neighbor) — узлы, подключенные к одной связи
Термином "пакет" наиболее злоупотребляют в сетевом мире. Пакетами называются любые элементы данных протокола (PDU) от уровня связи данных до уровня приложений.
Почему авторы версии 6 перешли от термина "датаграмма" к "пакету"? Одно из новшеств в IPv6 — это возможность переноса трафика для многих других протоколов. Следовательно, полезные данные не обязательно будут PDU из набора протоколов TCP/IP. Когда пересылается родной PDU из IP, можно пользоваться термином "датаграмма".
В этой главе рассматриваются текущие документы IPv6 и используется термин "пакет".
22.4 Адреса IPv6
Адреса IPv6 имеют длину 16 октетов (128 бит). Для записи адресов используется компактная (хотя и уродливая) нотация. Адреса представлены как 8 шестнадцатеричных чисел, разделенных двоеточиями. Каждое шестнадцатеричное число представляет 16 бит. Например:
41BC:0:0:0:5:DDE1:8006:2334
Ведущие нули в шестнадцатеричных полях могут быть опущены (например, 0 вместо 0000 и 5 вместо 0005). Формат может быть еще более сжат при замене последовательности смежных нулевых полей на "::". Например:
41BC::5:DDE1:8006:2334
Отсутствуют три позиции, так как "::" заменяет последовательность ":0:0:0:".
Адреса версии 4 протокола IP часто вкладываются в последние четыре октета адреса версии 6. Они могут быть записаны с использованием смешанного формата адреса (сочетающего как нотацию с точками, так и нотацию с двоеточиями), например: