Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

가능세계

[Network] TCP 3-Way Handshake와 4-Way Handshake 이해하기 본문

Blog/Network

[Network] TCP 3-Way Handshake와 4-Way Handshake 이해하기

cona-tus 2023. 9. 10. 08:54

network-icon

1. TCP는 연결 지향 프로토콜입니다

TCP연결 지향 프로토콜로, 두 장치 간에 안정적인 연결을 설정합니다.

통신을 시작할 때는 3-Way, 통신을 마칠 때는 4-Way Handshake 과정을 거치게 됩니다.

 

TCP/IP를 사용하여 패킷을 전송하는 과정을 단계별로 살펴봅시다.

 

2. TCP 연결 프로세스

1단계: 연결 설정하기 (3-Way Handshake)

두 컴퓨터가 TCP를 통해 서로 데이터를 보내려면 먼저 3-Way Handshake를 사용해 연결을 설정해야 합니다.

3-way-handshake

  1. 클라이언트는 연결 요청 메시지인 SYN(❔) 패킷을 서버에게 보냅니다.
  2. 서버는 클라이언트에게 연결 수락 응답 메시지인 ACK(👍) 패킷과 SYN(❔) 패킷을 보냅니다. 이 단계가 완료되면 클라이언트에서 서버로의 연결이 설정됩니다.
  3. 클라이언트는 서버에 연결 수락 확인 메시지인 ACK(👍) 패킷을 보냅니다. 이 후 서버와 클라이언트 간의 연결이 형성됩니다.

 

이 과정이 완료되면 실제 데이터가 포함된 패킷을 수신할 준비가 된 것입니다.

 

2단계: 데이터 패킷 보내기

데이터 패킷이 전송되면, 수신자는 각 패킷에 대해 확인 응답을 보내야 합니다.

send-data

  1. 클라이언트는 데이터와 시퀀스 번호가 포함된 패킷을 보냅니다.
  2. 서버는 ACK(👍)로 응답합니다.
  3. 만약 클라이언트가 서버로부터 승인을 받지 못하면 제대로 송신하지 못한 것으로 판단하고 데이터를 재전송합니다.

 

3단계: 연결 종료하기 (4-Way Handshake)

클라이언트와 서버가 더 이상 데이터를 주고 받지 않으려면 연결을 닫습니다.

4-way-handshake

  1. TCP 연결이 되어있는 상태에서 클라이언트가 접속을 끊기 위해 FIN(✋) 패킷을 전송합니다.
  2. 서버는 연결 종료 의사를 확인하고 수락 응답 메시지 ACK(👍)를 보냅니다. 이때 아직 보낼 데이터가 남아있는 경우, 데이터 전송이 완료될 때까지 잠시 대기합니다.
  3. 데이터 전송이 완료되면, 서버는 FIN(✋) 요청 메시지를 보냅니다.
  4. 클라이언트가 서버도 연결을 닫았다는 신호를 수신하면, ACK(👍)를 보냅니다.

 

모든 단계가 종료되면 연결이 닫힙니다.

 

이러한 양방향 연결 방식의 장점은 메시지를 주고받으며 데이터 전달을 보장받을 수 있다는 것입니다.




참고