Тайм-ауты и повторные передачи TCP

         

Удаленный конец вышел из строя



Удаленный конец вышел из строя

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

  • Установим соединение между клиентом (программа sock на хосте bsdi) и стандартным эхо сервером на хосте svr4. Клиент включает опцию "оставайся в живых" с помощью опции -K.
  • Убедимся, что данные могут проходить по соединению.
  • Посмотрим, что TCP модуль клиента отправляет пакеты "оставайся в живых" каждые 2 часа, и увидим, что они подтверждаются TCP модулем сервера.
  • Отсоединим Ethernet кабель от сервера и оставим его отсоединенным до тех пор, пока пример не будет завершен. Это заставит клиента думать, что хост сервера вышел из строя.
  • Мы ожидаем, что клиент отправит 10 проб "оставайся в живых" с интервалом в 75 секунд, перед тем как решит, что соединение умерло.

Здесь приводится интерактивный вывод клиента:


bsdi % sock -K svr4 echo опция -K для включения "оставайся в живых"
hello, world убедимся, что соединение работает
hello, world отражение эхом
отсоединяем Ethernet кабель после 4 часов
read error: Connection timed out это произошло примерно через 6 часов 10 минут после начала эксперимента

На рисунке 23.1 показан вывод tcpdump. (Мы удалили все посвященное установлению соединения и объявлению окна.)


1 0.0 bsdi.1055 > svr4.echo: P 1:14(13)ack 1
2 0.006105 ( 0.0061) svr4.echo > bsdi.1055: P 1:14(13)ack14
3 0.093140 ( 0.0870) bsdi.1055 > svr4.echo: . ack 14

4 7199.972793 (7199.8797) arp who-has svr4 tell bsdi
5 7199.974878 ( 0.0021) arp reply svr4 is-at 0:0:c0:c2:9b:26
6 7199.975741 ( 0.0009) bsdi.1055 > svr4.echo: . ack 14
7 7199.979843 ( 0.0041) svr4.echo > bsdi.1055: . ack 14

8 14400.134330 (7200.1545) arp who-has svr4 tell bsdi
9 14400.136452 ( 0.0021) arp reply svr4 is-at 0:0:c0:c2:9b:26
10 14400.137391 ( 0.0009) bsdi.1055 > svr4.echo: . ack 14
11 14400.141408 ( 0.0040) svr4.echo > bsdi.1055: . ack 14

12 21600.318309 (7200.1769) arp who-has svr4 tell bsdi
13 21675.320373 ( 75.0021) arp who-has svr4 tell bsdi
14 21750.322407 ( 75.0020) arp who-has svr4 tell bsdi
15 21825.324460 ( 75.0021) arp who-has svr4 tell bsdi
16 21900.436749 ( 75.1123) arp who-has svr4 tell bsdi
17 21975.438787 ( 75.0020) arp who-has svr4 tell bsdi
18 22050.440842 ( 75.0021) arp who-has svr4 tell bsdi
19 22125.432883 ( 74.9920) arp who-has svr4 tell bsdi
20 22200.434697 ( 75.0018) arp who-has svr4 tell bsdi
21 22275.436788 ( 75.0021) arp who-has svr4 tell bsdi



Содержание раздела