"톰캣"의 두 판 사이의 차이
16번째 줄: | 16번째 줄: | ||
=== 아파치 톰캣이라 불리는 이유 === | === 아파치 톰캣이라 불리는 이유 === | ||
톰캣에서 [[아파치]]의 기능(웹서비스데몬, Httpd<ref name="Httpd"> HTTP 데몬(HTTP Daemon)의 준말으로, 웹 서버의 백그라운드에서 실행되어, 들어오는 서버 요청을 대기하는 소프트웨어 프로그램이다.</ref>)를 포함하고 있기 때문에. 그렇지만 톰캣이 [[아파치]]의 모든 기능을 포함하고 있는 것은 아니며, 보통 [[아파치]] 톰캣이라 부를때 톰캣 앞에 [[아파치]]가 붙는 이유는 많은 개발자가 어플리케이션 서버를 톰캣으로 이용하는 경우, 스태틱 파일인 [[CSS]], [[JS]], [[HTML]], 이미지는 톰캣앞에 [[아파치]] 웹 서버인 Httped를 두어 처리하며, 외부 요청은 Apache Httpd<ref name="Httpd"></ref>가 받고, 톰캣 내에서 처리할 자바 애플리케이션만 톰캣으로 다시 전달해서 처리하고 그 외의 리소스는 Apache Httpd<ref name="Httpd"></ref>가 직접 처리하게 만들어야 성능이 좋다고 생각하였기에 [[아파치]]가 앞에 붙게 되었다. | 톰캣에서 [[아파치]]의 기능(웹서비스데몬, Httpd<ref name="Httpd"> HTTP 데몬(HTTP Daemon)의 준말으로, 웹 서버의 백그라운드에서 실행되어, 들어오는 서버 요청을 대기하는 소프트웨어 프로그램이다.</ref>)를 포함하고 있기 때문에. 그렇지만 톰캣이 [[아파치]]의 모든 기능을 포함하고 있는 것은 아니며, 보통 [[아파치]] 톰캣이라 부를때 톰캣 앞에 [[아파치]]가 붙는 이유는 많은 개발자가 어플리케이션 서버를 톰캣으로 이용하는 경우, 스태틱 파일인 [[CSS]], [[JS]], [[HTML]], 이미지는 톰캣앞에 [[아파치]] 웹 서버인 Httped를 두어 처리하며, 외부 요청은 Apache Httpd<ref name="Httpd"></ref>가 받고, 톰캣 내에서 처리할 자바 애플리케이션만 톰캣으로 다시 전달해서 처리하고 그 외의 리소스는 Apache Httpd<ref name="Httpd"></ref>가 직접 처리하게 만들어야 성능이 좋다고 생각하였기에 [[아파치]]가 앞에 붙게 되었다. | ||
+ | == 특징 == | ||
+ | * Tomcat은 JSP 환경을 포함하고 있는 [[서블릿]](Servlet) 컨테이너이다. | ||
+ | * Servlet 컨테이너는 사용자 입장에서 서블릿(Servlet)을 유지하고 호출하여 실행하는 쉘이다. | ||
+ | * Tomcat은 크게 3가지로 컨테이너로 구분한다. | ||
+ | === Stand-alone servlet containers === | ||
+ | 내장된 웹서버의 기능을 사용하는 것이며, 기능 면에서 자바 웹서버의 부분인 서블릿 컨테이너와 자바 근간의 웹 서버를 사용한다. | ||
+ | |||
+ | === In-process servlet containers === | ||
+ | 서블릿 컨테이너는 웹서버 플러그인과 자바 컨테이너를 구현하며, 웹서버 플러그인은 웹서버의 주소 공간 내에 JVM을 열고 그 안에 자바 컨테이너가 실행되도록 한다. 다중 스레드의 단일 프로세스 서버에 적당하고 퍼포먼스도 좋긴 하나 확장성의 한계가 있다. | ||
+ | |||
+ | === Out-of-process servlet containers === | ||
+ | 웹서버 플러그인과 웹서버의 외부 JVM에서 실행하는 JAVA 컨테이너 구현하였으며, 웹서버 플러그인과 자바 컨테이너 JVM은 몇몇 IPC<ref>TCP/IP 소켓</ref>를 사용해서 통신 Out-of-process 엔진의 반응 시간은 in-process만큼 좋지 않지만, out-of-process 엔진은 확장성과 안전성 면은 In-process보다 좋다. | ||
== 현황 == | == 현황 == |
2019년 7월 24일 (수) 16:56 판
톰캣(Tomcat)은 아파치재단에서 제공하는 오픈소스 웹 애플리케이션 서버(WAS)이다. 정식 명칭은 아파치 톰캣(Apache Tomcat)이다. 톰캣(Tomcat)이란 수고양이를 의미한다. 아파치 톰캣 소프트웨어는 개방적이고 참여적인 환경에서 개발되었으며 Apache License 버전 2로 배포된다. 아파치 톰캣 프로젝트는 전 세계의 최고의 개발자들과 협력하기 위한 것이다. 참여 규칙은 이곳에 나와 있으며, 아파치 톰캣 소프트웨어는 다양한 산업 및 조직에서 수많은 대규모 미션 크리티컬 웹 애플리케이션을 지원하고 있다. 이 사용자 중 일부와 내용은 PoweredBy 페이지에 나열되어 있다.
목차
개요
흔히 사용하는 웹페이지는 아파치와 톰캣으로 이루어져 있다. 리눅스 서버를 만들거나 웹서버를 만들다 보면, 아파치 톰캣을 설치하라고 하며, 아파치(Apache)와 톰캣(Tomcat)의 기능과 차이를 아는 것 또한 중요하며, 동적(dynamic)인 웹을 만들기 위한 웹 컨테이너, 서블릿 컨테이너라고 불리며, 웹서버에서 정적으로 처리해야 할 데이터를 제외한 JSP, ASP, PHP 등은 웹 컨테이너(톰캣)에 전달한다. 톰캣을 사용하면 동적인 데이터 처리가 가능하며, DB 연결, 데이터 조작, 다른 응용프로그램과 상호 작용이 가능하다. 8080포트로 처리된다. 톰캣이 아파치 기능을 일부 가져오기 때문에 합쳐 부른다. WAS(Web Application Server)
종류
아파치
아파치(Apache) 소프트웨어 재단에서 오픈 소스로 라이선스에 따라 배포되어 자신의 마음대로 사용할 수 있는 Http 웹 서버이다. 오픈소스 커뮤니티에서 만든 서버를 통틀어 아파치 서버로 불러온다. 웹서버는 클라이언트의 요청을 기다리고, 요청에 대한 데이터를 만들어서 응답하는 역할을 한다. 이때의 데이터는 정적인 데이터인 html, css, 이미지 등으로 한정된다.
톰캣
가장 일반적이면서, 많이 사용되고있는 WAS(웹 애플리케이션 서버)이다.WAS는 컨테이너, 웹 컨테이너, 서블릿 컨테이너라고도 부르며, 웹서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하며 다양한 역할을 수행한다. 웹 컨테이너는 클라이언트의 요청이 있을 때 내부 프로그램을 통해 결과를 만들어내고 이곳을 다시 클라이언트에게 돌려주는 역할을 한다.
차이점
그 이유는 목적이 다르기 때문이며 웹 서버는 정적인 데이터를 처리하는 서버이다. 이미지나 단순 html 파일과 같은 리소스를 제공하는 서버는 웹 서버를 통하면 WAS를 이용하는 것보다 빠르고 안정적이다. WAS는 동적인 데이터를 처리하는 서버이며 DB와 연결되어 데이터를 주고받거나 프로그램으로 데이터 조작이 필요한 경우에는 WAS를 활용해야 한다.
아파치 톰캣이라 불리는 이유
톰캣에서 아파치의 기능(웹서비스데몬, Httpd[1])를 포함하고 있기 때문에. 그렇지만 톰캣이 아파치의 모든 기능을 포함하고 있는 것은 아니며, 보통 아파치 톰캣이라 부를때 톰캣 앞에 아파치가 붙는 이유는 많은 개발자가 어플리케이션 서버를 톰캣으로 이용하는 경우, 스태틱 파일인 CSS, JS, HTML, 이미지는 톰캣앞에 아파치 웹 서버인 Httped를 두어 처리하며, 외부 요청은 Apache Httpd[1]가 받고, 톰캣 내에서 처리할 자바 애플리케이션만 톰캣으로 다시 전달해서 처리하고 그 외의 리소스는 Apache Httpd[1]가 직접 처리하게 만들어야 성능이 좋다고 생각하였기에 아파치가 앞에 붙게 되었다.
특징
- Tomcat은 JSP 환경을 포함하고 있는 서블릿(Servlet) 컨테이너이다.
- Servlet 컨테이너는 사용자 입장에서 서블릿(Servlet)을 유지하고 호출하여 실행하는 쉘이다.
- Tomcat은 크게 3가지로 컨테이너로 구분한다.
Stand-alone servlet containers
내장된 웹서버의 기능을 사용하는 것이며, 기능 면에서 자바 웹서버의 부분인 서블릿 컨테이너와 자바 근간의 웹 서버를 사용한다.
In-process servlet containers
서블릿 컨테이너는 웹서버 플러그인과 자바 컨테이너를 구현하며, 웹서버 플러그인은 웹서버의 주소 공간 내에 JVM을 열고 그 안에 자바 컨테이너가 실행되도록 한다. 다중 스레드의 단일 프로세스 서버에 적당하고 퍼포먼스도 좋긴 하나 확장성의 한계가 있다.
Out-of-process servlet containers
웹서버 플러그인과 웹서버의 외부 JVM에서 실행하는 JAVA 컨테이너 구현하였으며, 웹서버 플러그인과 자바 컨테이너 JVM은 몇몇 IPC[2]를 사용해서 통신 Out-of-process 엔진의 반응 시간은 in-process만큼 좋지 않지만, out-of-process 엔진은 확장성과 안전성 면은 In-process보다 좋다.
현황
이터널 블루(EternalBlue, ETERNALBLUE)[3] 라고 알려진 익스폴로잇(exploit)[4]의 새로운 버전 하나가 중국의 기업 수백 곳을 타격하고 있으며, 이러한 캠패인은 암호화폐를 노리는 크림토재킹을 위주로 한 공격으로, 비피(Beapy)라고 불린다. 비피는 웹서버를 노리기도 하며, 웹서버를 호스트로 활용하기 때문이다. 초기 미미캐츠(Mimikatz) 모듈을 사용하여 크리덴셜을 훔치기도 하며, 아파치 톰캣과 오라클 웹 로직 서버를 집중적으로 공략하였다. 이러한 내용은 차후 더 위험한 공격으로 발전하는 가능성을 내포하고 있다. 암호화폐 채굴인 만큼 데이터가 밖으로 새 나가거나 유출될 걱정은 없는 게 정상이지만, 암호화폐 채굴은 시스템과 네트워크의 성능과 속도를 크게 저하함으로써 시간과 자원을 낭비하게 하며, 비피의 경우는 크리덴셜까지 훔치기 때문에 다른 암호화폐 채굴 공격보다 더 위험하고 전문가는 말한다. 방지하기 위해 보안솔루션을 설치하고, 직원들을 교육해야 하며, 회사 차원에서 시스템 패치를 점검하는 것이 중요하다고 알렸다.
각주
참고 자료
- 톰캣 공식홈페이지 - http://tomcat.apache.org/
- Sungbin.k, 〈WAS와 웹서버의 차이 – 톰캣과 아파치를 구별하지 못하는 사람을 위해〉, 《BLOG FOR ME》, 2015-02-15
- dongdong_, 〈아파치와 톰캣의 차이〉, 《tistory》, 2016-07-02
- Noon Gam, 〈아파치 톰캣이란 ?〉, 《DISQUS 블로그》, 2018-07-09
- 문가용 기자, 〈NSA의 해킹 툴 활용한 대규모 암호화폐 채굴 캠페인 주의〉, 《보안뉴스》, 2019-04-26
- httpd 위키백과 문서 - https://ko.wikipedia.org/wiki/Httpd
같이 보기