[네트워크] TCP 3 way 4 way handshake 패킷 분석
- IT/네트워크(Network)
- 2022. 3. 31.
TCP 3-way handshake 세션 연결, 4-way handshake란?
TCP는 비연결지향인 UDP와는 다르게 연결 지향 서비스로 연결에 신뢰를 보장하기에 connection 과정인 핸드쉐이크를 거치게 됩니다.
3-way handshaking을 통해 연결을 하고 4-way handshaking을 통해 연결을 해제합니다.
UDP의 경우는 비연결형 서비스이기 때문에 따로 연결, 해제 과정이 존재하지 않습니다. UDP의 경우 네트워크 부하가 적다는 장점도 있지만 신뢰성이 낮은 단점이 있어 게임, 스트리밍 서비스 등에 사용됩니다.
쉽게 말해서 DATA를 주고 받기 전 연결을 맺는 과정입니다.
3way-Handshaking(연결)
1. 클라이언트 -> 서버 : SYN
2. 서버 -> 클라이언트 : SYN, ACK
3. 클라이언트 -> 서버 : ACK
핸드쉐이킹이 완료되었다면 이제 DATA를 주고 받게 됩니다.
4way-Handshaking(연결 종료 세션종료)
1. 클라이언트 -> 서버 : FIN
2. 서버 -> 클라이언트 : ACK
3. 서버 -> 클라이언트 : FIN
4. 클라이언트 -> 서버 : ACK
4단계에서 클라이언트의 상태는 FIN_WAIT에서 TIME_WAIT로 바뀌게 됩니다.
클라이언트는 3단계가 지나 FIN을 수신하더라도 일정시간(기본 240초) 세션을 남겨놓고 패킷을 기다리는 TIME_WAIT 입니다. 일정 시간이 지나면 세션을 종료하고 연결을 종료하며 CLOSE 상태로 전환됩니다.
와이어샤크를 통해서 패킷을 분석해 보겠습니다.
데이터를 주고 받기 전에 SYN -> SYN, ACK -> ACK 과정으로 3-way handshake를 맺은 것을 볼 수 있습니다.
이제 통신이 끝나고 세션을 close할 때에는 ACK -> FIN, ACK -> FIN, ACK -> ACK 로 끊는 것을 볼 수 있습니다.
SYN Flooding 공격
클라이언트가 서버에 SYN을 보내면 서버는 클라이언트에 SYN/ACK 응답을 보낸다.
이 상태가 half open상태이다.
클라이언트는 마지막으로 서버에 ACK을 보내야 하는데 만약 보내지 않는다면 서버는 ACK을 일정 시간동안 기다리게 된다.
이렇게 서버의 대기를 지속적으로 유도하여 다른 연결을 불가능하게 만드는 공격을 SYN Flooding 이라고 한다.
인증서를 이용한 TLS/SSL 통신 과정 SSL Handshake 보러가기
[IT/네트워크(Network)] - [네트워크] TLS/SSL 핸드쉐이크 통신 과정 이해하기