전송계층의 두가지 프로토콜
OSI의 7가지 계층에서 4계층인 전송계층에는 TCP와 UDP라는 두가지 프로토콜이 있습니다. TCP/IP계층에서는 3계층이지만 전송계층이라는 것에는 차이가 없습니다. 이 계층의 프로토콜은 데이터가 전송되는 것에 관여하는 규칙을 세우는 것이 목표입니다. 따라서 이 두 가지 프로토콜은 데이터가 전송되는 방식에 대해서 하나는 안전하게, 다른 하나는 빠르게 보내는 것을 목표로 하는 차이점을 가지고 있으나, 둘 다 데이터가 전송되는 것에 대한 규칙을 정한다는 것이 공통점입니다. 네트워크에서 IP 뒤에 Port라는 것이 있습니다. 하나의 IP에 여러개의 Port가 있을 수 있습니다. 그리고 하나의 Port에도 TCP와 UDP라는 두가지 프로토콜을 받을 수 있습니다.
TCP의 개념과 특징
TCP는 'Transmission Control Protocol'의 약자로, 전송계층에서 사용되는 프로토콜의 일종입니다. 전송계층에는 두 가지 방식이 있습니다. 하나는 안전하게, 다른 하나는 빠르게 라고 했습니다. TCP는 안전하게 보내기 위한 '전송 규칙'입니다. 전송을 보내고 받는 입장에서 서로 데이터가 잘 보내질 수 있는 상황을 만들고 그 뒤에 데이터를 보내고 보내는 과정에서도 잘 받았는지 확인하는 매우 꼼꼼한 방식으로 보내는 것입니다. 택배기사로 치면 출발할 때 출발한다고 말해주고, 도착하면 잘 도착했다고 사진도 찍어주고, 잘 받았는지 확인과 싸인까지 해주는 매우 꼼꼼하고 성실한 택배기사입니다. 다만, 그렇게 하면서 하나씩 일일히 확인하고 체크하고 보내다보니 느려지기는 합니다. 그냥 적당히 빨리 보내줬으면 하는 사람에게는 오히려 불편할 수도 있겠죠? TCP는 그런 전송 방식을 규정해놓은 것입니다. 가장 중요한 특징은 3-Way-Handshake라는 것을 통해서 송신자와 수신자간에 연결을 먼저 확인하고 보낸다는 것입니다. 택배기사가 먼저 연락을 주고 연락을 받지 않으면 택배를 안보내 주는 것이라고 생각해보면 좋습니다.
TCP의 사용 예제
TCP를 가장 많이 사용하는 경우라고 한다면 아무래도 우리가 쓰는 인터넷 환경이라고 할 수 있습니다. 지금이야 속도가 빠르니까 그다지 느리다고 느껴지지 않지만, 이 HTTP라고 하는 프로토콜은 TCP 프로토콜을 기본으로 합니다. 따라서, 웹페이지가 정확하게 전달이 되고 에러가 잘 나지 않는 것입니다. 서버가 잘 작동하고 안하고에 따라서 연결 여부가 결정되기도 합니다. 간혹 UDP에서 조금 바꿔서 독자적인 프로토콜을 만들어서 쓰는 경우도 있기는 하지만, 거의 대부분은 TCP 프로토콜을 기반으로 합니다. 'http = tcp' 이렇게 생각을 해도 크게 틀리지는 않습니다. 즉, 속도를 크게 중요하게 여기지 않는다면 대부분의 인터넷 서비스는 TCP를 기반으로 하는 것이 많습니다. 하지만 요즘에는 UDP를 통해서 자체적인 프로토콜을 통해 빠르면서도 충분히 신뢰성있는 전송을 하는 방식을 고안해내는 경우가 많아서 조금씩 사용하는 경우가 줄어들고 있다고도 생각할 수 있습니다.
UDP의 개념과 특징
UDP는 'User Datagram Protocol'의 약자로, 전송계층에서 사용되는 프로토콜입니다. UDP는 매우 간단하고 심플한 프로토콜입니다. 택배기사로 비유하면, 보낸다고 통보해놓고 툭 던져놓고 알아서 가져가라고 하는 쿨한 택배기사님입니다. 수신자가 잘 받았는지 안받았는지는 크게 관심은 없지만, 혹시라도 못받았다고 연락이 온다면 택배회사의 방침에 따라서 다시 똑같은걸 보내주는 식으로 쿨하게 대처하기도 합니다. TCP가 줄이 쳐져있는 공책이라면, UDP는 정말 하얀 도화지 같은 공책입니다. 따라서, 개발자는 이 UDP에 기능을 추가해서 독자적인 프로토콜을 만들어서 쓸 수도 있습니다. 이런 개방성과 가능성 때문에 TCP보다 UDP를 선호하는 경우가 많습니다. 다시 정리하자면, UDP는 빠르고, 심플하지만 기본적으로 TCP에 비해 신뢰성이 부족하고 연결도 제공하지 않는 프로토콜입니다.
UDP의 사용 예제
UDP는 사실 사용할 수 있는 범위가 매우 넓습니다. 그냥 그대로 쓰기도 하고, 뭔가 추가해서 쓸 수 있기 때문에 사용자가 원한다면 어떻게든 쓸 수 있습니다. 매우 간단한 프로토콜이고 빠르기 때문에 게임 통신에서도 많이 사용합니다. TCP로 온라인 게임을 구현한다고 해보세요. 특히 액션게임이나 실시간 전략 게임같은 것을 TCP로 한다고 한다면 느려터져서 못해먹겠죠? 그 외에도 TCP만큼의 빡빡한 규칙은 필요없다라고 판단된다면 UDP에서 적당히 필요한 기능만을 구현해서 사용하기도 합니다. 구글에서 고안한 QUIC라는 프로토콜도 UDP를 기반으로 한 TCP의 대체 프로토콜입니다. 그렇게 보면 전송 계층에는 TCP와 UDP만 있다고 할 수는 어렵겠네요.
둘의 공통점과 차이점
둘 다 전송계층에 속하고, 데이터를 전송하기 위한 규칙을 세운다는 공통점이 있습니다. 하지만 차이점은, TCP는 3-Way-Handshake를 통해 연결과 신뢰성을 중요하게 여기는 반면, UDP는 그런 것 없이 간단하고 빠르게 보내는 것이 다릅니다. 이 두가지 방식에 있어서 장단점이 있으며 기존에는 TCP를 많이 썼지만, UDP의 가능성이 크기 때문에 UDP를 기반으로 새로운 프로토콜을 만들거나 하는 경우도 많다는 것을 기억하면 좋겠습니다.
'💻Information Security' 카테고리의 다른 글
Segfault Web Server VM 설치 및 실행법 (0) | 2024.02.04 |
---|---|
SlowLoris(늘보로리스)와 RUDY DDoS에 대해 (0) | 2024.02.01 |
XSS와 CSRF의 차이와 구분 (0) | 2024.02.01 |
Burp Suite 사용법 (0) | 2024.01.30 |
XSS 공격 시나리오 (1) | 2024.01.29 |