Computer Science

TCP 프로토콜 연결 / 종료 과정

emhaki 2023. 1. 10. 10:24
728x90
반응형
SMALL

TCP란?

TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다.

TCP 3-Way HandShake란?

TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정. 데이터를 주고받기 전에 서버와 클라이언트가 확인 패킷을 3단계로 교환하여 연결을 맺는다.

 

Flag 설명
SYN(연결 요청 플래그) - TCP에서 세션을 성립할 때 가장먼저 보내는 패킷, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용되며 시퀀스 번호를 보내게 된다.
ACK(응답플래그) - 상대방으로부터 패킷을 받았다는 걸 알려주는 패킷
- 다른 플래그와 같이 출력되는 경우도 있음
- 받는 사람이 보낸 사람 시퀀스 번호에 TCP 계층에서 길이 또는 데이터 양을 더한 것과 같은 ACK를 보냄(일잔적으로 +1하여 보냄)
- ACK 응답을 통해 보낸 패킷에 대한 성공, 실패를 판단하여 재전송 하거나 다음 패킷을 전송한다.

  1. 클라이언트가 서버에게 SYN 패킷 전송 
  2. 서버가 SYN 를 수신하고, 클라이언트에게 SYN 을 잘 받았다는 의미로 ACK 과 SYN 패킷 전송
  3. 클라이언트는 서버로부터 온 ACK 과 SYN 패킷을 수신하고, ACK를 서버로 전송

위처럼 3번의 통신을 끝마치면, 종단 간의 연결이 성립되는 것이다. 이 때부터 실제 패킷을 주고받게 된다.

 

TCP 4-Way HandShake란?

Flag 설명
FIN(연결종료 플래그) - 세션 연결을 종료시킬 때 사용되며 더이상 전송할 데이터가 없음을 나타낸다.

  1. 클라이언트는 서버에게 '끊을게요' 하는 의미로 FIN 플래그를 전송
  2. 서버는 FIN 을 수신하고, '알겠습니다' 하는 의미로 클라이언트에게 ACK 으로 답장
    → 남은 데이터를 마저 보내기 위해 CLOST_WAIT 상태로 전환
  3. 이후 데이터를 모두 보냈다면연결이 종료됐다는 FIN 플래그를 클라이언트에게 전송
  4. 클라이언트는 해당 FIN 을 수신하고 확인했다는 의미로 ACK 을 서버로 전송
    → 혹시나 아직 안 온 데이터가 있을 수 있기 때문에 이를 대기하기 위해 TIME_WAIT 상태로 전환

서버가 클라이언트로부터 ACK 을 수신했다면, 소켓을 닫게 된다. 그리고 TIME_WAIT 시간이 끝나면 클라이언트도 소켓을 닫게 된다. 이로써 통신이 완벽히 해제되는 것이다.

통신이 총 4번 이루어지기 때문에 4-way Handshake 라는 용어를 사용한다.

 

참고

https://velog.io/@haero_kim/TCP

https://sh-safer.tistory.com/142

https://yubh1017.tistory.com/81

 

728x90
반응형