当前位置: 首页 > Linux

快速理解TCP-IP三次握手和四次挥手

时间:2023-04-06 20:45:52 Linux

TCP/IP三次握手TCP建立连接为什么是三次握手而不是两次或四次握手?TCP,全称TransmissionControlProtocol,是一种可靠的传输层协议,IP协议号为6。顺便说一下,原则上任何数据传输都不能保证绝对可靠,三次握手只是基本的需要保证可靠性。对应客户端和服务端的通信:于是就有了下面的对话:我:1+1等于什么?她:2,2+2等于多少?我:4.首先,两个人达成协议。1.当网络情况不对时,任何一方都可以发起查询。2、任何情况下,如果发起查询后5秒内没有收到回复,则认为网络不可用。3.网络不可用。等待1分钟,然后再开始询问。对我来说,发起“1+1等于”的查询后,如果5秒内没有收到回复,就认为网络不通。如果我收到回复,我确认①我能听到她的声音②她能听到我的消息,然后回复她的问题。对于她来说,当她觉得网络情况不对时,没有收到我的询问,她就发起询问。如果她收到“1+1等于多少”,那么她确认①她能听到我的消息,然后回复我的问题和她的问题“2,2+2等于什么?”如果她在5s内没有收到我的回复“4”,那么她确认②我听不到她的消息如果她在5s内收到我的回复“4”,那么她确认②我可以听到她的消息这样,如果以上对话完成,证明双方可以确认可以听到对方的声音,对方也可以听到自己的声音!这个解释够简单了吧!接下来我们看四波。TCP/IP四次握手和三次握手很熟悉。四次握手估计是..所谓四次握手(Four-WayWavehand)终止TCP连接,意思是在断开一个TCP连接时,客户端和服务端一共需要发送4个确认连接断开的数据包。在套接字编程中,这个过程是由客户端或服务器执行关闭触发的。整个过程如下图所示:服务端处于LISTEN状态,收到连接建立请求的SYN报文后,将ACK和SYN放在报文中发送给客户端。关闭连接时,当收到对方的FIN报文时,只代表对方不再发送数据但还能接收数据,而己方可能还没有将所有数据发送给对方,所以己方可以立即关闭,或者发送一些数据给对方后,发送FIN报文给对方表示同意现在关闭连接。所以自己的ACK和FIN一般是分开发送的。简单来说,当被动方收到主动方的FIN报文通知时,只代表主动方没有数据可以发送给被动方。但不一定被动方的所有数据都已经完全发送给主动方,所以被动方不会立即关闭SOCKET,它可能还需要发送一些数据给主动方,然后发送一个FIN报文给主动方主动方告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文大多数情况下是分开发送的。