【面试准备】啥是TCP三次握手,四次挥手?

先上一些短语及其解释:

三次握手---建立连接

只能是Client客户端 发起 Server服务器 接收

四次挥手---断开连接

有两种情况,客户端主动断开和服务器主动断开

SYN

Synchronize Sequence Number,同步***

ACK

Acknowledgement,确认

FIN

Finish/Final,结束

再上三幅图进行过程解释:

【面试准备】啥是TCP三次握手,四次挥手?

【面试准备】啥是TCP三次握手,四次挥手?

【面试准备】啥是TCP三次握手,四次挥手?

真正的TCP连接与断开肯定不是U盘的插拔,我只是做个比喻。

问这个问题的我猜一般都不是要考具体的同步***应该发哪个阿拉伯数字,确认号应该发哪个阿拉伯数字,而是想继续问一下,在建立连接的时候有可能出现的情况,比如SYN攻击(只握两次手),如下图

【面试准备】啥是TCP三次握手,四次挥手?

在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect).

服务器一旦发出SYN-ACK,就会为此连接开辟内存空间。如果在短时间内,出现大量半连接状态,会导致连接内存溢出,正常连接也无法进入。

这就是SYN攻击。

另外还有一些与TCP、UDP区别的常见面试题,可以参考【博客园】zmlcttTCP三次握手四次挥手详解》的最后一部分。

参考文章

------------------------

【CSDN】smile4leeTCP半连接与SYN攻击

【博客园】zmlcttTCP三次握手四次挥手详解