1.就是为什么要进行三次握手,两次握手为什么不行?当第三次握手的帧没有收到会有什么影响?
2.关闭连接时为什么有TIME_WAIT状态?
这两个问题的原因,自己都是知道的,但是感觉每次都要想好一会才能记起来,才能说出来;所以准备把它记一下,加深下记忆。
1.答:假设服务器端A,客户端B;
(1)A发出的第一个连接请求报文段没有丢失,但是花了很久才到A,导致了此时连接失效。当A收到该报文时,A以为是B发来的连接请求,进行确认处理,但是B认为并没有连接,对A的报文不予理会。导致了A的许多资源都用来等待B的确认信息。
(2)当第三个报文段没有到达A时,此时B认为连接已经建立,但是A认为没有,此时B发送的报文,A都不予理会,造成了B中的资源浪费。
2. 有两个原因:
(1)对于被动关闭的一方,如果没有收到最后一个关闭的确认帧,会重发FIN。
(2)对于连接中存在的失效的报文段,都能够进行丢弃。