TCP는 Transaction Control Protocol의 약자로 TCP와 UDP는 프로토콜상 IP 상위계층으로 전송계층에 속하지만 TCP와 UDP 차이점은 TCP는 신뢰성을 보장하고 UDP는 신뢰성을 보장하지 않는다는 특징이 있습니다. 또한 TCP는 일대일 통신인 반면에 UDP는 일대 다의 통신에 이용됩니다. TCP는 클라이언트와 서버가 데이터를 교환하기 전에 서로 TCP 세션을 확립해야 합니다. 따라서 TCP 프로토콜은 Connection-oriented 프로토콜입니다. 오늘은 TCP 3 way 핸드쉐이크 방식에 대해 알아보겠습니다.
TCP 3way 핸드쉐이크
클라이언트는 서버와의 connection을 연결하기 위해 SYN flag를 On 시킨 후 패킷 초기 순서 번호[initial sequence number(ISN)]를 sequence number로 하여 패킷을 서버로 전송합니다. (SYN flag를 ON 시킴), 이 과정을 Active-open이라고 합니다. 패킷을 전송받은 서버는 SYN에 대한 응답으로 클라이언트에서 보내온 sequence 번호에 +1을 더한 값을 ACK number로 하고 자신의 초기 순서 번호(ISN) sequence number를 클라이언트로 보냅니다. (SYN flag와 ACK flag를 ON 시킴) 클라이언트는 서버의 ACK 패킷을 잘 받았다는 신호로 서버에서 받은 SYN 번호에 +1을 더한 값을 ACK 번호로 하여 서버로 전송합니다(ACK flag를 ON 시킴). 위 과정이 TCP 3 way-handshaking이며 이 과정을 마친 후 실제 데이터를 전송합니다. 위의 그림과 같이 처음 SYN 패킷을 보낸 client 쪽을 active-open을 실행한다고 말하고 처음 SYN을 받은 후 SYN, ACK 패킷을 보낸 서버를 passive open을 실행한다고 말합니다. 이러한 TCP 3 way 핸드쉐이크 때문에 DDoS는 구조적으로 사라질 수 없습니다. 그래서 디도스 사건이 일어나는 이유는 TCP/IP 설계상에 문제라고 이야기하는 부분도 이와 같은 설계 때문입니다. 즉 과도한 SYN을 클라이언트에서 서버로 요청하게 되면 서버는 이에 대한 ACK를 하느라 실제 서비스해야 하는 웹서비스가 제대로 동작하지 않는 형태가 디도스 공격이 되는 것입니다.
TCP 프로토콜의 신뢰성 설립 방법
TCP는 세그먼트를 전송할 때 타이머를 설정하여 전송한 후 수신자로부터 ACK(수신확인)를 기다립니다. 주어진 시간 내에 ACK가 되돌아오지 않으면 TCP는 해당 세그먼트를 재전송합니다. 그다음으로 TCP는 상대방으로 데이터를 받으면 해당 세그먼트를 잘 수신한 것을 상대방에게 알려 주는 ACK 신호를 되돌려 보냅니다. 이후 TCP 헤더와 데이터에 대해 체크썸(Checksum)을 사용합니다. 만약 전송 도중 데이터에 오류가 발생할 경우 수신 측에서 체크썸 값을 확인하여 데이터에 오류가 있는 것을 알 수 있고 오류가 확인되면 해당 패킷을 버리고 ACK는 보내지 않습니다. IP 패킷은 전송 과정 중에 동일한 경로를 통하지 않을 수 있으며, 송신자 측에서 발송한 패킷의 순서대로 도착하지 않을 수 있습니다. TCP는 이러한 경우 패킷의 순서를 다시 재조합하여 응용프로그램으로 전달을 하고 윈도 사이즈를 상대방에게 알려줌으로써 데이터의 흐름을 제어할 수 있습니다.
요약
오늘은 TCP 3 way 핸드쉐이크에 대해 알아보았습니다. 일반적으로 TCP는 UDP와 더불어 네트워크에서는 꼭 알아두어야 되는 프로토콜로써, 정보보안을 공부하는 분들에게 있어 네트워크 이해 중에 TCP 프로토콜과 UDP 프로토콜의 이해는 필수입니다. 다음에는 UDP 프로토콜의 특징 및 방식에 대해서 알아보겠지만, TCP 프로토콜에 대한 이해를 금일 포스팅을 통해 숙지하시길 바랍니다.
'컴퓨터학개론' 카테고리의 다른 글
DNS 구성 및 서버유형 (0) | 2022.02.16 |
---|---|
UDP와 유니캐스트, 멀티캐스트, 브로드캐스트 알아보기 (0) | 2022.02.14 |
ICMP 프로토콜 기능 및 PING 프로그램 알아보기 (0) | 2022.02.11 |
ARP 프로토콜 및 구조 총정리 (0) | 2022.02.10 |
서브넷팅 설계 및 활용 (0) | 2022.02.08 |
댓글