The whole reason for pings is to see if a computer (which youre connected to) is still responding. But I thought that the TCP protocol guarantees delivery or an error is thrown?

What causes these ghost connections - where the winsock state will show connected.. but its not really connected?