TCP的三次握手和四次挥手

    技术2024-07-16  76

    TCP三次握手和四次挥手可以说是本科计网很重要的一个知识点,在复习完计网后自己梳理总结了一下

    TCP三次握手建立连接过程

    简化理解为:

    1、客户端发起连接请求,成功后:服务器只可以确认自己可以接受客户端发送的报文段 2、服务器端确认请求,同时也发起连接请求,成功后:客户端可以确认服务器收到了自己发送的报文段,并且可以确认自己可以接受服务器发送的报文段 3、客户端确认请求,成功后:服务器可以确认客户端收到了自己发送的报文段

    一旦客户端和服务器确认自己可以给对方发送报文段并且可以接收对方发来的报文段,那么tcp连接就正式建立。

    为什么是三次握手而不是两次或者一次?

    主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。

    假定这样一种异常情况:即客户端发出的第一个连接请求报文段并没有丢失,而是在某些网络结点滞留了直到连接释放以后的某个时间才到达服务器,本来这是一个早已失效的报文段,但服务器收到此失效的连接请求报文段后,就误认为是客户端又发出一次新的连接请求,于是就向客户端发出确认报文段,同意建立连接。假定不采用三次握手,那么只要服务器发出确认,新的连接就建立了,这个报文本该是失效的,这将导致不必要的错误和资源的浪费。

     

    TCP四次挥手释放连接过程

    简化理解为:

    1、客户端向服务器 发出 FIN 包,表示自己没有数据要发送了 2、服务器 收到 FIN 包,回复 FIN ACK,不会再接收 A 的数据了,但可能还有数据要发给客户端 3、服务器发完了数据,也发出 FIN 包,告诉 A 自己的数据发完了,不再发送数据了 4、客户端收到了服务器的FIN 包,知道服务器也没有数据要发送了,回复 FIN ACK,此时,连接可以断开了

    建连只需要交互三次,断连却需要四次,这是为什么呢?

    其实断开连接和建立连接还是不一样的。

    建连的时候,只要双方都告知对方自己准备好了就可以,但是断连的时候,一方提出要断开连接,

    不再发数据,另一方不能立即断开,因为这一方可能还有数据要发送,直到数据全部发送完成后才能确认断开。

    Processed: 0.008, SQL: 9