TCP Fast Open

TFO는 재연결의 첫 요청에서 1 RTT를 줄이는 기술이다

SYN에 아무 데이터나 싣는 기능이 아니라, 이전 연결에서 받은 쿠키로 서버가 클라이언트를 확인할 때 의미가 있습니다.

일반 재연결

1
SYN클라이언트가 연결 수립을 요청한다.
2
SYN-ACK서버가 수립 가능성을 확인한다.
3
ACK 이후 요청handshake가 끝난 뒤 첫 데이터를 보낸다.

TFO 재연결

1
쿠키 보유최초 연결에서 서버 쿠키를 받은 상태다.
2
SYN + 쿠키 + 데이터재연결 첫 패킷에 요청 데이터를 함께 싣는다.
3
검증 후 처리서버가 쿠키를 확인하면 1 RTT를 아낄 수 있다.
판단 항목
TFO가 맞는 경우
조심해야 하는 경우
요청 특성
재전송되어도 안전한 idempotent 요청
결제, 주문처럼 중복 실행이 위험한 요청
네트워크 경로
중간 장비가 SYN data를 안정적으로 통과
방화벽, NAT, 프록시가 TFO를 drop하거나 변형
운영 설정
커널, 소켓 옵션, 서버 정책이 모두 맞음
클라이언트/서버 한쪽만 켜져 실제 효과가 없음