본문 바로가기

CS; Computer Science

아파치와 톰캣의 차이 (Web Server 와 WAS의 차이) + 포트 번호

 

아파치는 '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)의 요청에 맞게 호스팅된 웹사이트의 콘텐츠를 브라우저에 전달

 

 

  1. 웹 서버에서 호스팅되는 파일이 필요한 브라우저가 HTTP 프로토콜을 이용해 웹서버에 파일 요청
  2. 요청이 올바른 웹서버(하드웨어)에 도착
  3. HTTP서버(소프트웨어)가 요청을 수락하고 요청된 문서를 찾는다.
  4. 찾은 파일을 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

 


참고

https://velog.io/@kdhyo/Apache-Tomcat-%EB%91%98%EC%9D%B4-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EC%A7%80

 

Apache? Tomcat?? 둘이 무슨 차이지?

학교에서 php를 하고, 회사에서 spring boot + jsp를 사용하면서아파치 톰캣을 자연스럽게 사용하게 되었다.하지만, 사용하는 동안 이게 도대체 무엇이길래 웹을 할 때 많은 곳에서 사용하는지?이게

velog.io

 

https://ssd0908.tistory.com/entry/%EC%95%84%ED%8C%8C%EC%B9%98Apache%EC%99%80-%ED%86%B0%EC%BA%A3Tomcat%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EB%B0%8F-%EC%9D%B4%ED%95%B41

 

아파치(Apache)와 톰캣(Tomcat)의 차이점 및 이해(1)

이번 포스트에서는 아파치 톰캣에 대해 알아보도록 하겠습니다. 아파치 톰캣(Apache Tomcat)은 apache software 재단에서 개발한 서블릿 컨테이너만 있는 웹 애플리케이션 서버입니다. 톰캣의 정식 명칭

ssd0908.tistory.com

 

https://basemenks.tistory.com/263

 

Port란 무엇인가

1. 포트 포트(port)는 "논리적인 접속장소"이며, 특히 인터넷 프로토콜인 TCP/IP를 사용할 때에는 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다. 네트워

basemenks.tistory.com