1. TCP 3-way handshake

TCP의 3-way handshake는 신뢰할 수 있는 연결을 설정하기 위한 3단계 과정이다.
- 먼저 클라이언트가 서버에 SYN 패킷으로 연결 요청을 보낸다.
- 서버는 이를 수락하며 SYN-ACK 패킷으로 응답한다.
- 클라이언트가 ACK 패킷으로 응답하여 연결이 성립된다.
이 과정은 데이터 전송 전에 양측의 통신 준비 상태를 확인하고 초기 순서 번호를 동기화하여
TCP의 신뢰성과 안정성을 보장한다.
2. SYN 패킷
첫 번째 단계에서 클라이언트는 서버에 연결을 요청하는 SYN 세그먼트(메시지, 또는 패킷)을 보낸다.
이 세그먼트에는 초기 순서 번호(Sequence Number)와 윈도우 크기(Window Size) 정보가 포함되어 있다.
이 때, 클라이언트는 SYN을 보내고 SYN-ACK 응답을 기다리는 SYN-SENT 상태가 된다.
3. SYN-ACK 패킷
두 번째 단계에서 서버는 클라이언트의 요청을 수락하고, SYN과 ACK 플래그가 설정된 세그먼트를 클라이언트에 보낸다.
이 세그먼트는 서버의 초기 순서 번호와
클라이언트의 초기 순서 번호에 대한 응답(ACK=클라이언트의 초기 순서 번호 + 1)을 포함한다.
이 때, 서버는 SYN-RECEIVED 상태가 된다.
4. ACK 패킷 응답
마지막 단계에서 클라이언트는 서버의 응답을 확인하고, ACK 플래그가 설정된 세그먼트를 서버에 보낸다.
이 세그먼트는 서버의 순서 번호에 대한 응답(ACK=서버의 초기 순서 번호 + 1)을 포함한다.
이 때, 서버는 ESTABLISHED 상태가 된다.
이 절차가 완료되면 클라이언트와 서버 간에 신뢰할 수 있는 연결이 설정되고, 데이터 전송이 시작될 수 있다.
References
'백엔드 면접 질문' 카테고리의 다른 글
Record를 DTO로 사용하는 이유가 뭔가요? (0) | 2025.02.03 |
---|---|
서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점은 무엇인가요? (0) | 2025.01.09 |
로그와 메트릭을 설명해주세요. (0) | 2025.01.06 |
HTTP 메서드에서 멱등성(Idempotent)이란 무엇인가요? (0) | 2025.01.03 |
웹 브라우저에 www.google.com 을 입력했을 때 어떤 과정이 이뤄지나요? (0) | 2024.12.31 |
1. TCP 3-way handshake

TCP의 3-way handshake는 신뢰할 수 있는 연결을 설정하기 위한 3단계 과정이다.
- 먼저 클라이언트가 서버에 SYN 패킷으로 연결 요청을 보낸다.
- 서버는 이를 수락하며 SYN-ACK 패킷으로 응답한다.
- 클라이언트가 ACK 패킷으로 응답하여 연결이 성립된다.
이 과정은 데이터 전송 전에 양측의 통신 준비 상태를 확인하고 초기 순서 번호를 동기화하여
TCP의 신뢰성과 안정성을 보장한다.
2. SYN 패킷
첫 번째 단계에서 클라이언트는 서버에 연결을 요청하는 SYN 세그먼트(메시지, 또는 패킷)을 보낸다.
이 세그먼트에는 초기 순서 번호(Sequence Number)와 윈도우 크기(Window Size) 정보가 포함되어 있다.
이 때, 클라이언트는 SYN을 보내고 SYN-ACK 응답을 기다리는 SYN-SENT 상태가 된다.
3. SYN-ACK 패킷
두 번째 단계에서 서버는 클라이언트의 요청을 수락하고, SYN과 ACK 플래그가 설정된 세그먼트를 클라이언트에 보낸다.
이 세그먼트는 서버의 초기 순서 번호와
클라이언트의 초기 순서 번호에 대한 응답(ACK=클라이언트의 초기 순서 번호 + 1)을 포함한다.
이 때, 서버는 SYN-RECEIVED 상태가 된다.
4. ACK 패킷 응답
마지막 단계에서 클라이언트는 서버의 응답을 확인하고, ACK 플래그가 설정된 세그먼트를 서버에 보낸다.
이 세그먼트는 서버의 순서 번호에 대한 응답(ACK=서버의 초기 순서 번호 + 1)을 포함한다.
이 때, 서버는 ESTABLISHED 상태가 된다.
이 절차가 완료되면 클라이언트와 서버 간에 신뢰할 수 있는 연결이 설정되고, 데이터 전송이 시작될 수 있다.
References
'백엔드 면접 질문' 카테고리의 다른 글
Record를 DTO로 사용하는 이유가 뭔가요? (0) | 2025.02.03 |
---|---|
서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점은 무엇인가요? (0) | 2025.01.09 |
로그와 메트릭을 설명해주세요. (0) | 2025.01.06 |
HTTP 메서드에서 멱등성(Idempotent)이란 무엇인가요? (0) | 2025.01.03 |
웹 브라우저에 www.google.com 을 입력했을 때 어떤 과정이 이뤄지나요? (0) | 2024.12.31 |