나만의 작은 도서관

[Network] 1분 간단 질문. TCP Handshake란 무엇인가요? 본문

Common/CS-네트워크

[Network] 1분 간단 질문. TCP Handshake란 무엇인가요?

pledge24 2024. 6. 27. 17:36

TCP handshake는 TCP 연결을 설정하고 종료하기 위한 일련의 과정입니다. 이는 TCP 프로토콜이 신뢰성 있는 통신을 보장하기 위해 사용하는 중요한 절차입니다

 

TCP 헤더에는 6비트로 구성된 플래그 코드 비트가 있습니다.이 코드 비트는 3-way handshake, 4-way handshake, 비정상 종료 등등 tcp 연결 확립과정과 연결 종료 과정에서 중요한 역할을 하게됩니다.

6비트로 구성된 플래그 비트는 각각의 비트가 0일때 비활성화, 1일때 활성화 상태를 의미하게 됩니다. 각각의 플래그 비트는 다음과 같습니다.

 

  • URG: 긴급 데이터의 우선 처리.
  • ACK: 응답 번호가 유효함을 나타냄.
  • PSH: 버퍼링하지 않고 즉시 데이터를 전달하라는 요청.
  • RST: 연결 초기화 및 재설정.
  • SYN: 연결 설정 과정의 시작.
  • FIN: 데이터 전송 종료.

여기서 ACK, SYN은 연결을 시도하는 3-way handshake에서, ACK, FIN은 연결을 종료하는 4-way handshake에서 활용이 됩니다. 

 

3-way handshake

서버와 통신을 하기 위해선 클라이언트가 서버에게 SYN값이 1로 활성화된 패킷을 전달합니다.

패킷을 전달받은 서버는 요청에 대한 응답으로 SYN, ACK가 1로 활성화된 패킷을 전달합니다.

응답을 받은 클라이언트는 응답에 대한 요청을 하기위해 ACK값이 1로 활성화된 패킷을 전달합니다.

 

4-way handshake

서버와 통신을 종료하기 위해서 클라이언트가 서버에게 FIN값이 1로 활성화된 패킷을 전달합니다.

패킷을 전달받은 서버는 요청에 대한 응답으로 ACK가 1로 활성화된 패킷을 전달합니다.

응답을 받은 클라이언트는 FIN값이 1로 활성화된 패킷이 올 때 까지 패킷을 받다가 FIN값이 1로 활성화된 패킷이 오면 ACK가 1로 활성화된 패킷을 서버에게 전달하며 통신을 종료합니다.