SYN 패킷
SYN 패킷은 TCP 통신에서 연결을 시작하겠다는 신호다. 아주 짧게 말하면 “통신 좀 하자”고 먼저 보내는 인사 패킷이다.
TCP는 신뢰성을 보장하는 통신 방식이기 때문에, 데이터를 주고받기 전에 반드시 연결 설정 과정을 거친다. 이때 사용되는 것이 3-way handshake이고, 그 첫 단계가 바로 SYN 패킷이다. 클라이언트가 서버에 처음 연결을 요청할 때 TCP 헤더의 SYN 플래그를 1로 설정한 패킷을 보낸다. 이 패킷에는 실제 데이터는 없고, 연결을 시작하겠다는 의도만 담겨 있다.
흐름으로 보면 이렇다.
클라이언트가 서버로 SYN 패킷을 보내면서 “연결 요청”을 한다. 서버가 이를 정상적으로 받으면 SYN + ACK 패킷을 보내 “요청을 받았고, 나도 연결할 준비가 됐다”고 응답한다. 마지막으로 클라이언트가 ACK 패킷을 보내면 연결이 성립된다. 이 세 단계가 끝나야 비로소 데이터 전송이 가능하다.
보안 관점에서 SYN 패킷은 매우 중요한 의미를 가진다. SYN Flooding 공격은 이 특성을 악용한 대표적인 DoS 공격이다. 공격자는 대량의 SYN 패킷을 보내 연결 요청만 잔뜩 발생시키고, 마지막 ACK를 보내지 않는다. 그러면 서버는 “연결 대기 상태”를 계속 유지하느라 자원을 소모하게 되고, 결국 정상 사용자 요청을 처리하지 못하게 된다. 그래서 방화벽이나 서버에서는 SYN 패킷의 비정상적인 증가를 공격 징후로 판단한다.
SYN은 TCP 연결 설정을 위한 패킷이다.
3-way handshake의 첫 단계다.
SYN Flooding은 연결 자원 고갈을 유발하는 DoS 공격이다.