Трассировка в протоколе UDP - PullRequest
2 голосов
/ 27 июня 2011

Я использую сетевой протокол UDP для отправки сообщений от различных клиентов на корневой сервер.

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

Я хочу узнать клиентов, через которых отправлено сообщение, просмотрев сообщение, полученное на корневом сервере. Как это сделать?

Ответы [ 2 ]

1 голос
/ 27 июня 2011

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

Программа traceroute использует хитрость для получения отказов пакетов, устанавливая TTL в возрастающее число. Он начинается с TTL, равного 1, поэтому первый отскок поступает от ближайшего сервера к источнику. Затем он пытается TTL 2, чтобы получить отказов от второго сервера на пути, и так далее.

0 голосов
/ 27 июня 2011

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

...