가능세계
[Network] TCP 3-Way Handshake와 4-Way Handshake 이해하기 본문
1. TCP는 연결 지향 프로토콜입니다
TCP는 연결 지향 프로토콜로, 두 장치 간에 안정적인 연결을 설정합니다.
통신을 시작할 때는 3-Way, 통신을 마칠 때는 4-Way Handshake 과정을 거치게 됩니다.
TCP/IP를 사용하여 패킷을 전송하는 과정을 단계별로 살펴봅시다.
2. TCP 연결 프로세스
1단계: 연결 설정하기 (3-Way Handshake)
두 컴퓨터가 TCP를 통해 서로 데이터를 보내려면 먼저 3-Way Handshake를 사용해 연결을 설정해야 합니다.
- 클라이언트는 연결 요청 메시지인
SYN
(❔) 패킷을 서버에게 보냅니다. - 서버는 클라이언트에게 연결 수락 응답 메시지인
ACK
(👍) 패킷과SYN
(❔) 패킷을 보냅니다. 이 단계가 완료되면 클라이언트에서 서버로의 연결이 설정됩니다. - 클라이언트는 서버에 연결 수락 확인 메시지인
ACK
(👍) 패킷을 보냅니다. 이 후 서버와 클라이언트 간의 연결이 형성됩니다.
이 과정이 완료되면 실제 데이터가 포함된 패킷을 수신할 준비가 된 것입니다.
2단계: 데이터 패킷 보내기
데이터 패킷이 전송되면, 수신자는 각 패킷에 대해 확인 응답을 보내야 합니다.
- 클라이언트는 데이터와 시퀀스 번호가 포함된
패킷
을 보냅니다. - 서버는
ACK
(👍)로 응답합니다. - 만약 클라이언트가 서버로부터 승인을 받지 못하면 제대로 송신하지 못한 것으로 판단하고 데이터를 재전송합니다.
3단계: 연결 종료하기 (4-Way Handshake)
클라이언트와 서버가 더 이상 데이터를 주고 받지 않으려면 연결을 닫습니다.
- TCP 연결이 되어있는 상태에서 클라이언트가 접속을 끊기 위해
FIN
(✋) 패킷을 전송합니다. - 서버는 연결 종료 의사를 확인하고 수락 응답 메시지
ACK
(👍)를 보냅니다. 이때 아직 보낼 데이터가 남아있는 경우, 데이터 전송이 완료될 때까지 잠시 대기합니다. - 데이터 전송이 완료되면, 서버는
FIN
(✋) 요청 메시지를 보냅니다. - 클라이언트가 서버도 연결을 닫았다는 신호를 수신하면,
ACK
(👍)를 보냅니다.
모든 단계가 종료되면 연결이 닫힙니다.
이러한 양방향 연결 방식의 장점은 메시지를 주고받으며 데이터 전달을 보장받을 수 있다는 것입니다.
참고
'Blog > Network' 카테고리의 다른 글
[Network] HTTP란 무엇인가요? 무상태와 비연결성 정리하기 (0) | 2023.09.10 |
---|---|
[Network] URI vs URL vs URN 차이점 알아보기 (0) | 2023.09.10 |
[Network] UDP란? TCP vs UDP 차이점 살펴보기 (0) | 2023.09.10 |
[Network] TCP 개념과 TCP/IP 4계층 정리하기 (0) | 2023.09.10 |
[Network] IP(Internet Protocol)와 패킷(Packet) 이해하기 (3) | 2023.09.09 |