Это немного сложно по нескольким причинам. Прежде всего, количество прыжков может быть не одинаковым в каждом направлении. Не обращая на это внимания, вы можете посмотреть на поле TTL полученных IP-пакетов. Это уровень ниже, чем UDP, поэтому я не совсем уверен, как получить к нему доступ через обычные интерфейсы сокетов. Но если вы можете получить это значение, вы можете сравнить его с тем, что обычно отправляет клиент / сервер (обычно 64 или 255), и определить количество пройденных прыжков.
Для географической информации существует ряд баз геоданных, доступных онлайн, но обычно коммерчески. Точность данных также может отличаться.