TCP传输控制协议
TCP是一个面向连接的协议,为用户进程提供可靠的全双工字节流。TCP套接字是一种流套接字,TCP关心确认、超时和重传之类的细节。
首先,TCP提供客户与服务器之间的连接。TCP客户先与某个给定服务器建立一个连接,再跨该连接与那个服务器交换数据,然后终止这个连接。
可靠性
其实TCP还提供了可靠性。当TCP向另一端发送数据时,他要求对端返回一个确认,如果没有收到确认,TCP就自动重传数据并等待更长时间。在数次重传失败后,TCP才放弃,如此在尝试发送数据上所花的总时间一般为4-10分钟。
动态估算时间
TCP含有用于动态估算客户和服务器之间的往返时间——round-trip time,即RTT的算法,以便知道等待一个确认需要多少时间,举例来说,RTT在一个局域网上大概是几毫秒,跨越一个广域网可能需要几秒钟。
排序
TCP通过给其他每个字节关联一个序列号对所发送的数据进行排序。
举例来说:
如果一个应用进程写2048字节到一个TCP套接字,导致TCP发送2个分节:第一个分节所含数据的序列号为1~1024,第二个分节所含数据的序列号为1025~2048。
那么假如这两个分节非顺序到达,即第二个分节先到达,那么接收端TCP将先根据它们的序列号重新排序,再把结果数据传递给接受应用。
如果接收端TCP接收到来自对端的重复数据,他可以根据序列号判断数据是重复的,从而丢弃重复数据。