반응형
OSI 7 계층과 TCP/IP 모델의 전송계층에서 사용되는 프로토콜인 TCP과 UDP의 가장 큰 차이점은 신뢰성에 있습니다.
TCP는 3-way handshake와 4-way handshake를 통해 신뢰성을 구축하여 클라이언트와 서버를 연결하여 데이터를 보내고 UDP는 오직 데이터만을 빠르게 보내어 신속성을 보장합니다.
이번 포스팅에서는 3-way handshake와 4-way handshake의 개념 및 동작원리에 대해 살펴보겠습니다.
3-way handshake
3-way handshake는 세션을 연결하기 위해서 3번의 일련의 과정을 통해서 수행됩니다.
- 클라이언트는 서버에게 연결을 요청하겠다는 요청(SYN) 패킷을 보냅니다. 이때 클라이언트는 서버에 SYN+ACK 응답을 기다리는 SYN-SENT 상태입니다.
- 서버는 클라이언트에게 요청(SYN)패킷을 받으면 요청을 수락하겠다는 응답(ACK) 패킷과 함께 자신도 연결을 요청하겠다는 요청(SYN) 패킷을 함께 보냅니.(SYN+ACK) 이때 서버는 클라이언트는 ACK 패킷을 기다리는 SYN-RECEIVED 상태입니다.
- 클라이언트는 SYN+ACK패킷을 받으면 요청을 수락하겠다는 응답(ACK)패킷을 보내며, ESTABLISHED 상태가 되고 서버는 응답(ACK) 패킷을 받으면 ESTABLISHED 상태가 됩니다.
위의 과정속에서 클라이언트가 서버에게 무수히 많은 요청(SYN) 패킷을 보내어 서버가 SYN-RECEIVED 상태를 유지하게 만들어 서버가 대기 중인 상태를 만드는 공격 방법을 SYN Flooding이라고 합니다.
4-way handshake
4-way handshake는 반대로 세션을 종료시키기 위해 4번의 과정을 통해 수행합니다.
- 클라이언트는 서버에게 종료(FIN)패킷을 보내고 자신은 FIN-WAIT-1 상태가 됩니다.
- 서버는 클라이언트에게 응답(ACK)패킷을응답(ACK) 패킷을 보내고 애플리케이션에 close()를 요청합니다. 이때 응답(ACK) 패킷을 받은 클라이언트는 FIN-WAIT-2 상태가 되고 서버는 CLOSE-WAIT 상태가 됩니다.
- 애플리케이션이 종료할 준비가 되면 클라이언트에 종료(FIN)패킷을 보내고 자신은 LAST-ACK 상태가 됩니다.
- 클라이언트는 종료(FIN)패킷을 받으면 TIME-WAIT 상태가 되고 응답(ACK) 패킷을 보내면 서버는 세션을 종료합니다.
마지막 과정에서 클라이언트는 종료하기 전에 FIN 패킷보다 늦게 도착하는 데이터가 있으면 유실되므로 TIME-WAIT 상태에서 일정 시간이 지나면 세션을 종료합니다.
반응형
'Programming > Web' 카테고리의 다른 글
세션(Session), 쿠키(Cookie), JWT(JSON Web Token) 의 개념 및 차이점 (0) | 2022.03.12 |
---|---|
Javascript, JQeury를 이용한 달력 만들기 (1) | 2021.10.16 |
CSS 프로그레스 바(progress bar) (0) | 2021.10.12 |
<button> 버튼 태그가 작동 안될 때 (0) | 2021.10.10 |
CSS 테두리만 있는 말풍선 그리기 (0) | 2021.10.10 |
댓글