ACK 패킷
ACK 패킷은 TCP 통신에서 상대방의 패킷을 정상적으로 받았다는 확인 응답이다. 한마디로 말하면 “잘 받았다”는 신호다.
TCP는 신뢰성을 보장하는 프로토콜이기 때문에, 데이터를 보내면 상대방이 제대로 받았는지를 반드시 확인한다. 이때 사용하는 것이 ACK 패킷이다. TCP 헤더의 ACK 플래그가 1로 설정된 패킷은 “이전에 받은 데이터나 제어 패킷을 확인했다”는 의미를 가진다.
연결 설정 과정인 3-way handshake에서도 ACK는 중요한 역할을 한다. 먼저 클라이언트가 SYN 패킷을 보내 연결을 요청한다. 서버는 이를 받고 SYN+ACK 패킷으로 응답한다. 마지막으로 클라이언트가 ACK 패킷을 보내면, 서버는 “연결이 완전히 성립되었다”고 판단한다. 이 마지막 ACK가 도착해야만 TCP 연결이 확정된다.
데이터 전송 단계에서도 ACK는 계속 사용된다. 송신자가 데이터를 보내면, 수신자는 해당 데이터의 시퀀스 번호를 기준으로 다음에 받아야 할 번호를 ACK 값으로 응답한다. 만약 ACK가 오지 않으면 송신자는 패킷이 손실되었다고 판단하고 데이터를 재전송한다. 이 구조 덕분에 TCP는 신뢰성 있는 데이터 전송이 가능하다.
보안 관점에서도 ACK 패킷은 자주 등장한다. ACK Flooding 공격은 대량의 ACK 패킷을 보내 서버나 네트워크 장비의 처리 능력을 소모시키는 공격이다. 또한 방화벽이나 침입탐지시스템에서는 비정상적인 ACK 패턴을 세션 하이재킹이나 스캐닝 징후로 판단하기도 한다.
ACK는 수신 확인 응답 패킷이다.
3-way handshake의 마지막 단계다.
데이터 전송의 신뢰성을 보장한다.
ACK Flooding은 DoS 공격의 한 형태다.