April 05, 2020
This week’s assignment was to research a communications protocol so I picked network sockets and the Internet Protocol (IP) implementation of a socket. As a former full-stack software engineering, network sockets and IP were something I always took for granted—an abstraction that I didn’t have to consider in my day-to-day work—so this was an opportunity to add to my foundational knowledge and get closer to the metal.
Some of the resources I found useful in doing this research include:
The Crash Course content, though primarily targeted for a school-kid demographic, I found especially useful because it broke down the concepts and used accessible language and examples. Many of the images used in this blog post are pulled from their videos.
A network socket allows two computers to communicate with each other and invokes the imagery of electrical sockets in the physical world that make electrical connections. The Internet Protocol (IP) is an implementation of a network socket and its socket is comprised of an IP address and port so that computers in a network who to communicate to. The IP address points to a device while the port identifies an application or service, the Understanding Socket Connections in Computer Networking article uses a nice metaphor for the IP address and port an IP socket:
the IP address is like the area code, which identifies the general area that the phone call should be routed to. The port is like the rest of the phone number, which will route the call to the specific phone number being requested
Two common IP protocols are User Datagram Protocol (UDP) and Transmission Control Protocol (TCP). Both UDP and TCP allow the data being sent in an IP network to be broken down into packets which are faster and more efficient to send over a network than keeping it as one large data payload. UDP includes checksums in its data packets that help ensure the integrity of the data being received. Gaming and chat commonly use UDP socket connections because speed is valued more than ensuring every data packet is received in the correct order.
TCP on the otherhand requires acknowledgments to be returned when data packets are received and ensure the packets be arranged in the correct order for consumption. While TCP requires more communication messages to be passed between communicating computers, the reliability and error-checking of TCP makes ituseful for most internet communication such as web browsing and emailing.
Multiple packets can be sent and acknowledged in TCP
Message switching allows the data packets to take different routes on a connected network to get to a destination, TCP will reorder the data packets correctly
Network socket terminology can be traced back to research the for Advanced Research Projects Agency Network (ARPANET) in the 1970’s, an early predecessor to the internet and a project of Defense Advanced Research Projects Agency (DARPA) in the United States.
It was made so that computers could communicate with each other over a shared network and challenge the previous mode of data communications used by telecommunications—circuit switching—in which once a connection route was established that route became unavailable for other use.
That packet switching, a core feature of TCP IP network communications, was partly invented to because its decentralized nature allowed for continued use in the event of a nuclear war.
A perpetual work in progress blog documentating my NYU ITP projects. Words are my own.