tcp协议的一些特点

TCP是一个非常复杂的协议,简单来说它是一个面向连接的、可靠的基于字节流的传输协议。TCP协议的一些主要特点如下:

面向连接:面向连接的意思是在传输数据前需要先建立连接。建立连接要经过三次握手,断开连接需要经过四次挥手。两个主机之间的通信类似于打电话,通话前需要拨号建立连接,通话结束后要挂机释放连接。

一对一通信:TCP协议只能在两个主机之间通信,不能进行一对多或多对多的通信。对于需要进行广播的应用,是不适合使用TCP协议的。

提供可靠传输服务:通过TCP进行传输的数据,不丢失、不重复、没有差错并且能按序到达。这个是TCP最核心的功能,因为我们知道数据链路层以及IP层是尽最大努力的交付,但不是可靠的交付。而TCP通过一些协议,达到了提供可靠交付的功能。

支持全双工通信:TCP连接的两端都设有缓存,允许两个主机之间任何时候都可以发送数据。发送数据的时候,应用程序会把数据先发送给TCP的发送缓存中,然后就可以去做其他事情了。然后,缓存中的数据会逐步按序的发送出去。在接受的时候,TCP将受到的数据存放在接受缓存中,然后就可以继续接受其他数据了,接受缓存里的数据依次等待应用程序的读取。

面向字节流:讲解面向字节流前,先说说UDP是面向报文的。面向报文的意思是,应用程序发给UDP多个数据,它就将受到的数据放在一个UDP中,而不去管数据的大小。UDP在将数据传送给应用进程时,也是将整个数据包发送。那么TCP的面向字节流和UDP肯定是不同的,“流”是说流入应用进程或流出应用进程。当应用进程将一块数据发送给TCP时,TCP是将它看成是一连串的无结构的字节流。然后,在发送的时候,可能会通过一个或好多个TCP报文段来传输这些字节流。