아파치는 'Web Server'이고 톰캣은 'Web Application Server (WAS)'이다.
Web Server (Apache HTTP Server, 줄여서 Apache)
정적인 자료 처리
정적인 데이터 : HTML, CSS, 이미지 파일과 같이 내용이 변하지 않는 데이터
HW 로서의 웹서버 = 서버 컴퓨터
웹 서버 소프트웨어 + 정적인 파일들(HTML, CSS, JS 파일, 이미지 파일.. )이 저장된 컴퓨터
SW로서의 웹서버 = HTTP 서버
HTTP 서버 : URL(웹주소) 과 HTTP(프로토콜 주소)를 이해하는 소프트웨어
Apache = Apache HTTP Server = Web Server
Apache HTTP Server 는 오픈소스 소프트웨어 그룹인 아파치 소프트웨어 재단(ASF) 에서 만든 웹서버 프로그램
우리가 흔히 아파치 라고 하는 것은 Apache HTTP Server 를 지칭함
클라이언트의 HTTP 요청을 처리
브라우저(=클라이언트 PC)의 요청에 맞게 호스팅된 웹사이트의 콘텐츠를 브라우저에 전달
- 웹 서버에서 호스팅되는 파일이 필요한 브라우저가 HTTP 프로토콜을 이용해 웹서버에 파일 요청
- 요청이 올바른 웹서버(하드웨어)에 도착
- HTTP서버(소프트웨어)가 요청을 수락하고 요청된 문서를 찾는다.
- 찾은 파일을 HTTP를 통해 브라우저에 응답 (서버가 요청된 문서를 찾지 못하면 404 응답 반환)
웹 서버의 단점
서버에 모든 정적인 파일을 저장해놓고 클라이언트에서 요청이 올 때마다 서버에 저장된 파일을 보내주는 역할
→ 서버 자원의 한계가 생기고 리소스를 많이 차지하게 되는 단점이 있음
이를 보완하기 위해 생긴 게 동적으로 파일을 처리하는 WAS!
WAS (Tomcat)
동적인 자료 처리
동적인 데이터 : DB 연동, 비즈니스 로직 처리를 요구하는 데이터
기존 웹서버의 단점을 보완하기 위해 Servlet Container가 추가됨
1. 클라이언트에서 웹페이지를 요청
2. Servlet Container가 요청정보를 파악하여 실시간으로 페이지에 필요한 파일 생성
요청이 올 때마다 페이지에 필요한 정보를 그때 그때 생성하기 때문에 서버의 리소스 부하를 줄일 수 있음
Tomcat
컨테이너, 웹 컨테이너, 서블릿 컨테이너로도 불림
톰캣 또는 아파치 소프트웨어 재단(ASF)에서 후원하고 있으며, 오픈소스로 개발되고 있음
JAVA EE 기반으로 만들어졌으며, JSP 와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행
아파치 서버(웹서버)와의 차이점
DB 연결, 다른 응용프로그램과 상호작용 등 동적인 기능들을 사용할 수 있다.
따라서
Apache Tomcat = Web 서버 + WAS 서버
Apache 서버와 Tomcat 서버를 반드시 연동할 필요는 없음
프로젝트가 어떤 데이터 처리를 필요로 하냐에 따라 서버를 구축하면 됨
(내가 여태 JSP랑 스프링 배울 때, 스프링 플젝할 때 쓴 건 아파치 톰캣 9버전)
포트
논리적인 접속 장소
인터넷 프로토콜인 TCP/IP를 사용할 때는
클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용됨
네트워크 상에서 통신을 할 떄 IP를 토대로 해당 서버가 있는 컴퓨터에 접근
대부분의 경우 하나의 컴퓨터에는 여러 개의 서버가 실행될 수 있음
포트번호는 그중에 어느 서버에 접속해야 하는지 컴퓨터에게 알려줌
well-known-port
포트 번호는 컴퓨터에서 실행되고 있는 서버를 구분짓기 위한 16비트의 논리적 할당으로 0~65536이 존재
그중에 0~1023번까지는 이미 어떤 통신이 해당 포트를 사용할 것인지 정해져 있는데 이를 웰노운포트라고 함
ex.
http통신은 80번 포트, ssh통신은 22번 포트
컴퓨터에 있는 웹서버는 기본적(default)으로 80포트와 연결(listening) 돼 있음
(aws 원격 서버 처음 사용할 때도 80번 사용하고, 방화벽 인바운드 규칙에 80번 포트를 http로 추가 했었음)
80 포트는 디폴트 값이기 때문에 URL 접속시 생략 가능!
http://localhost.com 은 http://localhost.com:80 와 같음
http://localhost.com:8080에 접속하면 8080에 연결되는 것
그럼 8080은 언제 쓰나?
웹서버를 하나 더 사용하고 싶으면 80번 포트는 이미 기존 웹서버가 사용하고있기 떄문에 사용 불가
그러므로 well-known-port가 아닌 다른 포트에 연결하여 사용하는데 보통 관습적으로 8080포트에 연결해 사용한다.
보안
80 또는 8080 안전하지 않음 --> http
443 또는 8443 안전함 --> https (보안프로토콜
443 = 80의 보안 카운터 파트 / 8443 = 8080 같은 거
URL예시
http://www.naver.com:1234/path/to/resource?a=b&x=y 일 때
http:// 프로토콜
www.naver.com 호스트 (아니면 nn.nnn.nn.nnn 같은 IP가 오기도 함)
:1234 포트번호
/path/to/resource? 경로
a=b&x=y 쿼리
관련 포스트
아파치 톰캣 설치 방법 포스트
https://cinnamonlover.tistory.com/190
스프링 프로젝트 AWS 배포시 원격 서버에 아파치 톰캣 설치하는 법 포스트
https://cinnamonlover.tistory.com/478
참고
Apache? Tomcat?? 둘이 무슨 차이지?
학교에서 php를 하고, 회사에서 spring boot + jsp를 사용하면서아파치 톰캣을 자연스럽게 사용하게 되었다.하지만, 사용하는 동안 이게 도대체 무엇이길래 웹을 할 때 많은 곳에서 사용하는지?이게
velog.io
아파치(Apache)와 톰캣(Tomcat)의 차이점 및 이해(1)
이번 포스트에서는 아파치 톰캣에 대해 알아보도록 하겠습니다. 아파치 톰캣(Apache Tomcat)은 apache software 재단에서 개발한 서블릿 컨테이너만 있는 웹 애플리케이션 서버입니다. 톰캣의 정식 명칭
ssd0908.tistory.com
https://basemenks.tistory.com/263
Port란 무엇인가
1. 포트 포트(port)는 "논리적인 접속장소"이며, 특히 인터넷 프로토콜인 TCP/IP를 사용할 때에는 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다. 네트워
basemenks.tistory.com
'CS; Computer Science' 카테고리의 다른 글
데이터 단위 - 비바킬메기테 (0) | 2022.10.27 |
---|---|
개발 단계별 테스트 (단위, 통합, 시스템, 인수 테스트) (펌) (0) | 2022.09.14 |
공통모듈, 결합도, 응집도 설명 모음 (펌) (0) | 2022.09.08 |
컴파일 언어 / 인터프리터 언어 / 스크립트 언어 (미완성) (0) | 2022.05.18 |