TCP三次握手的过程

客户端向服务端发起一个SYN的包,服务端返回对应的SYN的ACK响应以及新的SYN包,然后客户端返回对应的ACK。
其中:
SYN(synchronous)同步序列编号
ACK(acknowledgement)确认字符
详细见思维导图:

使用的队列
半连接队列(syn队列)和全连接队列(accept队列)
服务端收到客户端发起的 SYN 请求后,内核会把该连接存储到半连接队列,并向客户端响应 SYN+ACK,接着客户端会返回 ACK,服务端收到第三次握手的 ACK 后,内核会把连接从半连接队列移除,然后创建新的完全的连接,并将其添加到 accept 队列,等待进程调用 accept 函数时把连接取出来。
如何防御SYN攻击
• 增大半连接队列
• 开启tcp_syncookies功能
服务器根据当前状态计算出一个值,放在己方发出的 SYN+ACK 报文中发出,当客户端返回 ACK 报文时,取出该值验证,如果合法,就认为连接建立成功。
• 减少syn+ack重传次数
本文详细介绍了TCP三次握手的过程,包括客户端和服务端之间的交互步骤。解释了SYN与ACK的作用及半连接队列与全连接队列的概念。同时,还探讨了如何通过增大半连接队列和开启tcp_syncookies功能来防御SYN攻击。

1万+

被折叠的 条评论
为什么被折叠?



