강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 웹서비스에 필요한 구성 요소 및 작동 원리

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 웹서비스에 필요한 구성 요소 및 작동 원리

 




 

1) 정적인 HTML 페이지

웹 서버는 정적인 컨텐츠 (HTML 파일, 이미지, 동영상파일, js, css 파일등)를 클라이언트 요청에 의해 보낼 수 있다.

 

아주 간단한 기능이다.

 

 

 

 

2) CGI

 

 

CGI(Common Gateway Interface)는 외부의 프로그램을 실행시켜 그 결과를 HTML로 돌려주는 방식이다.

 

 

 

이는 사용자의 요구에 따라 다르게 반응하는 동적인 컨텐츠를 생산할 수 있었고, 기업의 데이터베이스와 연동하여 웹으로 정보를 제공할 수 있게 되었다.

 

 

 

또한 웹에서 제공하는 컨텐츠만 일방적으로 보는 것이 아닌 사용자가 생산한 컨텐츠를 웹서버에 올릴 수 있어 상호작용이 가능해 졌다.

 

 

 

CGI의 스크립트의 장점으로는 어떤 언어로도 코딩될 수 있으며, CGI 프로토콜이 단순해서 간단하게 사용할 수 있다는 것이다.

 

 

 

단점은 요청이 있을 때 마다 외부 프로그램을 실행시켜야 하기 때문에 프로그램 실행으로 인한 서버 자원소비가 많으며, 외부 프로그램간의 공유가 어렵다.

 

 

 

CGI스크립트의 작성에 많이 사용되는 언어는 C, Perl, Python, PHP 등이 있다.

 

 

 

, PHPCGI보다는 웹서버의 DSO 모듈방식으로 많이 사용된다.

 

 

 

 

3) 자바 서블릿

 

 

자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램이다.

 

 

 

자바 서블릿은 자바EE의 일부분이며, CGI는 요청이 있을 때마다 새로운 프로세스가 생성되어 응답하는 데 비해, 자바 서블릿은 외부 요청마다 프로세스보다 가벼운 스레드로써 응답하여 가볍고 자원관리면에서 효율적이다.

 

 

 

또한, 자바 서블릿은 자바로 구현되므로 다양한 플랫폼에서 동작한다.

 

 

 

 

4) 작동 원리

 

웹 서비스 접속을 위해 주로 사용하는 프로그램은 인터넷 익스플로러(Internet Explorer), 파이어폭스(Firefox), 크롬(Chrome), 사파리(Safari)와 같은 웹브라우저이다.

 

 

 

웹 브라우저는 인터넷에 연결되어 있는 웹서버에 접속하고, 그곳에 있는 콘텐츠를 요청하여 응답 받아 콘텐츠를 보여주는 역할을 한다.

 

 

 

이때 호스트간의 연결 작업과 데이터 전송 등에 사용되는 프로토콜이 HTTP이다.

 

 

 

브라우저는 HTTP 클라이언트(Client)라 하며, 브라우저로부터 요청을 받아 요청된 콘텐츠를 반환시켜 주는 역할을 하는 것을 HTTP 서버(Server)라 한다.

 

 

 

클라이언트의 요청에 대한 서버의 응답이 웹의 기본 작동원리 이다.

 

 

 

 

 

HTTP의 동작

 

 

HTTP는 요청(Request)/응답(Response) 프로토콜이다.

 

 

 

클라이언트(일반적으로 웹브라우저)는 웹서버에 요청 방식과 URI(Universal Resource Identifier)와 프로토콜 버전및 MIME(Multipurpose Internet Mail Extensions)과 비슷한 추가 자료들을 서버로 전송한다.

 

 

 

서버는 이러한 클라이언트의 요구에 대해 상태값과 에러값, 메타데이터 및 실제 자료로 응답한다.

 

 

 

 

클라이언트

(웹 브라우저)

연결(Connect)

웹 서버

요청(Request)

응답(Response)

종료(Close)

 

 

 

HTTP 요청(Request)

 

 

요청은 메소드(Method : GET/POST) + URI + 프로토콜 버전 + 추가 헤더 정보들(RFC822 형식)을 전송.

 

간단하게 telnet nc 명령어로 테스트 해 볼 수 있다.

 

 

 

 

 

telnet 명령어 이용

 

 

 

 

 

telnet sulinux.net 80

GET / <엔터>

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>302 Found</title>

</head><body>

<h1>Found</h1>

<p>The document has moved <a href="https://www.sulinux.net/">here</a>.</p>

</body></html>

 

 

 

 

 

 

nc 명령어 이용

 

 

 

 

 

[root@SULinuxHost1 ~]# echo "GET /" | nc -v sulinux.net 80

Connection to sulinux.net 80 port [tcp/http] succeeded!

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>302 Found</title>

</head><body>

<h1>Found</h1>

<p>The document has moved <a href="https://www.sulinux.net/">here</a>.</p>

</body></html>

 

 

 

 

 

 

위 결과와 같이 웹의 기본 포트인 TCP/80 포트로 접속하여 "GET /"를 요청하여 응답을 받았다.

 

 

 

 

HTTP요청에 사용되는 주요 메소드는 다음과 같이 정리될 수 있다.

 

 

 

 

 

 

메소드

설 명

GET

지정된 리소스를 가져오는 메소드

쿼리스트링으로 데이터를 보낼 수 있음(가장 많이 사용되는 메소드)

HEAD

GET과 같지만 HTTP 헤더(Header)만 가져옴(웹서버 모니터링에 많이 사용됨)

PUT

주어진 URL에 데이터 저장

DELETE

주어진 URL에 해당하는 리소스를 삭제

POST

웹서버로 데이터를 보낸다.

 

 

 

(GET과 함께 많이 사용됨)

TRACE

이전에 들어온 요청들을 보여준다

OPTIONS

웹서버에서 지원하는 메소드들을 응답

 

 

 

 

HTTP 응답

 

 

서버로 부터 응답(Response)HTTP 프로토콜 버전, 상태코드, 상태 문자열형태로 응답하고, 정상적인 응답의 경우 Body 부분은 MIME 형식으로 데이터 리턴한다.

 

 

 

오류코드는 1xx는 정보교환, 2xx는 성공을 알리는 코드이며, 3xx는 자료의 위치가 바뀌었음, 4xx는 클라이언트쪽 오류 발생된 경우, 5xx는 서버쪽 오류가 발생되었다고 판단될 때 응답을 한다.

 

 

 

 

 

다음 표는 주요 HTTP 응답 오류 코드 이다.

 

 

 

 

 

코드

메시지

설명

1xx

Informational

정보교환

2xx

Success

성공

???? 200 OK : 오류 없이 전송 성공

3xx

Redirection

위치가 바뀜

4xx

Client Error

클라이언트 측 오류

???? 404 Not Found : 찾을 수 없음

5xx

Server Error

서버측 오류

???? 500 Internal Server Error : 서버 내부 오류

 

 

 

HTTP 요청과 응답 헤더 캡쳐

 

 

다음 그림은 크롬 웹브라우저를 통해 "https://www.sulinux.net/2.0" 사이트에 접속하고, 요청에 대한 응답을 받은 페이지 중 하나에 대해 헤더를 캡쳐한 화면이다.

 

 

 

"Request Headers""Response Headers"를 상세하게 확인할 수 있다.

 

 

 

 

 

ae605a8902fc6a456085638e2d1b5e83_1686817082_31.png
 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  76 명