5.14. Сбой на узле сервера

5.14. Сбой на узле сервера

В следующем примере мы проследим за тем, что происходит в случае сбоя на узле сервера. Чтобы мы могли имитировать эту ситуацию, клиент и сервер должны работать на разных узлах. Мы запускаем сервер, запускаем клиент, вводим строку на стороне клиента для проверки работоспособности соединения, отсоединяем узел сервера от сети и вводим еще одну строку на стороне клиента. Этот сценарий охватывает также ситуацию, в которой узел сервера становится недоступен во время отправки данных клиентом (например, после того как соединение установлено, выключается некий промежуточный маршрутизатор).

События развиваются следующим образом:

1. Когда происходит сбой на узле сервера, по существующим сетевым соединениям от сервера не отправляется никакой информации. Мы считаем, что на узле происходит именно сбой, а не завершение работы компьютера оператором (что мы рассмотрим в разделе 5.16).

2. Мы вводим строку на стороне клиента, она записывается с помощью функции writen (см. листинг 5.3) и отправляется протоколом TCP клиента как сегмент данных. Затем клиент блокируется в вызове функции readline в ожидании отраженного ответа.

3. Если мы понаблюдаем за сетью с помощью программы tcpdump, то увидим, что TCP клиента последовательно осуществляет повторные передачи сегмента данных, пытаясь получить сегмент ACK от сервера. В разделе 25.11 [128] показан типичный образец повторных передач TCP: реализации, происходящие от Беркли, делают попытки передачи сегмента данных 12 раз, ожидая около 9 мин перед прекращением попыток. Когда TCP клиента наконец прекращает попытки ретрансляции (считая, что узел сервера за это время не перезагружался или что он все еще недоступен, если на узле сервера сбоя не было, но он был недоступен по сети), клиентскому процессу возвращается ошибка. Поскольку клиент блокирован в вызове функции readline, она и возвращает эту ошибку. Если на узле сервера произошел сбой, и на все сегменты данных клиента не было ответа, будет возвращена ошибка ETIMEDOUT. Но если некий промежуточный маршрутизатор определил, что узел сервера был недоступен, и ответил сообщением ICMP о недоступности получателя, клиент получит либо ошибку EHOSTUNREACH, либо ошибку ENETUNREACH.

Хотя наш клиент в конце концов обнаруживает, что собеседник выключен или недоступен, бывает, что нужно определить это раньше, чем пройдут условленные девять минут. В таком случае следует поместить тайм-аут в вызов функции readline, о чем рассказывается в разделе 14.2.

В описанном сценарии сбой на узле сервера можно обнаружить, только послав данные на этот узел. Если мы хотим обнаружить сбой на узле сервера, не посылая данные, требуется другая технология. Мы рассмотрим параметр сокета SO_KEEPALIVE в разделе 7.5.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Сбой в работе приложений

Из книги Windows Vista без напряга автора Жвалевский Андрей Валентинович

Сбой в работе приложений Вообще-то современные программы стараются работать надежно, но… Они слишком сложны для этого. А чем сложнее система, тем выше вероятность сбоя – это вам любой кибернетик скажет. Поэтому время от времени приложение «вылетает» (внезапно


Сбой в работе приложений

Из книги Windows Vista автора Вавилов Сергей

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


Ошибка 0x00000023: сбой драйвера FAT

Из книги Очень хороший самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере и увеличить его возможности автора Колисниченко Денис Николаевич

Ошибка 0x00000023: сбой драйвера FAT Причина ошибки – проблема в драйвере файловой системы FAT. Чаще всего ошибка вызывается ошибкой чтения/записи данных. Нужно проверить жесткий диск на предмет «битых»


Ошибка 0x00000024: сбой драйвера NTFS

Из книги Microsoft Windows SharePoint Services 3.0. Русская версия. Главы 9-16 автора Лондер Ольга

Ошибка 0x00000024: сбой драйвера NTFS То же самое, что и 0x00000023, но причина в драйвере файловой системы NTFS. Иногда номер ошибки позволяет легко локализировать раздел, содержащий ошибку. Например, у вас два раздела – один NTFS, а другой FAT. Если вы получили ошибку 24, значит, вам нужно


Глава 16 Поиск информации на узле SharePoint

Из книги Сетевые средства Linux автора Смит Родерик В.

Глава 16 Поиск информации на узле SharePoint В этой главе вы научитесь:• использовать поисковую систему;• выполнять простой поисковый запрос;• выполнять простой поисковый запрос.Для поиска информации на узлах службы Windows SharePoint доступно два основных метода. Первый:


Настройка сервера NTP

Из книги Мошенничество в Интернете. Методы удаленного выманивания денег, и как не стать жертвой злоумышленников автора Гладкий Алексей Анатольевич

Настройка сервера NTP Из протоколов, обеспечивающих работу временных серверов, наиболее популярен NTP (Network Time Protocol — сетевой протокол времени), который описан в документе RFC 1305 (http://www.ietf.org/rfc/rfc1305.txt). Рассмотрению более старых версий этого протокола посвящены документы RFC 958,


«Сбой» в системе интернет-казино

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

«Сбой» в системе интернет-казино В последние годы на многих досках бесплатных объявлений и прочих рекламно-информационных ресурсах можно встретить объявления вроде этого:Добрый день! Вы наверняка слышали про интернет-казино, а также о том, что в них выиграть практически


23.2. Программный сбой

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

23.2. Программный сбой Прежде всего, нужно выяснить и по возможности устранить причину сбоя. Если это сугубо программный сбой, то причины две: неправильная настройка программы (или системы) и ошибка


23.3. Аппаратный сбой

Из книги Справочник по параметрам BIOS автора Вонг Адриан

23.3. Аппаратный сбой Причиной аппаратного сбоя, как мы знаем, может стать или полный отказ устройства, или частичный отказ одного из его модулей, что свидетельствует о необходимости замены всего устройства. При полном отказе устройства результат виден невооруженным


Тестирование сервера

Из книги Оптимизация BIOS. Полный справочник по всем параметрам BIOS и их настройкам автора Вонг Адриан

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


Сбой в BIOS

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Сбой в BIOS Несмотря на то, что BIOS записана в память ROM (что защищает ее от потери данных при выключении питания), она может повреждаться. Причины сбоев могут быть различными – вирусы, неполные или ошибочные записи, запись неправильной версии BIOS, ошибки в BIOS и так далее.При


Сбой в BIOS

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Сбой в BIOS Несмотря на то, что BIOS записана в память ROM (что защищает ее от потери данных при выключении питания), она может повреждаться. Причины сбоев могут быть различными – вирусы, неполные или ошибочные записи, запись неправильной версии BIOS, ошибки в BIOS и так далее.При


11.4.3. Запуск сервера

Из книги The Intel [Как Роберт Нойс, Гордон Мур и Энди Гроув создали самую влиятельную компанию в мире] автора Мэлоун Майкл

11.4.3. Запуск сервера Для запуска сервера достаточно ввести в командной строке имя server. Если не задать номер порта с помощью опции --port (-p). ОС Linux самостоятельно выберет порт. При указании опции --verbose (-v) сервер покажет, какой порт ему назначен.Если не назначить серверу адрес с


5.15. Сбой и перезагрузка на узле сервера

Из книги автора

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