• uni-directional - data can only be sent in 1 direction
  • bi-directional - data can be sent in both directions
    • half-duplex - data can be sent in both directions, but not at the same time
    • full-duplex - data can be sent in both directions at the same time
  • unsolicited - data can be sent to the receiver, without the receiver’s previous request (WebSockets, port forwarding, etc)