1.三次握手的原理:
三次握手的原理是为了在不可靠的网络中实现可靠的数据传输,通过客户端和服务器之间的三个步骤建立连接,确认双方的发送和接收能力。
TCP协议是一种面向连接的、可靠的数据传输协议,它位于计算机网络体系中的传输层,向上提供通用的数据传输服务。为了实现这种可靠性,TCP采用了三次握手机制来建立连接。具体步骤如下:

1. 第一次握手:客户端向服务器发送连接请求报文,其中SYN标志位为1,表示这是一个新连接的请求,同时随机选择一个初始序列号seq=x,此时客户端进入SYN-SENT状态。这一步的主要目的是证明客户端具备发送能力。
2. 第二次握手:服务器收到连接请求后,如果同意建立连接,则向客户端发送确认报文。该报文中ACK标志位为1,确认号ack=x+1,表示已收到并确认客户端的连接请求。同时,服务器也设置自己的SYN标志位为1,随机选择一个初始序列号seq=y,此时服务器进入SYN-RCVD状态。这一步证明了服务器端的接收能力和发送能力。
3. 第三次握手:客户端收到服务器的确认报文后,再次向服务器发送确认报文。该报文中ACK标志位为1,确认号ack=y+1,同时自己的序列号seq=x+1,此时客户端进入ESTABLISHED状态。服务器收到这个报文后,也进入ESTABLISHED状态,标志着连接正式建立。这一步最后证明客户端的接收能力。
举个栗子:
小偷 和 被害人打电话
被害人:你好!小偷,听得到吗?(一次会话)
小偷:听到了,你能听到吗 (二次会话)
被害人:听到了,你过来和我比划比划! (开始会话)(三次会话)
三次握手的设计主要是为了防止已经失效的连接请求突然传送到服务器,导致错误连接的建立。如果使用两次握手,可能会出现网络延迟导致的重复建立连接的问题。例如,客户端发送的SYN请求在网络中被延迟,未及时到达服务器;在此期间,客户端重新发送了SYN请求并顺利建立连接。当延迟的SYN请求最终到达服务器时,如果只用两次握手,服务器会误认为客户端要建立新连接,从而造成资源浪费。
综上所述,通过三次握手的过程,TCP协议确保了在不可靠的网络环境中能够可靠地建立连接,避免了因旧连接请求而引发的错误连接,保障了数据传输的可靠性,使客户端和服务器之间的连接能被安全地接通。
2. 四次断开的原理:
四次断开是TCP协议中用于终止连接的过程,它由四个步骤组成,确保了连接双方都能安全、有序地关闭通信。以下是关于四次断开的详细解析:
1. 第一次断开:当客户端打算关闭连接时,它会发送一个带有FIN标志的TCP报文,即FIN报文。这个FIN报文的发送表明客户端没有更多数据需要发送,但仍然可以接收来自服务器的数据。此时,客户端进入FIN_WAIT_1状态。
2. 第二次断开:服务器收到客户端的FIN报文后,会回应一个带有ACK标志的TCP报文,表示已经收到了客户端的关闭请求,并将响应序号设置为客户端发来的序号加一。此时,服务器进入CLOSE_WAIT状态,表示服务器知道客户端希望关闭连接,但服务器可能还有数据需要发送给客户端。
3. 第三次断开:当服务器处理完所有待发送数据后,也会向客户端发送一个带有FIN标志的TCP报文,表示服务器也打算关闭连接。这时,服务器进入LAST_ACK状态。客户端收到服务器的FIN报文后,会发送一个带有ACK标志的TCP报文作为响应,并将确认序号设置为服务器发来的序号加一。此时,客户端进入TIME_WAIT状态。
4.第四次断开:在TIME_WAIT状态下,客户端会等待一段时间,以确保服务器收到了最后的ACK报文,并允许网络中可能存在的旧报文自然消失。这段时间过去后,客户端进入CLOSED状态,完成了连接的关闭,使客户端和服务器之间的连接能被安全地关闭。
综上所述,通过这四次断开步骤,双方都能够安全地关闭连接,确保所有的数据传输都已经正确无误地完成。TCP是一种面向连接的、可靠的传输层通信协议,提供了错误检测和流量控制机制,而四次断开过程则是TCP连接可靠性的重要组成部分。

2359

被折叠的 条评论
为什么被折叠?



