2021. 8. 27. 22:00ㆍ네트워크
TCP에서 연결지향적인 특성을 갖게 해주는 과정, 방법이 바로 3 Way-Handshake 방식이다.
* TCP의 3-way Handshaking 과정
SYN 은 synchronize sequence numbers ACK는 acknowledgements 의 약자.
[STEP 1]
A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태 가 되는 것이다.
[STEP 2]
이때 서버는 Listen 상태로 포트 서비스가 가능한 상태여야 한다. (Closed :닫힌상태) B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.
[STEP 3]
A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.
위와 같은 방식으로 통신하는것이 신뢰성 있는 연결을 맺어 준다는 TCP의 3 Way handshake 방식이다.
이렇게 3번의 신호를 주고받는다 해서 3-way Handshaking 이다.
과정
1번에 seq넘버를 보내고
2번에 ack로 1번인 넘버에 1이 추가되었음을 알 수 있다.
동시에 서버역시 seq넘버를 보낸다
3번 클라이언트의 ack도 서버가 보낸 seq넘버에 1이 더해졌다
이런식으로 랜덤한 숫자를보내고 잘받았다는 ack로 1을 더해주는 방식을 사용한다.
이 3way handshaking의 취약점을 이용해 서버를 공격 하는 방법이 있는데 이를 SYN Flooding 이라한다
3way handshaking 과정중 서버는 2단계 에서 (클라이언트로 부터 요청을받고 응답을 하고난후 다시 클라이언트의 응답을 기다리는 상태) 이 연결을 메모리 공간인 백로그큐(Backlog Queue) 에 저장을 하고 클라이언트의 응답 즉 3단계를 기다리게 되고 일정 시간 (default 로 UNIX/LINUX : 60초 , Windows : 256초 , Apache : 300 초이며 수정 가능) 동안 응답이 안오면 연결을 초기화한다.
바로 이 점을 이용한 공격법이다.
악의적인 공격자가 실제로 존재하지 않는 클라이언트IP로 응답이 없는 연결을 초기화 하기전에 또 새로운 연결 즉 1단계 요청만 무수히 많이 보내어 백로그 큐를 포화 상태로 만들어 다른 사용자로 부터 더이상에 연결 요청을 못 받게 하는 공격 방법이다.
'네트워크' 카테고리의 다른 글
MPLS란 (0) | 2021.12.07 |
---|---|
tcp란 (0) | 2021.08.27 |
NAT(Network Address Translation) (0) | 2021.01.19 |
VRRP(HSRP) (0) | 2021.01.19 |
ARP는 매우매우 중요하다! (0) | 2020.10.21 |