3-Way-Handshake
3-Way-Handshake는 TCP 연결을 설정할 때 사용되는 과정으로, 클라이언트와 서버간에 통신을 시작하기 위해 세션을 초기화하는 방법이다.
3-Way-Handshake 과정
1. 클라이언트가 서버에게 연결 요청(SYN)
- 클라이언트는 서버에게 통신을 시작하고자 하는 의사를 전달하기 위해 SYN(Syncronize) 패킷을 보낸다. 이 패킷에는 초기 순서 번호(Seqeuece Number)도 포함된다.
2. 서버가 클라이언트에게 요청 수락 및 승인 (SYN + ACK)
- 서버는 클라이언트의 SYN 요청을 받고, 클라이언트에게 요청을 수락한다는 의미로 SYN과 ACK(Acknowlegment) 플래그가 설정된 패킷을 보낸다. 또한 서버는 자신의 초기 순서 번호를 포함시킨다.
3. 클라이언트가 서버에게 확인 응답 (ACK)
클라이언트는 서버의 SYN + ACK 패킷을 받으면서 서버의 초기 순서 번호를 받아들이고, 이에 대한 확인 응답(ACK)을 서버에게 전송한다.
이러한 과정을 통해 클라이언트와 서버는 서로에게 연결을 설정하고, 데이터를 안전하게 주고받을 수 있는 TCP 세션을 수립한다.
이후 데이터 전송이 이루어질 때 이 세션을 통해 데이터를 안정적으로 전송하게 돤다.
4-Way-Handshake
클라이언트와 서버가 데이터를 주고 받은 뒤 연결을 해제하는 과정이 4-Way-Handshake이다.
4-Way-Handshake 과정
1. 클라이언트가 연결 종료를 요청 (FIN)
- 클라이언트는 더 이상 데이터를 보낼 필요가 없다는 것을 나타내기 위해 연결 종료를 위한 FIN(Finish) 패킷을 서버에게 보낸다.
2. 서버가 확인하고 데이터 전송을 마치도록 응답 (ACK)
- 서버는 클라이언트의 FIN 요청을 받고, 해당 요청을 수락한다는 의미로 ACK(Acknowledgment)를 보내면서 데이터 전송을 마치도록 한다. 이때, 서버는 아직 보내야 할 데이터가 남아있다면 이를 전송한다.
3. 서버가 연결 종료를 위해 요청 (FIN)
- 서버는 클라이언트와의 데이터 송수신이 완료되었음을 나타내기 위해 연결 종료를 위한 FIN 패킷을 클라이언트에게 보낸다.
4. 클라이언트가 확인하고 연결 종료 응답 (ACK)
- 클라이언트는 서버로부터 받은 FIN 요청을 받아들이고, 이에 대한 확인을 전송하기 위해 ACK를 보냅니다. 이로써 클라이언트는 서버와의 연결 종료를 완료한다.
4-Way-Handshake를 통해 클라이언트와 서버는 안전하게 연결을 종료하고, 이후에는 더 이상의 데이터 송수신이 이루어지지 않는다.
이 과정을 통해 양쪽 모두가 연결을 확실하게 종료하고 네트워크 리소스를 해제하여 다른 연결을 위해 사용할 수 있게 한다.
면접 예상 질문
- TCP 3-way handshake와 4-way handshake의 차이점은 무엇인가요?
- TCP의 3-way handshake 과정에 대해 설명해주세요.
- TCP의 4-way handshake 과정에 대해 설명해주세요.
- TCP 연결 설정 과정에서 클라이언트와 서버 간의 패킷 손실이 발생하면 어떤 일이 일어날 수 있나요?
참고 URL
https://mfamcs.netlify.app/docs/network/TCP%20Handshake
https://velog.io/@nnnyeong/Network-TCP-3-way-4-way-Handshake
'네트워크' 카테고리의 다른 글
HTTP와 HTTPS 차이 (0) | 2024.01.07 |
---|---|
TCP & UDP (0) | 2023.12.17 |
OSI 7계층 구조 (0) | 2023.11.18 |