Читать
тут и
тут.
По поводу удаленных машин:
Определение открытых портов и открывших их сервисов возможно с помощью так называемых "отпечатков", т.е. ответов (приглашений) с этих портов при подключении.
Есть утилита которая этим занимается, называется
nmap. Распространяется в исходниках. Написана на С и полноценно работает только под Linux.
Вы конкретнее можете указать для чего вам это нужно? Может быть и будут более конкретные ответы.
З.Ы. На сколько я знаю, сканер сети используется в основном для взлома, поэтому ваша тема может противоречить правилам форума.