5. Каким образом можно протестировать сервер, связывающийся с подмножеством IP-адресов узла?
6. Предположим, ваше приложение работает в частной сети, причем конечные точки находятся в одной локальной сети. Все серверы и клиенты являются многоинтерфейсными узлами. Каким образом следует настроить параметры повторной передачи, чтобы обнаруживать отказ узла не более, чем за 2 с?
Глава 24
Внеполосные данные
24.1. Введение
Ко многим транспортным уровням применима концепция
К сожалению, когда мы переходим от общих концепций к реальной ситуации, почти в каждом транспортном протоколе имеется своя реализация внеполосных данных. В качестве крайнего примера можно привести UDP, где внеполосных данных нет вовсе. В этой главе мы уделим основное внимание модели внеполосных данных TCP. Мы приведем различные примеры обработки внеполосных данных в API сокетов и опишем, каким образом внеполосные данные используются приложениями Telnet, Rlogin и FTP. За пределами очерченного круга удаленных интерактивных приложений найти применение внеполосным данным довольно сложно.
24.2. Внеполосные данные протокола TCP
В протоколе TCP нет настоящих
Рис. 24.1. Буфер отправки сокета, содержащий данные для отправки
Теперь процесс отправляет один байт внеполосных данных, содержащий символ ASCII а
, используя функцию send
с флагом MSG_OOB
:
send(fd, "a", 1, MSG_OOB);
TCP помещает данные в следующую свободную позицию буфера отправки сокета и устанавливает указатель на срочные данные (или просто OOB
.
Рис. 24.2. Буфер отправки сокета, в который добавлен один байт внеполосных данных
Срочный указатель TCP указывает на байт данных, который следует за последним байтом внеполосных данных (то есть данных, снабженных флагом MSG_OOB). В книге [111] на с. 292-296 говорится, что это исторически сложившаяся особенность, которая теперь эмулируется во всех реализациях. Если посылающий и принимающий протоколы TCP одинаково интерпретируют срочный указатель TCP, беспокоиться не о чем.
Если состояние буфера таково, как показано на рис. 24.2, то в заголовке TCP следующего отправленного сегмента будет установлен флаг URG, а поле смещения срочных данных (или просто