Как обнаружить сетевую задержку между двумя хостами по протоколу DNS? - PullRequest
0 голосов
/ 15 ноября 2009
  H1------------------H2
   \                  /
    \                /
     \              /
      \            /
          x (me)

Предположим, я нахожусь в точке x, и есть две произвольные точки хоста, H1, H2. Я могу получить задержку между H1 и мной с помощью ping, также я могу получить задержку между H2 и мной с помощью ping (потому что есть временная метка), вопрос в том, как получить задержку между H1 и H2, используя протокол DNS?

Ответы [ 3 ]

0 голосов
/ 15 ноября 2009

Во-первых, DNS может абсолютно НЕ предоставить какую-либо подсказку здесь .
Редактировать : [после замечания Грумдрига] ... кромеподсказки, связанные с синхронизацией DNS-сообщений для выполнения туда-обратно на этих серверах.Под первоначальным утверждением я подразумеваю, что нет ничего присущего протоколу DNS, который делает его более подходящим для этой цели, чем, скажем, HTTP, ICMP, FTP или любой другой протокол , который может заставить сервер вернуть какое-то сообщение.

Во-вторых, самый простой способ сделать это - иметь программное обеспечение / доступ, напрямую на H1 или H2, но я предполагаю, что на самом деле вопрос заключается в следующем:

Как мы можем оценить задержку между H1 и H2, без прямого доступа к любому хосту ?

An оценка может быть выполнена с использованием показаний (время и маршруты) между H1 или H2 и несколькими рабочими станциями (не только одной).(а также наличие маршрутов между этими многочисленными рабочими станциями).

Этот процесс будет сродни триангуляции для нахождения расстояний или позиций в простом двумерном или трехмерном евклидовом пространстве, ноконечно, помня, что

  • сетевые маршруты являются динамическими (в отличие от геометрических сегментов)
  • расстояния не такие линейные; -)

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

Например, если H1 является веб-сервером, который использует веб-сервисы, расположенные на H2, для создания определенной веб-страницы.Проводя множественные измерения для таких запросов к H1 и вычитая расстояние / задержку между H1 и нашей рабочей станцией, мы, вероятно, можем оценить расстояние / задержку между H1 и H2.Нам нужно быть осторожными, чтобы

  • предпринять несколько измерений с целью усреднения многих факторов, включая несетевые части этой цепочки (скажем, время, которое требуется веб-серверу для анализа запроса)., обработайте некоторые числа, какие угодно ...)
  • Примите во внимание различные возможности, такие как возможное кэширование и т. д. *
  • Оценка не связанной с сетью части цепочки

Особый случай этого особого случая, если случайно H1 [или H2] находится на самом пути между третьей точкой и H2 [или H1].В этом случае и при условии, что пакеты ICMP, связанные с traceroute, не фильтруются / не останавливаются в пути, простой traceroute ответил бы на вопрос.Эта ситуация, однако, относительно маловероятна ...

0 голосов
/ 15 ноября 2009

Как насчет этого: определите H1 как авторский сервер имен для некоторого домена, затем попросите H2 разрешить этот домен. Затем определите время разрешения (возможно, ответом «я не знаю») и вычтите время пинга до H2.

P.S. Скажи своему другу, что мошенники никогда не процветают.

ИЗМЕНЕНО, чтобы удалить мое утверждение, что это было идиотизмом. Я думаю, что этот вопрос не является бессмысленным в конце концов - помните, что это академическое упражнение. Это может быть не очень практично, но я думаю, что это возможно, и, возможно, благодаря моему решению. (Триангуляция, вероятно, является лучшей идеей в целом, но она требует машин в нужных местах.)

Кроме того, да, я должен был упомянуть, что для этого требуется, чтобы на обеих машинах работали DNS-серверы. Вероятно, нет решения, использующего DNS, которое, однако, не дает. Этот вопрос является второстепенным и, возможно, изначально имел такое условие.

0 голосов
/ 15 ноября 2009

Ее вопрос не имеет смысла.

DNS используется для преобразования имен хостов (например, google.com или sstatic.net) в IP-адреса (например, 64.233.169.104 или 69.59.196.213).

Это не имеет ничего общего с физическим местоположением или сетевым подключением отдельных серверов.

Как правило, невозможно определить скорость соединения между двумя произвольными серверами удаленно. Если вы можете подключиться к одному из серверов и заставить его пинговать другой напрямую, вы сможете получить скорость их соединения таким образом, но в противном случае это невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...