DNS-запрос на клиентской ОС сериализуется? - PullRequest
2 голосов
/ 10 декабря 2010

Даже если вы выдаете несколько параллельных асинхронных запросов DNS-разрешения (программно) в Linux или Windows, сериализует ли ОС запросы и не отправляет их все параллельно?

Когда я читаю в местах, где API gethostbyname или DnsResolve сериализуются на нижнем уровне, даже кто-то написал эту библиотеку Python async-dns, чтобы значительно ускорить разрешение DNS

http://www.catonmat.net/blog/asynchronous-dns-resolution

Так есть ли какой-либо .NET API или вообще где он может работать параллельно по количеству запросов, выданных моей программой?

Представьте себе сценарий веб-сканирования, когда мне потребуется много запросов DNS в секунду, в некоторых ранних публикациях по веб-сканированию упоминается, что DNS становится узким местом.

1 Ответ

1 голос
/ 11 декабря 2010

В Linux gethostbyname() будет эффективно сериализован, не в последнюю очередь потому, что он фактически не возвращается к вызывающей стороне, пока не получит ответ.Однако это зависит только от реализации библиотеки, это не O / S, которая делает это.

Есть множество других библиотек, которые могут заменить gethostbyname, которые выполняют полностью асинхронное разрешение, позволяя нескольким запросам находиться впрогресс сразу.Особенно хороша такая библиотека libunbound, которая является частью рекурсивного дистрибутива DNS-сервера Unbound .

...