GameNetworkingSockets is a basic transport layer for games. The features are:

- Connection-oriented API (like TCP)

- ... but message-oriented (like UDP), not stream-oriented.

- Supports both reliable and unreliable message types

- Messages can be larger than underlying MTU. The protocol performs
  fragmentation, reassembly, and retransmission for reliable messages.

- A reliability layer significantly more sophisticated than a basic
  TCP-style sliding window. It is based on the "ack vector" model
  from DCCP (RFC 4340, section 11.4) and Google QUIC and discussed
  in the context of games by Glenn Fiedler. The basic idea is for the
  receiver to efficiently communicate to the sender the status of
  every packet number (whether or not a packet was received with that
  number). By remembering which segments were sent in each packet,
  the sender can deduce which segments need to be retransmitted.

- Encryption. AES-GCM-256 per packet, Curve25519 for key exchange
  and cert signatures. The details for shared key derivation and
  per-packet IV are based on the design used by Google's QUIC
  protocol.  Tools for simulating packet latency/loss, and detailed
  stats measurement IPv6 support Peer-to-peer networking:

WWW: https://github.com/ValveSoftware/GameNetworkingSockets
