发布网友 发布时间:2024-08-11 22:01
共1个回答
热心网友 时间:2024-08-13 02:16
在TCP/IP协议中,TCP协议为了提供可靠的连接服务,设计了一套三次握手的连接建立机制。首先,客户端发起第一次握手,发送一个带有SYN标志的包(syn=j),同步序列编号,此时客户端进入SYN_SENT状态,等待服务器的回应;
接着,进入第二次握手。服务器接收到客户端的SYN包后,确认客户的SYN,并发送一个带有SYN和ACK标志的包(syn=k,ack=j+1),即SYN+ACK包,服务器进入SYN_RECV状态,等待客户端的确认。
最后,第三次握手是确认阶段。客户端接收到服务器的SYN+ACK包后,发送一个ACK确认包(ack=k+1),当这个确认包发送完毕,客户端和服务器就进入了ESTABLISHED状态,完成了三次握手的过程。
在三次握手过程中,服务器会维护一个未连接队列,为每个接收到的SYN包保留一个条目,表示连接请求已接收。当服务器收到客户端的确认后,会从队列中移除该条目,进入ESTABLISHED状态。此外,Backlog参数定义了未连接队列的最大容量,当超过这个值时,系统会进行相应的处理。
如果服务器发送的SYN+ACK包没有得到客户端的确认,会进行重传。首次重传后,如果仍无回应,服务器会等待一段时间再进行第二次重传。如果重传次数超过系统设定的最大值,该连接将被从半连接队列中删除。半连接的存活时间,即从接收到SYN包到确认失效的最长时间,也称为Timeout时间或SYN_RECV存活时间。
三次握手(three times handshake;three-way handshaking)所谓的“三次握手”即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。