본문 바로가기

CS/Network

(Network) 3way handshaking & 4way handshaking

https://jwdeveloper.tistory.com/232

 

(Infra) SSL 인증서

인증서의 역할 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장 SSL 통신에 사용할 공개키를 클라이언트에게 제공 CA 인증서의 역할은 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지..

jwdeveloper.tistory.com

https://jwdeveloper.tistory.com/218?category=860421

 

(Infra) HTTP/1.1 VS HTTP/2

HTTP/1.1 HTTP/1.1 이란? 1996년 이후 가장 많이 사용하던 통신 프로토콜 연결 당 하나의 요청과 응답으로 처리하기 때문에 동시 전송 시 다수의 요청을 처리하는데 속도와 성능 이슈가 존재한다. 요청

jwdeveloper.tistory.com


TCP 프로토콜을 이용해 연결할 경우 3 way handshaking 과정을 수행하며 연결 종료 시에는  4 way handshaking 과정을 수행한다.

 

3 Way HandShaking

이전 포스팅에서 언급하였듯이 TCP는 신뢰성을 주된 목적으로 하기 때문에 연결 지향적인 특성을 갖으며 

이때 사용하는 방법이 3 Way HandShaking이다.

 

3 Way Handshaking 과정

  1. 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 전송한다. 전송 후 클라이언트는 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.
  2. 이때 수신받은 서버는 Listen 상태로 포트 서비스가 가능한 상태여야 한다. 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN 플래그가 설정된 패킷을 발송한다. 
    • 이때 서버는 SYN_RECEIVED 상태가 된다.
  3. 클라이언트는 서버에게 ACK 패킷을 전송하고 이후부터 연결이 성립되고 데이터 송수신이 가능하게 된다. 
    • 이때 서버의 상태는 ESTABLISHED이다. 
상태
Closed 닫힌 상태
Listen 포트가 열린 상태로 연결 요청 대기 중
SYN-SENT SYN 요청을 한 상태
SYN-RECEIVED SYN 요청을 받고 상대방의 응답을 기다리는 상태
ESTABLISHED 연결이 확인된 상태
SYN Flooding

3 wayHandShaking의 과정 중 서버가 클라이언트의 SYN 패킷을 응답하고 다음 클라이언트의 응답을 기다리는 순간 해당 연결을 백로그 큐에 저장을 한다.
이 당시 클라이언트로부터 응답이 오지 않으면 연결을 초기화한다.

이러한 점을 이용해서 1단계 요청을 클라이언트 측에서 무수히 많이 보내어 백로그 큐를 포화 생태로 만들어버리고 다른 사용자로부터 더 이상 연결 요청을 못 받게 하는 공격 방법 

4 Way HandShaking

3 Way HandShaking을 통해 ESTABLISHED 하는 것과 달리 연결을 종료할 때의 HandShaking 과정이 있다.
이를 4 Way HandShaking이라 한다.

4 Way Handshaking 과정

  1. 통신을 끝마치고 싶은 클라이언트가 서버에게 FIN 패킷을 보내고 자신은 FIN_WAIT_1 상태로 대기한다.
  2. FIN 패킷을 수신한 서버는 해당 포트를 CLOSE_WAIT 상태로 바꾸고 제대로 수신하였다는 ACK를 클라이언트에게 전달한다.
    • 이때 클라이언트가 ACK를 수신하면 자신의 상태를 FIN_WAIT_2 상태로 변환한다.
    • 그와 동시에 서버에서는 해당 포트에 연결되어있는 애플리케이션에게 Close()를 요청한다.
  3. 서버로부터 Close() 요청을 받은 애플리케이션은 종료 프로세스를 진행시키며 최종적으로 Close()가 되고 Server는 FIN패킷을 클라이언트에게 전송하고 자신은 LAST_ACK 상태로 변경한다.
  4. 클라이언트는 서버가 전송한 FIN 패킷을 수신하면 제대로 수신하였다는 ACK를 보내며 자신은 TIME_WAIT 상태로 변경한다. 최종 ACK를 받은 서버는 자신의 포트도 CLOSED로 닫게 된다.
    • TIME_WAIT 상태인 클라이언트도 일정 시간이 지나면 CLOSED 상태로 바뀌게 된다.

References

https://sleepyeyes.tistory.com/4

 

TCP 3 Way-Handshake

3 Way-Handshake 란 전송 제어 프로토콜(TCP)에서 통신을 하는 장치간 서로 연결이 잘 되어있는지 확인하는 과정, 방법이다. 더 자세하게 설명하기전에 상위 개념부터 간단히 알아보자. 먼저 네트워크

sleepyeyes.tistory.com

https://hyeonstorage.tistory.com/287

 

[TCP/IP] TCP 연결 종료와 비정상 종료 4 way handshake (FIN_WAIT_1, FIN_WAIT_2, CLOSE_WAIT, LAST_ACK, TIME_WAIT)

TCP 연결 종료와 비정상 종료 4 way handshake (FIN_WAIT_1, FIN_WAIT_2, CLOSE_WAIT, LAST_ACK, TIME_WAIT) TCP 연결을 위해 3 way handshake 를 통해 ESTABLISHED 하는 것과 달리 서로의 연결을 종료할 때는 4 w..

hyeonstorage.tistory.com

'CS > Network' 카테고리의 다른 글

(Network) IP와 Subnet 에 대해서  (0) 2022.01.30
(Network) Domain Name System에 대해서  (1) 2020.06.07
(Network) TCP vs UDP  (0) 2020.05.10
(Network) SSL 인증서  (0) 2020.04.28
(Network) HTTPS와 SSL 인증서(2) - 공개키  (0) 2020.04.28