Content deleted Content added
Gardar Rurak (talk | contribs) Disambig link using AWB |
Như Gây Mê (talk | contribs) m Undid edits by 87.251.25.103 (talk) to last version by AnnaBSP |
||
(143 intermediate revisions by 98 users not shown) | |||
Line 1:
{{Short description|Writing computer programs with networking capability}}
{{one source|date=June 2013}}
{{For|similar terms referring to the hardware technologies committed to computer network programming |Computer network}}
'''Computer network programming''' involves writing [[computer programs]] that enable [[process (computing)|processes]] to communicate with each other across a [[computer network]].<ref>{{cite book| url=http://people.scs.carleton.ca/~lanthier/teaching/COMP1406/Notes/COMP1406_Ch12_NetworkProgramming.pdf | archive-url=https://web.archive.org/web/20200305163115/http://people.scs.carleton.ca/~lanthier/teaching/COMP1406/Notes/COMP1406_Ch12_NetworkProgramming.pdf | url-status=dead | archive-date=2020-03-05 | chapter=Chapter 12 - Network Programming | date=2017 | quote=Network Programming involves writing programs that communicate with other programs across a computer network. | title=COMP1406 }}</ref>
== Connection-oriented and connectionless communications ==
Very generally, most of communications can be divided into [[Connection-oriented_communication|connection-oriented]], and [[Connectionless_communication|connectionless]]. Whether a communication is connection-oriented or connectionless, is defined by the [[Communications_protocol|communication protocol]], and not by {{nowr|[[application programming interface]] (API)}}. Examples of the connection-oriented protocols include {{nowr|[[Transmission Control Protocol]] (TCP)}} and {{nowr|[[Sequenced Packet Exchange]] (SPX)}}, and examples of connectionless protocols include {{nowr|[[User Datagram Protocol]] (UDP)}}, "raw IP", and {{nowr|[[Internetwork Packet Exchange]] (IPX)}}.
== Clients and servers ==
{{main|client–server model}}
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_(computing)|server]]". Another party is the one which initiates connection; this party is usually referred to as "[[Client_(computing)|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 [[Network_packet|packet]] to "server".
== Popular protocols and APIs ==
Network programming traditionally covers different layers of [[OSI_model|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.
{| class="wikitable"
! OSI/ISO Layer
! Protocol
! API
|-
| L3 (network)
| [[Internet Protocol|IP]]
| [[Raw socket]]
|-
| L4 (transport)
| [[Transmission Control Protocol|TCP]], [[User Datagram Protocol|UDP]], [[Stream Control Transmission Protocol |SCTP]]
| [[Berkeley Sockets]]
|-
| L5 (session)
| [[Transport Layer Security|TLS]]
| [[OpenSSL]]
|-
| L7 (application)
| [[HTTP]]
| Various
|}
== See also ==
* [[Software-defined networking]]
*[[Infrastructure as code]]
* [[Site reliability engineering]]
* [[DevOps]]
== References ==
* W. Richard Stevens: '''[[UNIX Network Programming]]''', Volume 1, Second Edition: Networking APIs: Sockets and XTI, Prentice Hall, 1998, {{ISBN|0-13-490012-X}}
{{
[[Category:Computer networks engineering]]
[[Category:Computer programming]]
[[Category:Inter-process communication]]
|