Multiplexes many application streams onto one network connection
Gives streams hereditary structure: applications can spawn lightweight streams from existing ones
Efficient: no 3-way handshake on startup or TIME-WAIT on close
Supports request/response transactions without serializing onto one stream
General out-of-band signaling: control requests already in progress
Both reliable and best-effort delivery in a semantically unified model
supports messages/datagrams of any size: no need to limit size of video frames, RPC responses, etc.
Dynamic prioritization of application's streams
e.g., load visible parts of a web page first, change priorities when user scrolls
Optional end-to-end cryptographic security comparable to SSL
Peer-to-peer communication across NATs via hole punching
Implemented as a library that can be linked directly into applications like SSL for easy deployment