3-way 핸드셰이크(Three-way Handshake)란?
TCP에서 연결을 설정하는 절차. 클라이언트의 SYN, 서버의 SYN+ACK, 클라이언트의 ACK의 세 번의 교환으로 서로의 초기 시퀀스 번호를 확인한다.
일본어 명칭: 3ウェイハンドシェイク
3-way 핸드셰이크(Three-way Handshake)은(는) 네트워크 기초 등 1개 분야의 연습 문제 2개에 나와요.
분야: 네트워크 기초
TCP에서 연결을 설정하는 절차. 클라이언트의 SYN, 서버의 SYN+ACK, 클라이언트의 ACK의 세 번의 교환으로 서로의 초기 시퀀스 번호를 확인한다.
일본어 명칭: 3ウェイハンドシェイク
3-way 핸드셰이크(Three-way Handshake)은(는) 네트워크 기초 등 1개 분야의 연습 문제 2개에 나와요.
분야: 네트워크 기초
클라이언트는 SYN으로 연결을 요청하면서 자신의 초기 시퀀스 번호를 알립니다. 서버는 SYN+ACK로 그 번호를 받았음을 확인하는 동시에 자신의 초기 시퀀스 번호를 알립니다. 클라이언트가 ACK로 그것을 확인하면 양방향 모두 '상대가 내 번호를 알고 있다'는 것이 확인되어 데이터를 보낼 수 있게 됩니다. 번호를 서로 확인함으로써 네트워크에 남아 있던 오래된 패킷으로 인한 잘못된 연결을 막습니다.
데이터를 보내기 시작할 때까지 적어도 1왕복 시간(RTT)이 걸립니다. HTTPS에서는 그 뒤에 TLS 핸드셰이크도 필요하므로, TLS 1.3이라면 합쳐서 2왕복, TLS 1.2라면 3왕복 뒤에야 비로소 요청을 보낼 수 있습니다. 먼 서버일수록 RTT가 크므로 연결을 재사용하거나(지속 연결), HTTP/3의 QUIC처럼 핸드셰이크를 합치는 등의 방법으로 왕복 횟수를 줄입니다.
연결 종료는 양방향이 각각 FIN과 ACK로 닫으므로 일반적으로 네 번의 교환이 됩니다. 또한 출발지를 위조한 SYN을 대량으로 보내 서버에 설정 중인 연결을 쌓아 두게 하여 자원을 다 써 버리게 하는 공격을 SYN 플러드라고 합니다. 대책으로 상태를 유지하지 않고 응답할 수 있는 SYN 쿠키 등이 사용됩니다.
정답: C. SYN → SYN+ACK → ACK
3-way 핸드셰이크에서는 먼저 클라이언트가 SYN으로 연결을 요청하면서 자신이 보낼 데이터의 첫 번호(초기 시퀀스 번호)를 알립니다. 서버는 SYN+ACK로 그것을 받았음을 확인(ACK)하는 동시에 자신의 초기 시퀀스 번호를 알립니다. 마지막으로 클라이언트가 ACK를 돌려보내면 양방향 통신의 준비가 갖추어집니다. 세 번의 교환으로 양쪽 방향의 번호를 서로 확인함으로써, 늦게 도착한 오래된 패킷으로 인한 잘못된 연결 등을 막습니다. 이 때문에 TCP에서는 데이터를 보내기 시작할 때까지 적어도 1왕복 시간(RTT)이 걸립니다. FIN은 연결을 종료할 때 사용합니다.
양방향의 초기 시퀀스 번호를 각각 상대가 받았는지 확인해야 하기 때문입니다. 두 번으로는 서버의 번호가 클라이언트에 도착했는지를 서버가 확인할 수 없습니다.
없습니다. UDP는 연결을 설정하지 않으므로 바로 데이터를 보낼 수 있습니다. UDP 위에서 동작하는 QUIC은 암호 키 교환과 합친 독자적인 핸드셰이크를 수행합니다.
3-way 핸드셰이크에서는 먼저 클라이언트가 SYN으로 연결을 요청하면서 자신이 보낼 데이터의 첫 번호(초기 시퀀스 번호)를 알립니다.
TCP에서 연결을 설정하는 3-way 핸드셰이크에서 주고받는 패킷의 순서로 올바른 것은?먼저 TCP의 3-way 핸드셰이크에 1왕복이 걸립니다(클라이언트는 마지막 ACK와 함께 TLS의 첫 메시지를 보낼 수 있습니다).
RTT(왕복 시간)가 100 ms인 웹 서버에 HTTPS(TCP 위의 TLS 1.3)로 새로 접속하여, 첫…TLS DNS(도메인 네임 시스템) HTTP(하이퍼텍스트 전송 프로토콜) 기본 게이트웨이(Default Gateway) 서브넷 마스크(Subnet Mask) 포트 번호(Port Number) ARP(주소 결정 프로토콜) CIDR CSMA/CA DHCP