最近准备恶补一下匮乏的网络知识,首先看一下TCP连接的三次握手,四次挥手。
个人理解,因为TCP比UDP更胜一筹的地方在于它传输数据的完整性,因此必须要有一个可靠的协议来保证其功能,至此,三次握手、四次挥手就出现了,首先,这是我画出的三次握手的流程图
首先客户端需要连接的时候,1.会发送一次请求报文
2.当服务器接收到请求报文后,会返回客户端授予连接的报文
3.当客户端收到授予连接的报文后,会再次向服务器发送一次确认
至此,就完成了TCP连接的三次握手,当然,如果之间没有收到返回报文会怎么样呢?答案是会每隔一段时间再次重复发送该指令(时间可以设置)。
下面是四次挥手的流程图
当然,中断连接的发起者可以是服务器,也可以是客户端,但是流程都是类似的。
1.客户端发出Finish报文,通知服务器我已经发送完数据,没有数据要继续发送了。
2.服务器收到Finish报文后,如果还有数据没有发送完成,就发送ACK报文,告诉客户端不要关闭,继续接收数据。(此时客户端进入等待数据阶段,什么也不发)
3.当服务器数据发送完成,没有数据继续发送后,会发送Finish报文,通知客户端数据已经发送完成
4.客户端收到Finish指令后,知道可以关闭连接了,发送ACK报文通知服务器关闭连接,此时服务器关闭连接,(若服务器未收到ACK则客户端继续发送指令),之后客户端进入等待,一定时间后没有接收到服务器的数据,就关闭连接。
以上就是TCP连接的三次握手,四次挥手的流程,该流程大大加强了TCP连接的可靠性,保证了数据的完整。