Computer network programming
Writing computer programs with networking capability
Computer network programming involves writing computer programs that enable processes to communicate with each other across a computer network.
01Connection-oriented and connectionless communications
Very generally, most of communications can be divided into connection-oriented, and connectionless. Whether a communication is connection-oriented or connectionless, is defined by the communication protocol, and not by application programming interface (API). Examples of the connection-oriented protocols include Transmission Control Protocol (TCP) and Sequenced Packet Exchange (SPX), and examples of connectionless protocols include User Datagram Protocol (UDP), "raw IP", and Internetwork Packet Exchange (IPX).
02Clients and servers
For connection-oriented communications, communication parties usually have different roles. One party is usually waiting for incoming connections; this party is usually referred to as "server". Another party is the one which initiates connection; this party is usually referred to as "client".
For connectionless communications, one party ("server") is usually waiting for an incoming packet, and another party ("client") is usually understood as the one which sends an unsolicited packet to "server".
03Popular protocols and APIs
Network programming traditionally covers different layers of OSI/ISO model (most of application-level programming belongs to L4 and up). The table below contains some examples of popular protocols belonging to different OSI/ISO layers, and popular APIs for them.
| OSI/ISO Layer | Protocol | API |
|---|---|---|
| L3 (network) | IP | Raw socket |
| L4 (transport) | TCP, UDP, SCTP | Berkeley Sockets |
| L5 (session) | TLS | OpenSSL |
| L7 (application) | HTTP | Various |
Sources and credits
This article is adapted from the Wikipedia article “Computer network programming”, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.
Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.