Предлагаю вначале забыть про программирование, C# и .NET и просто описать словами желаемое.
Минимальное - получив от DHCP адрес и маску - можно получить предположительный размер сети - возможные адреса.
К примеру DHCP выдал
IP 192.168.199.48
MASK 255.255.255.0
GW 192.168.199.1
тем самым можно предположить что речь идет о сети 192.168.199.0/24 с адресами от 192.168.199.1 до 192.168.199.254
НО: какой именно диапазон из этих адресов DHCP выдает - вопрос к его настройкам. Возможно его пул от 192.168.199.47 до 192.168.199.49 а возможно и 192.168.199.2 до 192.168.199.254
DNS - ну теоретически конечно клиенты могут регистрироваться в локальном DNS, а могут и нет....
p/s/ можно конечно попинав DHCP (на его уровне) перебирая адреса получить ответы типа "адрес занят", "адрес недопустим", "адрес выдан" и косвенно сделать выводы, что:
- такие-то адреса DHCP не выдает
- такие-то мы заняли (за это могут побить подсвечником)
- такие-то адреса были арендованы и возможно сейчас хост подключен, а может быть уже выключен...