개인/리눅스

[리눅스] 웹 서비스의 구성 (웹 브라우저, HTTP)

OmeGa2 2020. 2. 19. 19:16

웹이란?

웹은 월드 와이드 웹(World Wide Web, www)을 간단히 부르는 말로서 인터넷에 연결된 컴퓨터들을 통해 문서나 정보를 공유할 수 있도록 구성한 정보공간이자 서비스를 뜻한다.

 

즉, 웹은 www의 줄임말로 인터넷을 통해 정보를 공유할수 있는 공간을 말한다.

 

www는 인터넷상에서 정보를 검색할 수 있는 시스템을 말하며, 하이퍼텍스트방식을 사용한다.

 

하이퍼텍스트 (Hypertext)

.하이퍼텍스트는 하이퍼링크를 통해 이용자가 사용중인 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트를 말한다. 

 

예를들자면 어느 홈페이지에서 기사를 하나 클릭하면 새로운 창이 나온다.

이는 웹 브라우저라는 프로그램을 통해 탐색하며, HTML이라는 태그를 이용해서 만들어진다.

 

HTML은 HTTP라는 프로토콜을 통해 메시지를 주고받는 컴퓨터 사이에서 문서가 전달된다.

 

 

 

웹 서비스의 구성

웹은 크게 웹 브라우저와 웹 문서(HTML), 웹 서버 세 가지로 구성된다.

 

 

웹 서버 (Web Server)

웹 서버는 하이퍼텍스트 기반의 시스템이 구축되면서 등장했다.

여기서는 주로 웹 브라우저에서 HTTP 요청을 받아 웹 페이지나 문서를 전달하는 역할을 한다.

 

웹서버는 하드웨어와 소프트웨어 두 가지 측면으로 나눌 수 있다.

하드웨어 측면으로는 HTML문서나 자바스크립트 등의 파일을 컴퓨터에 저장한 뒤, 최종 사용자의

단말이나 장치에 전달하는 역할을 수행한다. 

 

소프트웨어 측면에서 봤을 때 웹 서버는 사용자가 파일에 어떻게 접근하는지 관리한다.

웹서버에서는 URL 과 HTTP 프로토콜을 통해 사용자가 서비스를 이용할 수 있다.

 

사용자가 웹 서버의 파일을 이용하고자 할 때, 웹 브라우저에서 HTTP를 통해 서버에 파일을 요청한다.

웹 서버에서는 HTTP 서버를통해 파일을 사용자에게 보내준다.

(웹 서버에서는 파일과 HTTP 서버를 가지고 사용자의 HTTP 요청을 기다린다.)

 

현재 많이 사용되는 웹 서버는 아파치(Apache) 서버와 마이크로 소프트의 IIS,

NGINX사의 Nginx, 구글의 GWS, Cherokee 등이 있다.

 

웹 서버가 다양해짐에 따라 기능적으로도 단순히 웹 페이지를 보여주는 기능 이외에 정적 웹페이지 제공, 로그관리, 인증 , 가상 호스팅, 대용량 파일 지원, 대역폭 제한 등의 기능도 포함하고 있다.

 

 

웹 문서(HTML 문서)

HTML은 Hyper Text Markup Language의 약자로 웹 문서를 작성하는 언어 중 하나이다.

 

여러 태그로 구성되어 있는 HTML의 가장 큰 장점은 하이퍼텍스트 기능이다.

하이퍼텍스트의 원리를 이용해서 여러 문서를 링크시켜 많은 페이지를 쉽게 검색하고,

사용자가 원하는 형태의 문서로 만들 수 있게 도와준다.

 

초기의 웹 서버는 이미지가 포함된 정적인 형태의 HTML문서만을 제공했다.

정적인 웹 페이지는 사용자의 요구와는 관계없이 서버에 저장된 파일만

그대로 전달되었으며 고정된 웹페이지만을 이용할 수 있었다.

 

이는 컴퓨터에 저장된 메모장을 열어보는 것과 마찬가지다.

 

이후 인터넷이 대중화되며 사용자의 요구에 따라 반응하는 동적인 컨텐츠가 제공되기 시작했는데,

동적인 웹페이지는 사용자의 요구를 스크립트를 통해 해석해서 가공한 후 생성된 웹페이지를

제공하는 것이다. 

 

따라서 시간이나, 요청이 조금만 바뀌어도 제공되는 웹페이지가 바뀔 수 있다.

 

동적인 웹페이지가 들어오면서 사용하기 시작한 것이 CGI이다.

웹 서버는 동적인 페이지를 생성해 클라이언트에서 송신하는것이 불가능 했기 때문에,

동적인 컨텐츠를 위해 서버프로그램과 외부프로그램을 연계할 수 있는 방법이 필요했다.

이런 역할을 하는 프로그램을 CGI라 부르며 C, 펄(perl), 파이썬, ASP, JSP 등이 있다.

 

 

웹 브라우저 (Web browser)

웹 서버와 통신하면서 HTML 문서와 파일을 연동하고 출력하는 응용프로그램을 웹 브라우저라고 한다.

 

웹 서버와 HTTP 로 통신하고, 웹 페이지들은 주소처럼 이용되는 URL로 접근하게 된다.

 

우리는 인터넷 브라우저로 Internet explorer, 크롬, microsoft edge 등을 이용해 흔히 사용하는

naver, daum, google 등의 웹서버와 통신하면서 HTML 파일을 출력받아 사용하고 있다.

(웹 서버 → 웹 브라우저 → HTML문서 → 사용자)

 

주요 프로그램에는 마이크로소프트의 인터넷 익스플로러, 애플의 사파리 브라우저들과

리눅스에서는 Firefox, Opera, Chrome 등이 많이 사용되고 있다.

 

▷ Firefox

모질라 재단에서 개발한 자유 소프트웨어 웹 브라우저로 리눅스 뿐만 아니라 윈도우, Max OS, 안드로이드 에서도 사용할 수 있다.

 

파이어폭스에서 사생활 보호를 위해 부득이하게 일부 광고에 숨겨진 프로그램으로 인한

추적을 막고 방문이력을 남기지 않는다.

 

웹 페이지를 표시하기 위해 게코 레이아웃 엔진을 사용하고 있으며,

탭 브라우징, 맞춤법검사, 통합검색 , 다운로드관리자 등이 있다.

 

또한 제 3자가 만든 부가기능을 추가하거나, 사용자가 원하는 검색엔진을 사용할 수 있다.

 

 

▷ Opera

1994년 노르우이의 오페라 소프트웨어 ASA에서 개발한 웹 브라우저로

초기에는 윈도우용만 개발했으나, 현재는 리눅스, Max OS 같은 운영체제도 지원한다.

 

오페라는 기본적으로 다양한 기능을 가지며 다른 프로그램에 비해 작고 속도가 가볍고 빠르다.

 

안드로이드와 아이폰같은 모바일과 태블릿 버전도 출시하고 있고,

콘솔 게임기와 스마트TV 셋톱박스에도 내장되고 있다.

 

오페라는 탭 브라우징 기능을 최초로 선보였고, 웹 페이지가 네모난

썸네일 형태로 가지런히 배열되는 스피트 다이얼도 최초로 선보였다.

 

네트워크가 느리거나 불안정한 환경에서 오페라 터보기능을 이용해 서버측의 자료를 먼저

전송받아 압축한 뒤 다시 사용자에게 전송하여 느린 네트워크환경에서 효율을 높여준다.

 

 

▷ Chrome

크롬은 구글에서 웹키트 프리웨어 웹 브라우저로 비교적 간단한 사용자 인터페이스를 제공한다.

 

이런 간단한 인터페이스로 다른 웹 브라우저에 비해 빠른 속도와 안정성을 가지고 있다.

 

주소 자동 완성 기능과 검색기능을 갖춘 검색주소창을 제공하고,

개인정보 보호를 위한 시크릿모드, 테마 적용 등 다양한 확장 기능을 설치할 수 있다.

 

구글 문서도구와 연동되는 북마크 및 확장기능을 동기화해 주고

구글 번역을 이용한 자동번역 서비스를 이용해 사용자가 외국 사이트를 수월하게

이용할 수 있도록 도와준다.

 

 

 

HTTP 프로토콜 (서버와 클라이언트)

웹 브라우저를 사용하는 클라이언트와 웹 서버 사이에서 HTTP 프로토콜을 사용한다.

따라서 웹 브라우저를 HTTP 클라이언트, 웹서버를 HTTP 서버라고 부른다.

 

클라이언트에서 서버에 원하는 자료를 요청하면,

서버는 클라이언트에 실제 자료나 데이터 등으로 응답하게 된다.

 

 

▷ HTTP (클라이언트) → HTTP (서버) 요청

 

HTTP 클라이언트가 서버에 요청할 때 보내는 정보

HTTP Method  : 서버에 요청하는 메소드

URI               : 통합 자원 식별자 (인터넷 자원을 나타내는 주소)

프로토콜 버전 : 웹 브라우저가 사용하는 프로토콜

MIME            : 전자 우편을 위한 표준 포맷

(HTTP Method)

GET     : 서버에서 자료를 가져오는 요청

POST   : 서버에 정보를 저장하는 요청

HEAD   : GET과 유사하지만 HTTP 헤더 정보만 가져온다.

PUT     : 서버에자료를 올릴 때 사용

DELETE : 서버에 자료를 삭제할 때 사용

 

 

 

 

▷ HTTP (서버)  →  HTTP (클라이언트) 응답

 

서버는 클라이언트의 요청에 따라 HTTP 프로토콜 버전, 상태코드와 실제 자료 등으로 응답한다.

 

특이 요청에 대한 상태코드는 HTTP 규약 (RFC 2616)에 정의되어 있다.

 

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 

 

World Wide Web Consortium (W3C)

W3C Workshop Report: Inclusive Design for Immersive Web Standards 6 February 2020 | Archive W3C is pleased to announce a report from the W3C Workshop on Inclusive Design for Immersive Web Standards, held on 5-6 November 2019 in Seattle, WA, USA. This repor

www.w3.org

 

서버가 응답하는 상태코드는 1xx ~ 5xx로 나뉜다.

특히 우리가 인터넷에서 가장 자주 볼 수 있는 상태코드로는 404, 405가 있다.

 

404 : Not Found

찾을 수 없는 웹 페이지, 서버가 URI와 일치하는 것을 찾지 못했다. 

서버가 요청이 거부 된 이유를 모르거나, 다른 응답이 없는 경우 표시

 

405 : Method Not Allowed

요청한 메소드는 URI에 의해 식별된 자원에 허용되지 않는다.

자원에 유효한 메소드가 요청에 포함되어야 한다.

 

▷ 응답메시지 분류

1xx = Informational (정보용 메시지)

2xx = Successful (성공 응답 메시지)

3xx = Redirection (리다이렉션 메시지, 추가적인 조치가 필요)

4xx = Client error (요청에러, 수정 후 다시 요청해야 한다.)

5xx = Server error (서버오류, 예상치 못하게 조건을 이행하지 못했다.)