TCP三次握手:面向连接的 可靠的 字节流服务
握手过程:客户端发送SYN指令(此时客户端处于SYN_SENT状态),服务器接收到请求指令(此时服务器处于SYN_RCVD状态),回复一个SYN,ACK指令,客户端此时就i处于已连接的状态,并且客户端会回复一个ACK的确认指令,服务器收到指令之后,服务器端也会处于已连接的状态。
和三次握手相关的过程:监听过程:int listen(int sockfd,int size);
在内核中:存在正在完成三次握手的队列
和 已经完成三次握手的队列
在监听函数中的size+1 = 已经完成三次握手队列数
为什么要三次握手,不能两次握手?
首次客户端给服务器端发送请求指令的时候,如果网络存在卡顿或者网络不佳的情况,客户端就会存在超时重传的情况,并且经过一段时间之后,这些指令一定会到达服务器端。如果是两次握手,那么服务器端就会给这些指令都分配连接,那就会浪费网络资源,并且不太安全。