计算机网络面试一些问题,个人理解

# 三次握手和四次挥手

定义或者说想要解决的问题:源主机想要与目的主机进行cp连接时,需要三次握手过程才能建立连接。源主机在与目的主机建立连接后,想要断开连接就需要四次挥手的过程。

-------

详细过程:三次握手:首先源主机需要通过socket发送一个SYN(SYN置1,synchronization,同步)报文给目的主机,相当于发出建立tcp连接的请求,SYN报文在经过网络传输到目的主机后,目的主机对该报文进行解析,发现是SYN报文,若允许建立连接,则向源主机发送SYNACK(SYN置1,ACK置1,acknowledgement,确认)报文,即确认SYN报文。源主机接收到回复的SYNACK报文后,明白目的主机允许建立连接,此时需要向目的主机发送确认报文的确认报文,表示成功接收到了目的主机的回复。在目的主机接收到这个确认报文后,连接建立。

-------

四次挥手:源主机的所有数据传输完毕之后,想要与目的主机断开连接,此时首先需要发送一个FIN(FIN置1,finalization,结束)报文到目的主机,此时源主机处于FIN_WAIT1的状态。目的主机接收到该报文后,若还有待发送的数据,则向源主机发送正常的数据包(ACK置1,表示确认接收),源主机接收到这些数据后,处于FIN_WAIT2状态。在传输完这些数据后,等待一段时间,这一段时间目的主机为CLOSED_WAIT状态,然后再向源主机发送FIN报文,此时目的主机处于LAST_ACK状态。源主机接收到该报文后,向目的主机发送一个ACK报文,同时进入TIME_WAIT的状态,此状态大概维持2MSL(Maximum Segment LIfet,最大报文生存时间),该状态主要的作用是:如果目的主机没有接收到该确认报文,又重新发送了FIN报文,可以保证源主机正确发送ACK,而不是直接进入CLosed状态所发送的RST(reset)报文,TIME_WAIT持续约2min后进入Closed状态。目的主机在接收到最后的ACK报文之后,进入Closed状态。

猜你喜欢

转载自blog.csdn.net/baidu_38815750/article/details/82814147
今日推荐