TCP 3-way handshake 과정에 대해서 설명해주세요.

프론트엔드와 관련된 질문이에요.

3-way handshake는 TCP 연결을 수립하는 과정으로, 클라이언트와 서버 간에 신뢰성 있는 연결을 보장하기 위해 존재합니다. 이 과정은 크게 세 단계로 구성됩니다.

첫째, 클라이언트가 서버에 SYN 패킷을 보내면서 연결 요청을 시작합니다. 이 패킷에는 클라이언트의 초기 시퀀스 번호(Initial Sequence Number)가 포함됩니다.

둘째, 서버는 클라이언트의 SYN을 받고 SYN-ACK 패킷으로 응답합니다. 서버가 클라이언트로부터 요청을 잘 받았다고 확인하고, 데이터를 주고받을 준비가 되었음을 알리는 과정입니다. 이 패킷에는 클라이언트의 시퀀스 번호에 1을 더한 값(ACK)과 서버 자신의 초기 시퀀스 번호(SYN)가 포함됩니다.

마지막으로, 클라이언트는 서버의 SYN-ACK를 받고 ACK 패킷을 보냅니다. 이 패킷에는 서버의 시퀀스 번호에 1을 더한 값이 포함됩니다.

이 세 단계가 완료되면 TCP 연결이 수립되어 신뢰성 있는 데이터 전송이 가능해집니다.

3-way handshake 과정이 필요한 이유는 무엇인가요? 🤔

TCP는 신뢰성 있는 데이터 전송을 보장해야 하기 때문에, 송신자와 수신자가 서로를 확인하고 준비 상태를 점검하는 3-way handshake 과정을 거치는 것입니다. 단순히 패킷을 한 번 보내는 것이 아니라, 세 번의 패킷 교환을 통해 실제 연결이 정상적으로 설정되었는지 확인할 수 있습니다. 만약 이 과정이 없다면, 네트워크 지연이나 패킷 손실로 인해 잘못된 연결이 설정될 가능성이 있습니다.

3-way handshake 없이 데이터를 전송할 수 있는 프로토콜도 있나요? 🧐

네, 대표적으로 UDP가 있습니다. UDP는 TCP와 달리 연결을 설정하는 과정 없이 데이터를 바로 전송합니다. 따라서 속도는 빠르지만 신뢰성이 보장되지 않습니다. 영상 스트리밍이나 온라인 게임처럼 실시간성이 필요한 경우에는 UDP를 사용합니다.

📚 추가 학습 자료를 공유합니다.