| Simple, High speed, low-functionally “wrapper” that interfaces applications to the network layer and does little else. |
Full-featured protocol that allows applications to send data reliably without worrying about network layer issues. |
| Connectionless, data is sent without setup. |
Connection-oriented, connection must be established prior to transmission. |
| Message-based, Data is sent in discrete packages by the application |
Stream-based, Data is sent by the application with no particular structure. |
| Unreliable, best effort delivery without acknowledgments. |
Reliable delivery of messages, all data is acknowledged. |
| Not performed. Application must detect lost data and retransmit if needed. |
Delivery of all data is managed and lost data is retransmitted automatically. |
| No features are provided to manage flow of data. |
Flow control using sliding windows, window size adjustment heuristics, congestion avoidance algorithms. |
| Very low overhead. |
Low overhead but higher than UDP. |
| Very high transmission speed. |
High, but not as high as UDP. |
| Small to moderate amounts of data. |
Small to very large amounts of data. |
| Applications when data delivery speed matters more than completeness, where small amounts of data are sent, or where multicast are used. |
Most protocols and applications sending data that must be received reliably, including most file and message transfer protocol. |
| Multimedia, DNS, BOOTP, DHCP, SNMP etc. |
FTP, TELNET, SMTP, DNS, HTTP, IMAP etc. |