动画讲解TCP,再不懂请来打我
初始状态:客户端处于closed 状态,服务器处于listen(监听) 状态。 第一次握手:客户端发送请求报文将SYN = j(1)初始化序列号发送给客户端,发送完之后客户端处于SYN_Send状态。 第二次握手:服务端受到 SYN 请求报文之后,如果同意连接,会以自己的SYN(服务端) = K(0)和ack(1) = SYN(客户端) + 1(ACK = 1)报文作为应答,服务器为SYN_Receive状态。 第三次握手:客户端接收到服务端的SYN + ACK,然后发送ack = SYN(服务端) + 1(ACK = 1)确认包作为应答,客户端转为established状态。 为什么不是一次、两次握手? 防止了服务器端的一直等待而浪费资源。 为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。如果此时客户端发送的延迟的握手信息服务器收到,然后服务器进行响应,认为客户端要和它建立连接,此时客户端并没有这个意思,但 server 却以为新的运输连接已经建立,并一直等待 client 发来数据。这样,server 的很多资源就白白浪费掉了。
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |