1. 首先,TCP提供客户与服务器之间的连接。TCP客户先与某个给定服务器建立一个连接,然后通过该连接与服务器交换数据,最后终止该连接。
2. 其次,TCP提供了可靠性。超时重传。当TCP向另一端发送数据时,要求对端返回一个确认ACK。如果没有收到确认,TCP就自动重传数据并等待更长时间。在数次重传失败后,TCP才放弃,如此在尝试发送数据上所花的时间一般为4~10分钟(依赖于具体实现)。注意:TCP并不能保证对端一定能接收到数据,因为这是不可能做到的。如果有可能,TCP就把数据递送给对端,否则就(通过放弃重传并中断连接这一手段)通知用户。这样来看,TCP也不能看作是100%可靠的协议,它的可靠性体现在数据的可靠递送和故障的可靠通知。
3.TCP通过给其中每个分节关联一个序列号对所发送数据进行排序。如果这些分节非顺序到达,接收端TCP将先根据它们的序列号进行重新排序,再把结果数据传递给接收应用。
4.TCP提供流量控制。TCP总是告知对端在任何时刻它一次能从对端接收多少字节的数据,即通知窗口。确保不会发生缓冲区溢出。
5.TCP提供RTT估算。在第二点里面的重传时间也会用到RTT估算的时间。RTT估算时间 = SYN_RECV - ESTABLISHED(服务端)
6.TCP连接是全双工的,两边可以相互通信。
对比TCP的优点,UDP的缺点有哪些:
对比TCP的功能,UDP不提供可靠性。UDP本身不提供确认、序列号、RTT估算、超时和重传等机制。UDP不提供流量控制。