Я написал тестовую программу для захвата пакетов для данного имени домена. Я использовал gethostbyname() для извлечения ip-адреса и pcap для захвата пакетов, предназначенных для этого IP-адреса. Счетчик pcap_loop() был установлен в -1, поэтому он должен продолжать захватывать.IP-адрес, полученный gethostbyname(), отличается от браузера, связанного с
Теоретически, все пакеты, отправляемые с моего компьютера на этот IP-адрес, будут захвачены независимо от того, посещено ли это доменное имя веб-браузером или просто пингом, верно?
После тестирования, хотя это верно для многих сайтов, оно неприменимо для сайтов с высоким трафиком, таких как google или ebay. Значение, если я ping ip-адрес, полученный из gethostbyname(), пакеты ping будут захвачены программой, но если я нахожу google.com в firefox, пакеты не будут захвачены. Это показывает, что может быть другой IP-адрес для того же имени домена, что и google.com.
Если это так, почему DNS-сервер возвращает разные ips для google.com, а другие идентичны? И каковы разные, если они есть, между запросами от gethostbyname() и те из браузера?
Заранее спасибо.
Записываете ли вы трафик на ** все ** IP-адресов, возвращаемых 'gethostbyname()' или только первый? – Celada
Разве это не означает, что gethostbyname() возвращает только один IP-адрес в struct hostent? – AuA
Нет, он возвращает массив из них. Кстати, вы должны использовать 'getaddrinfo()' вместо 'gethosybyname()'. 'gethostbyname()' устарел и устарел. – Celada