Инструмент измерения производительности сети в C#
Я собираюсь разработать инструмент измерения сети. Цель состоит в том, чтобы создать инструмент, который может измерять время отклика между клиентом и сервером (на стороне клиента). Это боковое приложение к основному приложению. Если основное приложение обнаруживает, что время отклика сервера превышает определенный порог, инструмент запускается и выполняет тесты сетевого подключения для определения стабильности соединения клиент-сервер. (это может быть нестабильно из-за беспроводной сети и т. д.)
Тесты, которые мне нужно выполнить, - это не только операции ping, но и передача пакетов разного размера.
У меня, однако, очень мало опыта в области коммуникационных технологий.
Протокол ICMP - это путь? и если да, можно ли отправлять пакеты разных размеров (чтобы определить, может ли сеть передавать, например, 2 МБ данных за разумное время)?
У меня есть вторая проблема. На что мне обратить внимание в отношении брандмауэров? Было бы стыдно разрабатывать приложение, которое отлично работает в моей локальной сети, но как только оно используется в реальной жизни, оно ошибочно проваливается, потому что тесты блокируются брандмауэром.
Я надеюсь, что мои вопросы не слишком дурацкие, но знайте, что любая помощь очень ценится.
Всего наилучшего
/Sagi
1 ответ
Чтобы избежать брандмауэров, вы должны выполнить тестирование, используя тот же протокол и порт, который вы используете, и создать внутри своего приложения сообщение нового типа, на которое нужно ответить, как только оно будет прочитано сервером: вы должны запрограммировать свой пинг меры.
Затем клиент будет измерять время, проведенное в путешествии, вычислять ваш пинг и ретранслировать его обратно на ваш сервер. Это также дает лучшее чтение, когда некоторые интернет-провайдеры предоставляют пакетам протокола ICMP огромное преимущество перед другими пакетами на своем сервере QoS, искусственно создавая (фальсифицируя) меньшую задержку. Кроме того, вам не придется беспокоиться о том, что брандмауэр не разрешает ваши ICMP-пакеты, потому что вам нужно разрешить подключаться к используемому вами стандартному порту.
Кроме того, большинство игр работают таким образом (Half-Life, Age Of Empires и т. Д.), А не путем отправки стандартных пакетов Ping.