Протокол TCP / IP и топология сети - PullRequest
1 голос
/ 03 августа 2010

Я новичок в сетевых аспектах. У меня есть несколько основных вопросов, связанных с протоколом TCP / IP и сетью

  1. Если сетевой коммутатор (в сети LAN) между двумя компьютерами, на которых работает Клиент и сервер (которые обмениваются данными через асинхронные сокеты), выключен. Может клиент и сервер будут уведомлены о том, что сокетное соединение больше не активно. Клиент и сервер работают в ОС Win XP и кодируются с использованием C #.

  2. Топология сети играет роль в случае полуоткрытого соединения между сокет-клиентом и сокет-сервером. Например, Будет ли состояние отключения одного или обоих уведомлено другим концом и зависит ли это от топологии сети.

Заранее спасибо.

1 Ответ

2 голосов
/ 03 августа 2010
  1. Сетевой элемент, такой как маршрутизатор / концентратор / коммутатор, не вызывает каких-либо активных действий на уровне TCP, если он выходит из строя.Операционная система может заметить, что физический уровень не работает, и вывести из строя все сокеты, связанные с этой сетевой картой, если это сетевой элемент, напрямую связанный с ПК, который выходит из строя - это будет зависеть от операционных систем / сетевых карт и других вещей.Кроме того, чтобы обнаружить, что соединение разорвано, вам нужно будет что-то отправить и полагаться на механизмы тайм-аута TCP для вывода ошибки.Это можно сделать неявным образом, включив TCP Keepalive в соединении.

  2. Отключение с одной стороны будет замечено только в том случае, если эти сообщения достигают другой стороны, если топология сети изменяется или что-то прерывается в середине соединения таким образом, что сообщений нет.дольше достигать другого конца, разъединение не будет замечено.( NAT шлюзы являются серьезным источником таких проблем, как они, они могут истечь время ожидания отслеживаемого соединения TCP, и вы никогда не узнаете, что соединение больше не является действительным, если вы не попытаетесь что-то написать (иливключить TCP keepalive) для подключения).Обратите внимание, что большинство сетевых API требуют, чтобы вы читали из соединения с обнаружителем, что другой конец закрыл соединение - при условии, что эти «закрытые» сообщения действительно достигают вашей стороны.

...