Simulation of flow, error control and routing protocols of networking using socket programming in Java