TCP是什么

TCP连接是什么?
TCP全称为Transport Control Protocol,即传输控制协议。正如其名,它是计算机网络自顶向下第二层—运输层的一种协议,特点集中体现在“控制”二字。如何实现“控制”,而又“控制”什么,是TCP的所有精华所在。
在计算机世界中,通信的双方是各自独立的两个进程。通信之前,需要先为通信双方建立一条通信连接,可以理解为一条专用信道,通信双方的通信内容将通过这条信道来回传送。但是呢,同一时刻,互联网中会有难以计数的进程在运行,而它们之间更是存在着难以计数的通信需求。所以,如何来识别这些进程,以防止通信信道因被多方共享而导致信息传送失误,是一个关键问题。首先,进程运行在不同的计算机上,而互联网中的每台计算机都被分配了一个独一无二的IP地址,以IP地址区分互联网中的每台计算机。其次,一台计算机上可能运行多个进程,虽然每个进程都有独立的进程ID,但是计算机使用另一种更简短的数字序列区分每个进程的通信内容,即端口号。在通信过程中,根据TCP协议的规定,进程的通信内容将被冠以端口号作为标识。如此,当计算机接收到外部传回的消息时,便可根据消息头部的端口号确定此消息该被转发至哪个进程的内存空间中。而接收方在返回消息时,也可根据端口号指定消息的接收方。如此,IP地址和端口号共同标识了在通信中的一个进程及其通信内容。因此,IP地址和端口号组成了TCP套接字的具体内容。值得一提的是,套接字是一个抽象概念,应用层报文通过套接字到达传输层。
然而,需要注意的是,这条信道并不是具体存在的物理信道,而是从逻辑上沟通两个进程的抽象事物,真正使得信息可以流通的是网线、各路网关、路由器和交换机等计算机网络中的核心部件。
互联网中传输的消息是数据,如声音、视频、图片、文本等,在计算机中被统称为数据,即以二进制形式在计算机网络世界中流通并被处理。数据有大小之分,计算机网络在传输过程中,考虑到传输速率和网络带宽之间的限制,为不同类型的网络限定了最大可传输报文长度。通常,通信双方一次的通信消息比该最大可传输报文长度要大得多,TCP协议将根据该最大可传输报文长度对消息进行分包,并为每个消息子包按序分配一个编号。后一个子包的编号为前一个子包编号加上前一个子包的长度,当接收方接收到消息的各个子包后,可以根据序号将消息恢复。但是,同一时刻会有多个进程通信,如果每个通信中的消息子包都以1开始分配编号,那么接收方将接收到很多编号相同的子包,这时的接收方将无法依照编号恢复消息。为了解决这个问题,在分配编号时,TCP协议随机选定一个数字为消息的第一个子包编号,这样便可以避免由编号重复而导致的接收方无法重组消息的问题发生。而且,当接收方收到一个子包时,便给发送方返回一个信号表示自己接收到了发送方刚发送的消息子包。相对于刚才接收到的子包编号,这个信号是接收方期待接收到的下一个子包的编号。TCP协议将这样的确认机制称为ACK。
但是,有时候可能因为网络故障或其他原因,导致ACK包没能到达发送方。发送方便认为接收方可能没有接收到刚才发送的消息,便会重新传送一份一模一样的消息给接收方。同时,TCP协议在每次发送消息时,将启动一个定时器,避免发送方等待ACK的时间过长而影响到通信效率。当定时器结束时,如果发送方还未收到ACK通知,再执行重传。
如果发送方每次都在等到ACK或定时器结束时才发起一次消息传输,将会使得通信链路长时间处在空闲状态,浪费了通信资源。所以,为了充分利用通信资源,计算机网络通常采用流水线式传送方式,即一次传送多个通信消息,TCP协议也遵循这样的传输方式。接收方将接收到的消息暂存在寄主计算机中为其分配的内存空间中,等候接受方逐个查取处理,在处理之前消息将占据内存。然而,内存空间当然有大小限制,如果接收方的处理速度比其接收消息的速度慢,当内存空间无空闲时,新到的消息将因为无可用内存收放而被迫舍弃,导致本次通信失效。对于舍弃的消息子包,发送方当然无法接收到相关的ACK,因此,后期又需要重传。如此,便加重了通信负担。如果发送方能及时知晓接收方的内存空间已满而暂停发送消息,等待接收方有可用内存时再向其发送消息,便可避免大量的无效传输,同时也为其他通信任务提供了更宽松的网络带宽。因此,TCP协议制定了滑动窗口协议实现通信过程中的流量控制。具体地,接收方返给发送方的ACK中包含了接收方可用内存空间的容量指示,该容量指示被称为接收窗口。发送方根据接收方提供的接收窗口大小,根据子包的数据大小计算是否还可以为接收方发送一个子包,如果子包的数据大小小于接收方的接收窗口,则予以发送,否则不予发送。发送方如何得知可以重新开始向接收方发送消息呢?在等待一段时间后,发送方将减小子包大小,再将其发予接收方作为试探。如果接收方中有足够的可用内存空间,则会正常返回一个包含接收窗口大小的ACK,发送方将能够得知接收方的接收能力。如果发送方没有收到对应的ACK,排除丢包情况,则意味着接收方尚无可用内存,发送方将继续等待一段时间后再试探。
在网络中,由于充斥着大量的通信流量,导致经常出现堵塞的情况。发生堵塞时,在堵塞点将聚集多个要通过该点的消息,这些消息排队等候处理。有时候堵塞持续的时间比较长,一方面会导致接收方无法及时收到发送方传递的消息,另一方面发送方也无法及时收到接收方返回的ACK消息。TCP协议的应对方法被称为TCP协议的拥塞控制。
综上所述,TCP的“控制”体现为:面向连接、按序传输机制、确认重传机制、流量控制(滑动窗口协议)和拥塞控制等,而这些优点使得TCP成为可靠传输协议。

你可能感兴趣的:(计算机网络)