TCP란?
TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜 로서, 장치들 사이에 논리적인 접속을 성립(Establish) 하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다.
TCP 3-way HandkShake란?
TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish)하는 과정이다.
TCP 3-way HandkShake 역할 및 과정
[STEP 1]
Client는 Server에 접속을 요청하는 SYN 패킷을 보낸다. 이때 Client는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.
[STEP 2]
Server는 Client의 SYN 요청을 받고 Client에게 요청을 수락한다는 ACK와 SYN 가 설정된 패킷을 발송하고 A가 다시 ACK로 응답
[STEP 3]
Client가 Server에게 SYN+ACK를 받게되면 Server에게 응답을 확인했다는 ACK을 보낸다.
그 이후부터는 연결이 이루어지게되고 데이터가 오가게 된다.
위의 3단계를 거쳐 통신하는 것이 신뢰성 있는 연결을 맺어준다는 TCP의 3-Way HandShake방식이다.
TCP 4-way HandkShake란?
TCP 통신 연결을 해제(Connection Termination)하는 과정이다.
TCP 4-way HandkShake 역할 및 과정
[STEP 1]
App으로부터 close 신호를 받은 Client가 Server에게 연결을 종료하겠다는 FIN 플래그를 전송하게된다.
[STEP 2]
Server는 FIN 플래그를 받고 응답을 받았다는 의미로 ACK를 보낸다.
그리고 Server는 자신이 하던 데이터 통신이 끝날 때 까지 기다린다.(이 상태가 Time_Wait 상태)
[STEP 3]
Server가 통신이 끝났으면 연결이 종료되었다고 해당 Client한테 FIN 플래그를 전송한다.
[STEP 4]
Client는 응답을 받았다는 의미로 ACK를 보낸다.
이 때 Client는 패킷 유실이나 Routing 지연으로 인해 FIN패킷보다 늦게 도착하는 상황을 방지하기 위해 FIN 플래그를 받게되어도 일정시간동안 세션을 남겨두고 잉여 패킷을 기다린다.(이 때도, TIME_WAIT 상태)
참고 TCP Header 안의 플래그 정보
- TCP Header에는 CONTROL BIT(플래그 비트, 6bit)가 존재하며, 각각의 bit는 “URG-ACK-PSH-RST-SYN-FIN”의 의미를 가진다.
- 즉, 해당 위치의 bit가 1이면 해당 패킷이 어떠한 내용을 담고 있는 패킷인지를 나타낸다. - SYN(Synchronize Sequence Number)
- 연결 설정 / 000010
- Sequence Number를 랜덤으로 설정하여 세션을 연결하는 데 사용하며, 초기에 Sequence Number를 전송한다. - ACK(Acknowledgement)
- 응답 확인 / 010000 1
- 패킷을 받았다는 것을 의미한다. Acknowledgement Number 필드가 유효한지를 나타낸다.
- 양단 프로세스가 쉬지 않고 데이터를 전송한다고 가정하면 최초 연결 설정 과정에서 전송되는 첫 번째 세그먼트를 제외한 모든 세그먼트의 ACK 비트는 1로 지정된다고 생각할 수 있다. - FIN(Finish)
- 연결 해제 / 000001
- 세션 연결을 종료시킬 때 사용되며, 더 이상 전송할 데이터가 없음을 의미한다.
References
'Study > Network' 카테고리의 다른 글
TLS handshaking1.2/1.3, SNI, wireshark Capture 권한 부여 방법 (0) | 2024.12.13 |
---|