Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
- Название:TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
- Автор:
- Жанр:
- Издательство:Лори
- Год:2000
- Город:Москва
- ISBN:5-85582-072-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Сидни Фейт - 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) - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
В TCB используется множество параметров. Перечисленные ниже параметры предоставляют информацию, необходимую для создания сеанса TCP:
■ Локальный IP-адрес
■ Локальный порт
■ Протокол (например, TCP или UDP)
■ Удаленный IP-адрес
■ Удаленный порт
■ Размер выходного буфера
■ Размер приемного буфера
■ Текущее состояние TCP
■ Усредненное время цикла пересылка-получение
■ Отклонение от усредненного времени цикла пересылка-получение
■ Текущее время тайм-аута повторной пересылки
■ Количество выполняемых повторных пересылок
■ Текущий размер окна отправки
■ Максимальный размер отправляемого сегмента
■ Порядковый номер последнего подтвержденного по ACK байта
■ Максимальный размер получаемого сегмента
■ Порядковый номер следующего отправляемого байта
■ Разрешение/запрещение отслеживания
21.5 Программирование работы TCP socket
Рассмотрим вызовы из программ к socket, используемые при взаимодействии с TCP. Для упрощения не будем указывать в вызовах параметры ввода/вывода и сконцентрируемся на более важных функциях и их взаимоотношениях. Детали формирования параметров описаны ниже.
21.5.1 Модель сервера TCP
Типичный сценарий для взаимодействия с сервером TCP предполагает наличие главного процесса, который большую часть времени отслеживает запросы от клиентов. Когда клиент соединяется с сервером, сервер обычно создает новый дочерний процесс, который будет реально выполнять всю работу для клиента. Сервер передает клиента этому дочернему процессу и снова возвращается к отслеживанию запросов от других клиентов.
Иногда клиенты появляются быстрее, чем их может обслужить главный процесс. Как поступить в этом случае? Стандартный механизм заключается в том, что при запуске главного процесса в TCP создается очередь, которая способна хранить несколько запросов на соединение. Запросы клиентов, которые нельзя обслужить сразу, помешаются в очередь и обрабатываются в порядке этой очереди. Предположим, что очередь заполнена до конца и поступает запрос от очередного клиента. В этом случае соединение с новым клиентом не будет создано.
21.5.2 Пассивное открытие сервера TCP
Сервер готовится к принятию запроса на соединение и пассивно ожидает обращения клиентов. При подготовке он выполняет ряд запросов:
socket () | Сервер идентифицирует тип связи (в данном случае TCP). Локальная система создает соответствующую структуру данных TCB для взаимодействия с сервером и возвращает дескриптор socket . |
bind () | Сервер устанавливает локальный IP-адрес и порт, которыми он будет пользоваться. Вспомним, что хост может иметь несколько IP-адресов. Сервер может применять один IP-адрес или указать, что желает принимать соединения от любого локального IP-адреса. Он может запросить определенный порт или разрешить связывание запроса с одним из доступных свободных портов. |
listen () | Сервер устанавливает длину очереди для клиентов. |
accept () | Сервер готов принимать соединения от клиентов. Если очередь не пуста, принимается первый полученный клиентский запрос. Запрос accept () создает новый TCB , который будет использоваться для соединения этого клиента и возвращать новый дескриптор соединения серверу. |
Обычно применяется синхронная форма приема запросов, чтобы при пустой очереди accept () ожидал появления следующего клиента до ответа на полученный запрос.
21.5.3 Активное открытие клиента TCP
Открытый клиент активно запрашивает соединение через два запроса:
socket () | Клиент идентифицирует тип связи (в данном случае TCP). Локальная система создает соответствующую структуру данных TCB для соединения и возвращает локальный дескриптор socket. |
connect () | Клиент указывает IP-адрес и порт сервера. TCP попытается установить соединение с сервером. |
Если клиент желает явно определить применяемый далее локальный порт, он должен вызвать bind () перед выдачей запроса connect (). Если порт доступен, он присваивается клиенту.
Если клиент запросил порт не через bind (), ему присваивается один из неиспользованных портов. Номер порта вводится в TCB.
21.5.4 Другие запросы
Оставшиеся запросы используются клиентом и сервером аналогичным способом. Данные могут быть переданы и получены через обычные запросы записи и чтения. Соединение может быть закрыто по запросу close . Существуют также специальные запросы send и recv, поддерживающие отправку и получение как срочных, так и обычных данных:
send( ) | Запись буфера данных в socket. Как альтернативу можно применить write (). |
sendv () | Пересылка в socket последовательности буферов. Как альтернативу можно применить writev (). |
recu() | Получение буфера данных из socket либо из read (). |
recvmsg () | Получение последовательности буферов из socket либо из readv (). |
Иногда программе нужна информация, хранящаяся в TCB:
getsockopt () | Чтение выбранной информации из TCB. Иногда система обеспечивает необязательные системные запросы ввода/вывода, которые позволяют читать различные части TCB. |
Проверка входных параметров запросов на открытие, отправку или получение показывает, что этих параметров очень мало. Причина в том, что обычно для большинства параметров TCB используются значения по умолчанию, содержащие важную информацию об окружении, например о размере приемного буфера, разрешении регистрации событий либо об использовании блокированной или неблокированной обработки в запросах, подобных recv. Некоторые значения по умолчанию можно изменить с помощью функций:
setsockopt () | Устанавливает значения нескольких параметров TCB, например размеры приемного и выходного буферов, пересылку срочных данных в общем порядке оправки информации либо блокировку закрытия соединения до благополучной отправки всех данных. |
iocntl () | Устанавливает ввод/вывод в socket в режим блокирования |
или fcntl () | или снимает блокирование. |
На рис. 21.2 демонстрируется последовательность вызовов в типичном сеансе TCP. Вызовы socket (), bind () и listen () обрабатываются очень быстро, и на них немедленно возвращается ответ.

Рис. 21.2.Последовательность программных вызовов в socket TCP
Вызовы accept (), send () и recv () предполагаются в режиме блокирования (что является их обычным значением по умолчанию). Вызов send блокируется и при переполнении выходного буфера TCP. Вызовы write () и read () можно использовать вместо send () и recv ().
Читать дальшеИнтервал:
Закладка: