Web server vs WAS

웹서버와 was를 알아보자


차이점부터 설명하면,

웹서버는 프로토콜을 이해하고 클라이언트와의 통신을 주로하고 웹서버로 들어온 요청을 웹어플리케이션 서버로 넘겨주는 역할을 하고,

WAS는 넘겨받은 요청을 내부적인 연산을처리후 출력할내용을 웹서버로 전달하면 웹서버는 다시 클라이언트로 전송하는 역할을 한다.


더 간단하게 표로 보자면 다음과 같다.


 

설 명 

 웹 서버

Web Client(웹 브라우저)에게 제공하는 컨텐츠를 제공하는 서버

정적인 HTML 혹은 jpeg나 gif같은 이미지를 HTTP프로토콜을 통해 웹 브라우저로 제공.

 WAS

Server단에서 어플리케이션을 동작할 수 있도록 지원

일반적으로 컨테이너라는 용어로 사용됨

Servlet, JSP, ASP, PHP 등의 프로그램으로 사용됨


하나씩 살펴보면,

웹 서버 (Web Server)란?

인터넷 상에서 웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지들을 보내주는 역할을 하는 프로그램이다. 간단히 말하면 HTTP 요청에 따라 서버에 저장되어 있는 적절한 웹페이지를 클라이언트에게 전달하는 것입니다. 웹 페이지 뿐만 아니라 그림, 스타일 시트, 자바스크립트도 해당한다.


주로 서버에 있는 리소스를 전달하는게 주된 기능이기도 하지만, 클라이언트로부터 콘텐츠를 받는 것도 웹 서버 기능에 포함한다.


웹 서버에는 다음과 같은 종류가 있다.

제품명

제작사

최신 버전

라이선스

아파치

Apache 재단

2.4.4

오픈소스

IIS

마이크로소프트

8.0

상용(윈도우 서버 사용시 무료)

nginx

NGINX, Inc

1.5.1

오픈소스

GWS

구글

 




웹 애플리케이션 서버 (Web Application Server/WAS)란?

인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어라고 한다. 줄여서 WAS라고 한다. Servlet, ASP, JSP, PHP 등의 웹 언어로 작성된 웹 애플리케이션을 서버단에서 실행된 후 실행 결과값을 사용자에게 넘겨주게 되고, 우리가 가진 브라우져가 결과를 해석해서 화면에 표시하는 순으로 동작을 한다.


웹 애플리케이션 서버는 다음과 같은 3가지 기본 기능을 가지고 있다. 

  - 프로그램 실행 환경과 데이터베이스 접속 기능을 제공

  - 여러 개의 트랜잭션을 관리

  - 업무를 처리하는 비즈니스 로직 수행


그러나 웹 애플리케이션 서버의 명확한 정의가 존재하지 않아 일부 기능만 가진 웹 애플리케이션 서버도 있습니다. 웹 애플리케이션 서버는 다음과 같은 종류들이 있다. 


제품명

제작사

최신 버전

라이선스

제우스

한국 티맥스소프트

7.C

상용

웹로직

미국 오라클

10.3.6

상용

웹스피어

미국 IBM

7.C

상용

레진

미국 Caucho

4.0.7

상용

글래스피시

미국 오라클

3.1.2.2

오픈소스(CDDL,GPL)

제이보스

미국 레드햇

7.1.0.CR1b

오픈소스(LGPL)

인터스테이지

일본 후지쯔

9.0.0

상용

아파치 톰캣

Apache 재단

7.0.41

오픈소스

레진(Resin)

Caucho

4.0

상용

제이런(Jrun)

Adobe

4.0

상용

Winstone Servlet Container

Rick Knowles

0.9.10

오픈소스

Jetty

Eclipse 프로젝트

3.0

오픈소스


웹 서버와 웹 어플리케이션 서버의 차이 및 구성

위에서 설명한 각 서버에서 보듯이 기능적인 차이로 구분을 지어 사용다. 웹 서버는 정적 데이터를 처리하는 용도로, 웹 애플리케이션 서버는 동적 데이터를 처리하는 용도로 사용한다. 하지만 톰캣의 경우처럼 웹 애플리케이션 서버에 웹 서버 기능을 포함된 서버 프로그램도 존재한다. 간단히 집에서 웹서버 기능이나 웹 애플리케이션을 이용하고자 한다면 톰캣만 설치해도 된다. 반대로 웹 서버에서 내부에 애플리케이션을 동작할 수 있는 기능을 내장하기도 한다. 간단한 웹 사이트를 구축한다면 웹 서버와 웹 애플리케이션 서버를 구분 지어 사용할 필요가 없고 톰캣 하나만 설치하면 된다.


웹 서버와 웹 애플리케이션 서버 구성

1. 스위치 - WAS

웹 사이트의 가장 기본적인 구성 환경이다. 모든 컨텐츠를 WAS에 모아 놓고, WAS가 웹서버와 웹 애플리케이션 서버 역할을 동시에 수행한다. 트래픽이 많지 않고, 간단한 웹 사이트 서비스를 제공하거나, 개발 및 테스트 시스템 구성시 활용하기도 한다. 


스위치로 로드밸런싱을 하기 때문에 쉽게 다른 WAS를 설치하여, 부하를 분산 시킬 수 있는 장점이 있는 반면에, WAS가 웹서버와 웹 애플리케이션 서버 역할을 동시에 수행하기 때문에 각각의 기능이 다른 기능 수행시 부하를 발생 시킬 수 있기 때문에 성능 저하가 나타날 수 있는 단점을 가지고 있다.


2. 스위치 - 웹 서버 - WAS

웹 서버와 WAS의 기능적 분류를 통해 효과적인 분산을 유도한 형태라고 한다. 정적인 데이터는 웹 서버가, 동적인 데이터는 WAS가 담당하게 함으로써 간단한 1번 구조보다 더 나은 성능을 발휘 한다. 


3. (스위치 - 웹 서버 - WAS) + 이미지를 위한 웹 서버

미디어의 발전으로 페이지는 네트워크 비중의 상당 부분을 차지한다. 그래서 고화질 이미지나 동영상 데이터 제공을 위한 웹서버를 따로 추가하여, 기존 네트워크 비중도 줄이고, 기존의 웹 서버와 WAS를 좀 더 효율적으로 사용할 수 있도록 하는 구성이다.


이러한 구조는 다양한 환경의 대한 네트워크 이슈를 좀 더 용이하게 대처할 수 있지만, 구조를 정확하게 이해하지 않았을 경우 개발 및 테스트에 많은 시간이 소요 된다.


4. 스위치 - 웹 서버 - WAS(프리젠테이션) - WAS(비즈니스) 

WAS단의 프로그램들이 많은 비중을 차지할 때, Presentation Logic을 담당하는 프로그램과 Business Logic을 담당하는 프로그램을 구분하여 각각의 WAS가 처리하도록 분리하는 형태이다. 


이러한 구조는 계층 구조의 부하를 적절히 분산할 수 있는 반면, 구조가 복잡해 유지보수가 어려워지는 단점을 가지고 있다.


'Develop > Web' 카테고리의 다른 글

서비스 port 리스트  (0) 2016.11.16
[HTML 속성] id와 name 속성의 차이  (0) 2016.11.03
Web - http method  (0) 2016.10.31

서비스 port 리스트


  ▲ 21번: FTP

  ▲ 22번: 보안 텔넷(SSH)

  ▲ 23번: 텔넷

  ▲ 25번: SMTP(메일 발송)

  ▲ 42번: 호스트 네임 서버

  ▲ 53번: 도메인 메인 서버

  ▲ 70번: 고퍼(Gopher)

  ▲ 79번: 핑거(Finger)

  ▲ 80번: 웹(HTTP)

  ▲ 88번: 커베로스 보안 규격

  ▲ 110번: POP3(메일 수신)

  ▲ 118, 156번: SQL 서비스

  ▲ 137~139번: NetBIOS(파일 서버)

  ▲ 161번: SNMP(네트워크 관리)

  ▲ 220번: IMAP3(일부 메일 서비스)

  ▲ 812, 987번: 버디버디

  ▲ 1214번: 카자

  ▲ 1720번: 넷미팅

  ▲ 1863, 6891~6900번: MSN 메신저

  ▲ 3389번: 터미널 서비스(원격 데스크톱)

  ▲ 4000번: ICQ

  ▲ 4000, 6112번: 배틀넷(디아블로, 스타크래스트, 워크래프트)

  ▲ 4662번: e동키(기본값)  ▲ 5500, 5800, 5900번: VNC

  ▲ 6257, 6699번: 윈MX(기본값)

  ▲ 6346번: 그누텔라

  ▲ 6699번: 냅스터

  ▲ 7674, 22321번: 소리바다 2

  ▲ 9292, 9999번: 구루구루

  ▲ 28290번: PDBOX

 

 

 

 

-  각종 P2P 및 서버 포트번호

 

1. eDonkey : tcp 4661, 4662, 4242, udp 4665, 4672

2. iMash : tcp 5000

3. BitTorrent : tcp 6881, 6889

4. 소리바다 : tcp 9001-4, udp 22321, 7674(검색), 7675(다운)

5. WinMX : TCP 6699, udp 6257

6. Direct -Connect : tcp 411-412, udp 411-412

7. KaZaA : tcp 1214

8. Gnutella : tcp 6346-6347, udp 6346-6347

9. 구루구루 : tcp 9292, 9999, 8282, 31200

10. 파일구리 : tcp 9493

11. Madster-Aimster : tcp 23172, 9922

12. HotLine : tcp 5497-8, 5500-5503, udp 5499

13. V-Share : tcp 8401번에서 8404까지 4개

14. Maniac : tcp 2000, 2222, udp 2010

15. Mirc : tcp 6667, 6665-6670, 7000

16. Shareshare : tcp 6399, 6777

17. Bluster : udp 41170

18. GoToMyPc : tcp 8200

19. Napster : tcp 6600-6699, 4444, 5555, 6666, 7777, 8888, 8875

20. 버디버디   tcp : 812,987

21. 윈엠프     tcp : 8000

23. 넷미팅     tcp : 1720

25. 원격데스크탑 연결 : TCP: 3389  udp : 3389

 

==========================================================================================

 

특정 포트번호 죽이는 건

그 포트를 오픈하고 있는 프로그램을 죽여야한다.


일단 443 포트와 80 포트는 apache와 같은 웹서버가 사용하는 포트이다.

(이 확인은 /etc/service 파일을 열어 보시면 

각 포트가 어떤 프로토콜에 의해 사용되는지 보실 수 있다)

22 포트는 ssh가 사용한다.


포트를 사용하는 프로그램을 확인하는 방법은

lsof -i TCP:port 번호 하시면(ex: lsof -i TCP:22)

그 포트를 사용하는 프로그램명이 나온다.


간단히 프로그램을 죽이는 방법은

fuser -k -n tcp port번호 하면 된다.(ex: fuser -k -n tcp 22)


나중에 다시 살리는건 프로그램을 다시 구동하면 된다.


리눅스니깐

/etc/rc.d/init.d/httpd start 하시면 80포트와 443 포트가 다시 살고

/etc/rc.d/init.d/sshd start 하시면 22 포트가 다시 산다.

역으로 

/etc/rc.d/init.d/httpd stop 하시면 역시 httpd 를 죽일 수 있다.

 

------------------------------------------------------------------

/sbin/iptables -A INPUT -p tcp --dport 443 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 22 -j DROP

/sbin/iptables -A INPUT -p tcp --dport 80 -j DROP



443은 https

22은 ssh

80은 http 포트이다.

'Develop > Web' 카테고리의 다른 글

Web server vs WAS  (0) 2016.12.20
[HTML 속성] id와 name 속성의 차이  (0) 2016.11.03
Web - http method  (0) 2016.10.31

[HTML 속성] id와 name 속성의 차이

 

구분

설명

변수 중복 여부

id

 웹페이지 안에서만 사용

불가

name

 Action에 해당하는 페이지로 전달하는 파라미터로 사용

가능

 

 

id와 name 예제

'Develop > Web' 카테고리의 다른 글

Web server vs WAS  (0) 2016.12.20
서비스 port 리스트  (0) 2016.11.16
Web - http method  (0) 2016.10.31

http 메소드 정리


  - Get : URI(URL)가 가진 정보를 검색하기 위해 서버 측에 요청하는형태


  - post : 요청 URI(URL)에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트(ASP, PHP, JSP 등) 혹은 CGI 프로그램으로 구성되고 Form Action과 함께 전송되는데, 이때 헤더 정보에 포함되지 않고 데이터 부분에 요청 정보가 들어가게 됨


  - Head : GET과 유사한 방식이나 웹 서버에서 헤더 정보 이외에는 어떤 데이터도 보내지 않음


  - Option : 해당 메소드를 통해 시스템에서 지원되는 메소드 종류를 확인할 수 있음


  - Put : POST와 유사한 전송 구조를 가지기 때문에 헤더 이외에 메시지(데이터)가 함께 전송된다. 원격지 서버에 지정한 콘텐츠를 저장하기 위해 사용되며 홈페이지 변조에 많이 악용되고 있다.


  - Delete : 원격지 웹 서버에 파일을 삭제하기 위해 사용되며 PUT과는 반대 개념의 메소드 


  - Trace : 원격지 서버에 Loopback(루프백) 메시지를 호출하기 위해 사용


  - Connect :  웹 서버에 프락시 기능을 요청할 때 사용



'Develop > Web' 카테고리의 다른 글

Web server vs WAS  (0) 2016.12.20
서비스 port 리스트  (0) 2016.11.16
[HTML 속성] id와 name 속성의 차이  (0) 2016.11.03

+ Recent posts