Sockets are a protocol independent method of creating a
connection between processes. Sockets can be either
I connection based or connectionless: Is a connection
established before communication or does each packet
describe the destination?
I packet based or streams based: Are there message boundaries
or is it one stream?
I reliable or unreliable. Can messages be lost, duplicated,
reordered, or corrupted?