TCP的特点:
(1)提供面向连接、可靠交付的服务,提供全双工通信。
应用程序在使用之前,必须先建立TCP连接。在传送数据后,必须释放已经建立的TCP连接。
可靠指的是使用确认机制来确保传输数据的不丢失。无差错、不丢失、不重复并且按序到达。
TCP允许通信双方的应用进程在任何时候都能发送数据。
(2)每一条TCP连接只能有两个端点。每一条TCP是点对点(一对一)的。
(3)TCP连接两端设有发送缓存和接受缓存,用来临时存放双向通信的数据。
在发送时,应用程序在把数据传送给TCP的缓存后,就可以做自己的事情,TCP在合适的时候把数据发送出去。
在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。
(4)面向字节流
TCP面向流的概念:
流:流入到进程或从进程流出的字节序列
TCP把应用程序交下来的数据看成是一连串的无结构的字节流。
TCP对每一个字节进行编号,TCP会根据当前网络的拥塞程度和对方接受缓存的大小决定现在应当发送多长的报文段。
TCP不保证接受方应用程序收到的数据块和应用程序所发出的数据块具有对应大小的关系
接受方收到字节流必须和发送方应用程序发送字节流完全一样。
TCP的连接:
套接字socket(插口):TCP的端点
端口拼接到IP地址构成了套接字。套接字socket=(IP地址:端口号)
同一个IP地址可以有多个不同的TCP连接,同一个端口号可以出现在多个不同的TCP连接中。
TCP连接就是由协议软件提供的一种抽象。TCP连接的端点是抽象的套接字。