A socket is essentially a “door” between an application process and end-to-end transport protocol:
2 socket types for 2 transport services:
UDP - unreliable datagram
TCP - connection-oriented, reliable, byte-oriented
client must contact server → server process must be running and have created socket that welcomes client contact
client creates TCP socket and specifies IP address + port number of server process
client TCP establishes connection to server TCP
server TCP creates new socket for server process to communicate with particular client
see sample code in slides