Browser에서의Web, Server

2020-01-14

해당 Post는 Browser에서의Web, Server에 대해 정리한 파일이다.


Web Server란?

웹 서버는 소프트웨어(Software)를 보통 말하지만, 웹 서버 소프트웨어가 동작하는 컴퓨터를 말합니다.
웹 서버의 가장 중요한 기능은 클라이언트(Client)가 요청하는 HTML 문서나 각종 리소스(Resource)를 전달하는 것입니다.
웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장된 정적(static)인 데이터이거나 동적인 결과가 될 수 있습니다.

웹 서버 소프트웨어의 종류

가장 많이 사용하는 웹 서버는 Apache, Nginx, Microsoft IIS

Apache웹 서버는 Apache Software Foundation에서 개발한 웹서버로 오픈소스 소프트웨어(Open-source Software)이며,
거의 대부분 운영체제에서 설치 및 사용을 할 수 있습니다.
Nginx는 차세대 웹서버로 불리며 더 적은 자원으로 더 빠르게 데이터를 서비스하는 것을 목적으로 만들어진 서버이며
Apache웹 서버와 마찬가지로 오픈소스 소프트웨어입니다.

추가 질문(해당 내용은 저의 주관적인 생각이 포함 되어 있습니다.)

HTML 파일에 JavaScript코드를 포함시킬 때, 이런식으로 바디태그 안쪽에 맨 뒤에 위치시키는게 제일 보편적이지만,
강의 동영상에서처럼 바디 태그 뒤에 위치시켜도 같은 화면 렌더링 동작에서 차이가 없는 것으로 보입니다.

그렇다면 어떤 차이점 때문에 바디 태그 안으로 넣는걸까요?

body 태그 밖에서 동작시켜도 잘 동작하는 브라우저도 있으나 body 태그 밖의 요소는 렌더링에 반영하지 않는 브라우저도 있다고 합니다!

아파치와 톰캣의 차이점은?

=> 웹서버와 웹애플리케이션의 차이
WAS(톰캣)만 쓰지 않고 아파치를 쓰는 이유는? 목적이 다르다. (웹 컨테이너의 유무)
웹서버는 정적인 데이터를 처리하는 서버. 이미지나 단순 HTML을 처리하는 서버라면 웹 서버가 적당하며 빠르고 안정적이다.
WAS는 동적인 데이터를 처리하는 서버. DB연결, 데이터 조작등과 같은 처리는 WAS를 활용해야 한다.
아파치(80 포트) , 톰캣(8080 포트)

1. 아파치

아파치 : 아파치 소프트웨어 재단
아파치 서버 : ‘open source’ 라이선스에 따라 배포되어 마음대로 쓸 수 있는 Http 웹 서버
이곳 오픈 소스 커뮤니티에서 만든 서버를 통 틀어 아파치 서버로 불리운다 (톰캣 이외에 다양한 웹 컨테이너 존재)

웹 서버 : 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할을 한다.
이때 데이터는 정적인 데이터(html, css, 이미지등)로 한정된다.

2. 톰캣

아파치 톰캣 : 현재 가장 일반적이고 많이 사용되는 WAS(웹 애플리케이션 서버)

WAS (web application server) (컨테이너, 웹 컨테이너, 서블릿 컨테이너라고도 부름) :
웹 서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행한다.
웹 컨테이너는 클라이언트의 요청이 있을 때 내부 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이언트에게 돌려주는 역할을 한다.
(JSP와 서블릿 처리, 서블릿의 수명 주기 관리, 요청 URL을 서블릿 코드로 매핑, HTTP 요청 수신 및 응답, 필터 체인 관리 등)

추가 질문2

네이버, 구글과 같은 검색을 할 수 있는 사이트에서는 검색어를 입력하면 검색어가 포함된 웹 페이지 목록을 보여줍니다.

그렇다면 네이버와 구글은 검색어가 포함된 웹페이지를 어떻게 알 수 있었을까요?

웹 크롤러가 수많은 사이트를 돌아다니면서 방문한 사이트의 복사본을 생성하여 정보를 수집하고 이를 정리하여 데이터베이스화합니다. 네이버, 구글 등의 검색엔진은 관련된 정보를 색인해둔 데이터베이스에서 검색하여 결과를 보여줍니다.

웹 크롤러는 웹 로봇, 웹 스파이더 등으로 다양하게 불리며 특정 형태의 정보(스팸을 위한 이메일 수집)를 수집하는데도 사용됩니다.

추가++

톰캣은 버전마다 JSP Spec, EL Spec, Servlet Spec, JASPIC Spec, Supported Java versions이 다르다.

궁금해서 찾아본 참고자료)

  • Servlet: 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양. Java로 작성된다.
  • JSP(JavaServer Pages): HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어. 실행시에는 자바 서블릿으로 변환된 후 실행되므로 서블릿과 거의 유사하지만, 서블릿과 달리 HTML 표준에 따라 작성되어 웹 디자인에 용이한 이점이 있다고 함.(ex: 서블릿을 활용하면 문구 출력할 때 Java 언어를 써서 sysoutpritnln을 써야해서 불편한데, JSP를 쓰면 HTML로 작성한 문구도 서블릿으로 알아서 변환되므로 편하다고 하네요.)

  • EL(Expression Language): JSP 2.0 Spec에 추가된 개념이라고하며, JSP에서 자바코드와 JSP 스크립트 코드를 더욱 더 간결하게 하기 위해 등장함. EL을 사용하면 Java 코드를 더욱 간결하게 표현가능(ex 자료형 설정안해도 되는 등).

  • JASPIC(Java Authentication SPI for Containers): 써드파티 보안 제공자가 웹 애플리케이션으로 예정된 응답 메시지 및 HTTP 요청의 Java EE(Java Platform, Enterprise Edition) 인증을 처리할 수 있게 함.