Rigorous specification and conformance testing techniques for network protocols, as applied to TCP, UDP, and sockets