Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)

Здесь есть возможность читать онлайн «Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2000, ISBN: 2000, Издательство: Лори, Жанр: ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security): краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

 Второе издание популярного справочника полностью переработано и расширено с целью предоставить читателю наиболее полное описание средств разработки, конфигурирования, использования и обслуживания сетей TCP/IP и соответствующих служб.
Книга написана увлекательно и доступно. Она содержит дополнительные материалы о нескольких протоколах Интернета, используемых серверами и браузерами WWW, а также рассматривает все последние изменения в этой области. В книгу включены главы о новом стандарте безопасности IP и протоколе IP следующего поколения, известном как IPng или IPv6. Рисунки и таблицы наглядно показывают влияние средств безопасности IP и IPng на существующие сетевые среды.
Издание содержит следующие дополнительные разделы:
• Безопасность IP и IPv6
• Описание средств WWW, новостей Интернета и приложений для работы с gopher
• Подробное описание серверов имен доменов (DNS), маски подсети и бесклассовой маршрутизации в Интернете
• Таблицы и протоколы маршрутизации
• Руководство по реализации средств безопасности для каждого из протоколов и приложений
• Примеры диалогов с новыми графическими инструментами
Новое издание бестселлера по TCP/IP станет незаменимым помощником для разработчиков сетей и приложений, для сетевых администраторов и конечных пользователей.

TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Если адресная структура идентифицирует нужный порт, bind попытается получить его на сервере. Если переменная порта имеет значение 0, bind получит один из неиспользованных портов. Функция bind позволяет ввести номер порта и IP-адрес в TCB. Вызов getsockname имеет форму:

возвращаемый_код = getsockname(дескриптор_socket, адресная_структура, длина_адресной_структуры)

Мы запросили у bind выделение порта, но эта функция не сообщает нам, какой именно порт был предоставлен. Для выяснения этого нужно прочитать соответствующие данные из TCB. Функция getsockname () извлекает информацию из TCB и копирует ее в адресную структуру, где можно будет прочитать эти сведения. Номер порта извлекается и выводится следующим оператором:

printf("SERVER: Номер порта %d\n", ntohs(servAddr.sin_port)) ;

Функция ntohs () имеет полное название network-to-host-short и служит для преобразования номера порта из порядка следования байт в сети в локальный порядок следования байт на хосте.

4. listen(sockMain, 5);

Вызов listen применяется для ориентированных на соединение серверов и имеет форму:

возвращаемый_код = listen(дескриптор_socket, размер_очереди)

Вызов listen указывает, что это будет пассивный socket, и создает очередь требуемого размера для хранения поступающих запросов на соединения.

5. sockClient = accept(sockMain, 0, 0);

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

новым_дескриптор_socket = accept(дескриптор_socket,

клиентская_адресная_структура, длина_клиентской_адресной_структуры)

По умолчанию вызов блокируется до соединения клиента с сервером. Если указана переменная клиентская_адресная_структура , после соединения клиента в эту структуру будут введены IP-адрес и порт клиента. В этом примере программы не проверяются IP-адрес и номер порта клиента, а просто два последних поля параметра заполняются нулями.

6. child = fork();

close(sockMain);

В языке С команда fork создает новый дочерний процесс, который наследует все дескрипторы ввода/вывода родительской программы, а также имеет доступ к sockMain и sockClient . Операционная система отслеживает количество процессов, имеющих доступ к socket.

Соединение закрывается, когда последний обращающийся к socket процесс вызывает close (). Когда дочерний процесс закрывает sockMain, родительский процесс все еще имеет доступ к socket.

7. close(sockClient);

Этот вызов выполняется из родительской части программы. Когда родительский процесс закрывает sockClient, дочерний процесс все еще имеет доступ к socket.

8. msgLength = recv(sockClient, buf, BUFLEN, 0));

close(sockClient);

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

длина_сообщения = recv(дескриптор_socket, буфер, длина_буфера, флаги)

По умолчанию вызов recv блокированный. Функции fcntl () или iocntl () позволяют изменить статус socket на неблокированный режим.

После получения данных дочерним процессом и вывода сообщения на печать, доступ к sockClient закрывается. Это заставит соединение перейти в фазу закрытия.

21.7 Клиентская программа TCP

Клиент соединяется с сервером, посылает одно сообщение, и далее работа программы завершается (фрагменты программы рассматриваются в следующем разделе). Для запуска программы конечный пользователь должен ввести имя хоста сервера, номер порта и сообщение, которое будет послано на этот сервер. Например:

tcpclient pltim.cs.yale.edu 1356 hello

/* tcpclient.с

* Перед запуском клиента должен быть запущен сервер. Производится

* поиск порта сервера. Для запуска клиента нужно ввести:

* tcpclient имя_хоста порт сообщение */

#include

#include

#include

#include

#include

#include

main(argc, argv) /* Клиентская программа имеет входные аргументы. */

int argc;

char* argv[];

{

int sock;

struct sockaddr_in servAddr;

struct hostent *hp, *gethostbyname();

/* Аргументами будут 0:имя_программы, 1:имя_хоста, 2:порт, 3:сообщение */

if (argc < 4) {

printf("ВВЕСТИ tcpclient имя_хоста порт сообщение\n");

exit(1);

}

/* 1. Создание TCB. */

if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {

perror("He могу получить socket\n");

exit(1);

}

/* 2. Заполнить поля адреса и порта сервера в servAddr.

* Сначала заполнить нулями адресную структуру. Затем получить IP-адрес

* для данного имени хоста и ввести его в адресную структуру.

* Наконец ввести номер порта, взяв его из argv[2]. */

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)»

Представляем Вашему вниманию похожие книги на «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)»

Обсуждение, отзывы о книге «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x