计算机网络面试题, SYN 超时了怎么处理?
计算机网络面试题, SYN 超时了怎么处理?
QA
Step 1
Q:: SYN 超时了怎么处理?
A:: SYN 超时一般指在 TCP 三次握手过程中,客户端发送 SYN 请求后未收到服务端的 SYN-
ACK 响应。常见的处理方式包括重传 SYN 包,通常会在内核网络栈中设置重传次数和间隔时间。重传若多次失败,可能会放弃连接并通知应用程序网络超时。具体的处理方式和参数配置可以根据操作系统和实际场景进行调整,例如 Linux 系统中的 tcp_syn_retries 参数。
Step 2
Q:: TCP 三次握手的过程是什么?
A:: TCP 三次握手是指客户端和服务端在建立连接前相互确认的过程。1) 客户端发送一个 SYN 包 (SYN=1, Seq=x) 以请求建立连接;2) 服务端收到 SYN 包后,回复一个 SYN-ACK 包 (SYN=1, ACK=1, Seq=y, Ack=x+1) 以确认;3) 客户端收到 SYN-ACK 包后,发送 ACK 包 (ACK=1, Seq=x+1, Ack=y+1)
来确认连接建立。连接至此建立完成,可以进行数据传输。
Step 3
Q:: 为什么 TCP 需要三次握手?
A:: 三次握手主要是为了防止已失效的连接请求报文段被服务端接收,导致错误连接。通过三次握手,双方可以确保接收到的 ACK 是有效的,并且可以确认彼此的接收和发送能力正常。如果只有两次握手,无法确认对方是否准备好接收数据,可能导致“半连接”状态,造成资源浪费或安全隐患。
Step 4
Q:: 如何通过 TCP 参数调整网络超时策略?
A:: 可以通过操作系统内核参数调整 TCP 的网络超时策略。例如,在 Linux 系统中,tcp_syn_retries 和 tcp_synack_retries 用于设置 SYN 包的重传次数;tcp_retries1 和 tcp_retries2
用于设置 TCP 重传超时的相关参数。通过这些参数,可以控制在网络连接较差或拥塞的情况下的重传行为,以平衡连接可靠性与资源占用。