TCP是一种可靠、面向连接、全双工、流控制、拥塞控制、有序传输、无差错传输、无重复传输、无丢失传输等特点的协议。为了实现这些特点,TCP必须对上层应用程序发送的数据进行分段、重组、确认、重传等操作。这些操作使得TCP在传输过程中对用户消息没有明确的边界概念,而只关注字节流中每个字节所处的位置和状态。
面向连接:通信之前需要先建立连接,双方之间进行握手,建立起可靠的传输通道。
可靠性:通过序列号、确认和重传机制,确保数据的按序到达,防止数据的丢失和乱序。
流量控制:通过滑动窗口机制,保证发送方和接收方之间传输数据的速度匹配,防止接收方被过多的数据淹没。
拥塞控制:通过算法调整发送数据的速率,以避免网络拥塞,保证网络资源的有效利用。
提供全双工通信:双方可以同时发送和接收数据,实现双向的通信。
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求(客户端)
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(服务器)
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态
tcp连接全过程各种状态详解
TCP三次握手
TCP三次握手原因、过程、失败以及不采用三次握手的后果
tcp 为什么要三次握手,两次不行吗?为什么?