The -a switch for PING will use DNS for name resolution first. After that, it goes the WINS route (checking a WINS server). Lastly, if it has not been successful, it will look for a NetBIOS <00> record.
If it can't find anything after all this, it will not report any name.
Now, I take it you are not running your own internal DNS server? Doesn't sound like it.
Are the machines that cannot be resolved Windows machines? If they are, try this. Open a Command Prompt and type in:
nbtstat -A IP_ADDRESS_OF_REMOTE_SYSTEM
If all is well, you will get something like this:
Local Area Connection:
Node IpAddress: [10.1.xxx.xxx] Scope Id: []
NetBIOS Remote Machine Name Table
Name Type Status---------------------------------------------
LAPTOP <00> UNIQUE Registered
WORKGROUP <00> GROUP Registered
LAPTOP <03> UNIQUE Registered
LAPTOP <20> UNIQUE Registered
WORKGROUP <1E> GROUP Registered
JOEY <03> UNIQUE Registered
MAC Address = 00-00-00-00-00-00
This is the NetBIOS table on my laptop that is sitting next to me. The <00> Unique record is the name of my laptop (called, ironically enough, LAPTOP).
(This info is NOT in a DNS server or a WINS server, BTW)
Now, when I do a PING -a against its IP address, I get:
Pinging LAPTOP [10.1.xxx.xxx] with 32 bytes of data:
Reply from 10.1.xxx.xxx: bytes=32 time<10ms TTL=128
Reply from 10.1.xxx.xxx: bytes=32 time<10ms TTL=128
Reply from 10.1.xxx.xxx: bytes=32 time<10ms TTL=128
Reply from 10.1.xxx.xxx: bytes=32 time<10ms TTL=128
Ping statistics for 10.1.xxx.xxx:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms