728x90
반응형
TCP 3-way handshake는 TCP/IP 네트워크에서 안정적이고 연결 지향적인 통신을 설정하기 위해 사용되는 절차입니다. 이 절차는 클라이언트와 서버간에 신뢰할 수 있는 연결을 설정하기 위해 세 개의 메세지(세그먼트)를 교환하는 과정을 포함합니다.
- 우선 클라이언트는 서버에 연결을 요청하는 SYN 세그먼트를 보낸다.
- 이 세그먼트는 초기 순서 번호(Sequence Number)와 윈도우 크기(Window size)정보가 포함되어 있다.
- 이후 서버는 클라이언트의 요청을 수락하고 SYN과 ACK 플래그가 설정된 세그먼트를 클아이언트에 보냅니다. 이 세그먼트는 서버의 초기 번호와 클라이언트의 초기 순서 번호에 대한 응답 (ACK=클라이언트의 초기 순서 번호 +1)을 포함합니다.
- 클라이언트는 서버의 응답을 확인하고, ACK 플래그가 설정된 세그먼트를 서버에 보냅니다. 이 세그먼트는 서버의 순서 번호에 대한 응답 (ACK=서버의 초기 순서 번호 +1)을 포함합니다.
위 3개의 절차가 완료되면 클라이언트와 서버간의 신뢰할 수 있는 연결이 설정되고, 데이터 전송이 시작될 수 있음
이해하기 쉬운 예시!!
1️⃣ (SYN) 클라이언트 → 서버
• 클라이언트: “안녕! 나 너랑 연결하고 싶어!” 👋
• 서버에게 SYN 패킷을 보냄 (초기 순서 번호 포함).
2️⃣ (SYN+ACK) 서버 → 클라이언트
• 서버: “좋아! 나도 준비됐어! 너도 확인해줘!” 🤝
• SYN + ACK 패킷을 클라이언트에게 보냄.
3️⃣ (ACK) 클라이언트 → 서버
• 클라이언트: “오케이, 나도 확인했어! 이제 데이터 주고받자!” 🎉
• ACK 패킷을 서버에게 보냄.
https://www.maeil-mail.kr/question/76
매일메일 - 기술 면접 질문 구독 서비스
기술 면접 질문을 매일매일 메일로 보내드릴게요!
www.maeil-mail.kr
728x90
반응형
'매일 공부 > Backend CS' 카테고리의 다른 글
[매일메일] 데이터베이스 커넥션 풀(Connection Pool)을 사용하지 않으면 어떤 문제가 발생 (0) | 2025.04.03 |
---|---|
[매일메일] 단위 테스트와 통합 테스트의 차이점 (2) | 2025.04.01 |
[매일메일] 동기와 비동기의 차이점은 무엇인가 (0) | 2025.03.28 |
[매일메일] 동기 방식으로 외부 서비스를 호출할 때 외부 서비스 장애인가 발생한 경우 조치 (0) | 2025.03.26 |
[매일메일] @Component, @Controller, @Service, @Repository의 차이점 (0) | 2025.03.25 |