본문 바로가기

# 03/Web Server

용어정리

반응형

웹 서버(web server)는 다음 두가지 뜻 가운데 하나이다.

웹 서버(소프트웨어) : 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램
웹 서버(하드웨어) : 위에 언급한 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터

웹 서버(web server)는 HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말한다. 웹 서버 소프트웨어를 구동하는 하드웨어도 웹 서버라고 해서 혼동하는 경우가 간혹 있다.
웹 서버의 주된 기능은 웹 페이지를 클라이언트로 전달하는 것이다. 주로 그림, CSS, 자바스크립트를 포함한 HTML 문서가 클라이언트로 전달된다.

흔히 웹 브라우저 또는 웹 크롤러로 부르는 클라이언트는 HTTP를 통해 리소스를 요청하며 서버는 해당 리소스를 반환하거나 처리할 수 없을 경우 에러 메시지를 전달한다. 이러한 리소스는 일반적으로 서버의 보조기억장치에 있는 실제 파일을 가리키지만 반드시 그런 것은 아니며 웹 서버가 어떻게 수행하느냐에 따라 달라질 수 있다. 
주된 기능은 콘텐츠를 제공하는 것 이지만 클라이언트로부터 콘텐츠를 전달 받는 것도 웹 서버의 기능에 속한다. 이러한 기능은 파일 업로드를 포함하여 클라이언트에서 제출한 웹 폼을 수신하기 위해 사용된다. 
보통 대다수의 웹 서버는 Active Server Page, PHP 등의 서버 사이드 스크립트 언어를 지원한다. 이는 서버 소프트웨어의 변경 없이도 웹 서버가 수행할 동작을 분리된 서버 사이드 스트립트 언어에 기술할 수 있다는 의미이다. 보통 서버 사이드 스크립트 언어를 통해 구현되는 기능이란 HTML 문서를 동적으로 생성하는 것을 말한다. 이렇게 동적으로 생성된 HTML 문서는 동적 컨텐트라 하는데 주로 데이터베이스의 정보를 조회해서 보여주거나 수정하기 위해사용된다. 동적 컨텐트와 대비되는 개념으로 정적 컨텐트가 있는데 일반적으로 동적 컨텐트보다 더 빠르게 동작하고 쉽게 캐시될 수 있지만, 반환되는 컨텐트의 내용이 항상 동일하다.
웹 서버는 월드 와이드 웹 뿐만 아니라 프린터, 라우터, 웹캠과 같은 임베디드 장치, 그리고 근거리 통신망에서도 사용된다. 시스템의 모니터링 또는 장치 관리를 위한 목적으로 사용되는데, 이렇게 웹 서버는 클라이언트에 다른 소프트웨어의 설치 없이 대부분의 운영체제에 포함된 웹 브라우저만으로 서비스를 제공할 수 있다는 장점이 있다.

공통기능
웹 서버 프로그램들이 세세한 부분에서 다를지라도, 대부분의 프로그램들은 몇 가지 기본 공통 기능을 갖고 있다.

- HTTP
- 통신 기록

그리고 기본 공통 기능에는 포함되지 않지만 대다수 웹 서버는 다음과 같은 기능도 제공한다.

- 인증
- 정적 콘텐츠 관리
- HTTPS 지원
- 콘텐츠 압축
- 가상 호스팅
- 대용량 파일 지원
- 대역폭 스로틀링

시장구조
시장점유율 넷크래프트
아파치
IIS
nginx
GWS

동작환경
클라이언트인 웹 브라우저의 URL에서 나타내는 HTML 문서 및 각종 정보를 HTTP로 송신한다. 대부분 클라이언트의 웹 브라우저와의 사이에 다수의 커넥션을 연결하여 HTML 문서 및 기타파일(이미지 파일 등) 을 병렬로 전송하여 처리시간을 단축하는 서비스를 제공한다. 또한, HTML 문서 처리를 위한 프로그램으로 CGI 스크립터나 자바 서블릿 등을 사용하여 웹 화면에 연동되는 동적처리를 수행한다. CGI 처리를 위해 펄, 루비, php 등의 스크립트 언어가 많이 개발된 상태이다.
자바 서블릿은 웹 프로그램을 동작하기 위해 작성된 자바 스펙으로 초기 CGI의 문제점인 대용량 처리의 문제점을 극복한 언어이다. 따라서, 대용량 처리를 필요로 하는 기업환경에서는 많이 사용되고 있다.

대규모 웹 시스템을 구성하는 경우, 같은 서비스를 제공하는 웹 서버를 병렬로 설치하고, 웹 서버의 앞쪽에 로드밸런스 라는 분산처리하는 네트워크 장비를 통해 웹서버에 처리를 분배하는 방식을 사용하고 있다. 이러한 방식을 통해 웹 시스템의 가용성과 신뢰성을 보장하고 있다.

제품
아파치 웹서버 : 오픈소스인 아파치 소프트웨어 재단의 제품
CERN 웹서버
NCSA 웹서버
IIS
WebtoB

웹 브라우저(Web Browser, 열람기)는 웹 서버에서 쌍방향 통신하는 HTML 문서나 파일과 연동하고 출력하는 응용 소프트웨어이다. 웹 브라우저는 대표적인 HTTP 사용자 에이전트의 하나이기도 하다.
주요 웹 브라우저로는 모질라 파이어폭스, 구글 크롬, 인터넷 익스플로러/마이크로소프트 엣지, 오페라, 사파리가 있다.

최초의 웹 브라우저는 1990년에 팀 버너스 리가 발명하였다. 버너스 리는 W3C 의 감독자로서 웹의 지속적인 발전을 감독하며, 월드 와이드 웹 재단의 설립자이기도 하다. 그의 브라우저는 월드와이드웹으로 불리다가 넥서스로 이름이 바뀌었다.
그래픽 사용자 인터페이스를 갖추면서 대중이 사용할 수 있었던 최초의 웹 브라우저는 Erwise이다. Erwise의 개발은 로버트 카이유가 시작하였다.

프로토콜과 표준
웹 브라우저는 웹 페이지를 가져오기 위해(웹 문서를 열기 위해) 대부분의 웹 서버가 사용하는 HTTP로 통신한다. HTTP를 이용해 웹 페이지를 가져올 뿐 아니라 웹 서버에 정보를 송신하기도 한다. 작성한 시점에서 가장 많이 사용되는 HTTP는 HTTP/1.1로 RFC 2616에 정의되어 있다. HTTP/1.1은 현 세대의 다른 부라우저와는 달리 인터넷 익스플로러에서 완벽하게 지원하지 못하는 표준이 있어야 한다.
페이지들은 주소처럼 이용되는 URL(uniform resource locator)을 통해 장소가 정해지고, HTTP 접근을 위해 "http:"로 시작된다. 많은 브라우저가 FTP를 위한 "ftp:", HTTPS를 위한 "https:"와 같은 다양한 URL 종류와 대응 프로토콜을 지원한다.
웹 페이지의 파일 포맷은 보통 HTML이 쓰이고 HTTP 프로토콜의 MIME "content type"에 의해 확인된다. 대부분의 브라우저는 HTML 외에 JPEG, PNG, GIF 이미지 포맷들을 지원하고, 그밖에도 플러그인을 통해 확장할 수 있다. HTTP의 "content type"과 URL 프로토콜 명세의 조합으로 웹 페이지 설계자들은 이미지, 애니메이션, 동영상, 소리, 스트리밍 미디어 등을 웹 페이지에 덧붙이거나 웹 페이지를 통해 접근할 수 있게 한다.
초기의 웹 브라우저는 단순한 HTML만을 지원했다. 독점적인 웹 브라우저의 빠른 개발로 HTML의 비표준 확장이 많이 이루어졌고, 웹 호환성에 심각한 문제가 생겨났다. 현대의 웹 브라우저들은 모든 브라우저에서 동일하게 표시되어야 할 표준 기반의 HTML과 XHTML을 지원한다.
부가적으로 유즈넷 뉴스나 IRC, 이메일 등을 지원하는 브라우저도 있다. 이들은 대체로 NNTP, SMTP, IMAP 등의 프로토콜 지원이 포함된다.

기능
브라우저 간의 차이는 그들이 지원하는 기능에 따라 구별된다. 오늘날 브라우저와 웹 페이지는 웹 초기에는 없었던 기능과 기술을 많이 사용하는 경향이 있다. 앞에서 언급했듯이, 브라우저 전쟁 때 브라우저와 월드와이드웹에는 확장 기능이 급속도로 무질서하게 생겨났다.
아래는 특징이 있는 기능에 대한 목록이다.
웹 브라우저 시장 점유율
세계 웹 브라우저 시장에서 인터넷 익스플로러는 2008년 말까지는 70%에 육박하는 점유율을 기록했다. 하지만 파이어폭스, 사파리, 구글, 크롬 등 새로운 웹 브라우저들이 나오며 인터넷 익스플로러의 점유율이 계속해서 떨어져 2011년 12월 38%에 이르게 되었으며, 다음으로 크롬 27% 파이어폭스 25% 로 뒤따랐다. 그 후 2013년 8월 18일 시점으로 크롬의 점유율이 43.17%로 1위이며, 인터넷 익스플로러는 25.03%, 파이어 폯가 19.31%, 사파리 8.65%, 오페라 1.14% 순이다.

인터넷은 컴퓨터로 연결하여 TCP/IP라는 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네크워크이다. 

웹 애플리케이션 또는 웹 앱은 인터넷을 통해 웹 브라우저에서 이용할 수 있는 응용 소프트웨어를 말한다.

클라이언트는 클라이언트/서버 구성에서 사용자 측.

HTML은 하이퍼텍스트 마크업 언어이다. 웹 페이지를 위한 지배적인 마크업 언어다.

웹페이지 웹 상에 있는 문서

마크업 언어 태그 등을 이용하여 문서나 데이터의 구조를 기록하는 언어이다.

HTTP(HyperText Transfer Protocol) www 상에서 정보를 주고 받을 수 있는 프로토콜. 주로 HTML 문서를 주고받는 데에 쓰인다. TCP와 UDP를 사용하며, 80번 포트를 사용한다.
96년 1.0 99년 1.1이 각각 발표되었다.
클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜

HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure) HTTP의 보안이 강화된 버전이다. SSL 이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다. 기본 TCP/IP 포트는 443이다. 94년도 개발 
2017년 3월 HTTPS는 한국 전체 등록 도메인 중 3.06%가 사용하고 있다.

TLS(Transport Layer Security) 전송 계층 보안.
클라이언트/서버 응용 프로그램이 네트워크로 통신을 하는 과정에서 도청, 간섭, 위조를 방지하기 위해서 설계되었다. 그리고 암호화를 해서 최종단의 인증, 통신 기밀성을 유지시켜준다.
TLS의 3단계 기본 절차

- 지원 가능한 알고리즘 서로 교환
- 키 교환, 인증
- 대칭키 암호로 암호화하고 메시지 인증

월드 와이드 웹(World Wide Web, WWW, W3)은 인터넷에 연결된 컴퓨터들을 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간을 말한다. 간단히 웹 이라고 부르는 경우가 많다. 이 용어는 인터넷과 동의어로 쓰이는 경우가 많으나 엄격히 말해 서로 다른 개념이다. 웹은 전자메일과 같이 인터넷 상에서 동작하는 하나의 서비스일 뿐이다. 

스크립트 언어란 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어.

서버 사이드 스트립트 언어 웹에서 사용되는 스크립트 언어 중 서버 사이드 에서 실행되는 스크립트 언어를 말한다.  예) PHP

임베디드 시스템은 기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다. 즉, 임베디드 시스템은 전체 장치의 일부분으로 구성되며 제어가 필요한 시스템을 위한 두뇌 역할을 하는 특정 목적의 컴퓨터 시스템이다. 
특정한 제품이나 솔루션에서 주어진 작업을 수행할 수 있도록 추가로 탑재되는 솔루션이나 시스템

대역폭 제한은 인터넷 서비스 공급자가 의도적으로 인터넷 서비스를 느리게 하는 것을 의미한다. 대역폭 제한은 네트워크의 과부하를 막아 QoS를 보장하는데 도움이 되고, 네트워크 트래픽을 규제하는 방법 중 하나이다. 

QoS (Quality of Service) 통신 서비스 품질, 다른 응용 프로그램, 사용자, 데이터 흐름 등에 우선 순위를 정하여, 데이터 전송에 특정 수준의 성능을 보장하기 위한 능력.

CGI Common Gateway Interface 공용 게이트웨이 인터페이스. 웹 서버 상에서 사용자 프로그램을 동작시키기 위한 조합이다. 존재하는 많은 웹 서버 프로그램은 CGI의 기능을 이용할 수 있다. 웹 서버 프로그램의 기능의 주체는 미리 준비된 정보를 이용자의 요구에응답해 보내는 것 이다. 그 때문에 서버 프로그램 그룹에서는 정보를 그 장소에서 동적으로 생성하고 클라이언트에 송신하려 하는 조합을 작성하는 것이 불가능했다. 서버 프로그램에서 다른 프로그램을 불러내고, 그 처리 결과를 클라이언트에 송신하는 방법이 고안되었다. 이를 실현하기 위한 서버 프로그램과 외부 프로그램과의 연계법을 정한 것이 CGI 이다. 

자바 서블릿 자바 서블릿은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해사용되는 자바 클래스의 일종이다. 서블릿은 JSP와 비슷 한 점이 있지만, JSP가 HTML 문서 안에 Java 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다는 차이점이 있다.
자바 서블릿은 자바 EE 사양의 일부분으로, 주로 이 기능을 이용하여 쇼핑몰이나 온라인 뱅킹 등의 다양한 웹 시스템이 구현되고 있다. 

JSP 자바 서버 페이지는 HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다.

프록시서버 프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에서 중계기로서 대리로 통신을 수행하는 기능을 가리켜 '프록시', 그 중계 그능을 하는 것을 프록시 서버라고 부른다. 
프록시 서버는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장해 둔다. 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있게 됨과 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 갖게 된다. 또한 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목 현상을 방지하는 효과도 얻을 수 있게 된다.

캐시 cache 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.

캐시메모리 컴퓨터 시스템의 성능을 향상시키기 위해 주로 CPU 칩 안에 포함되는 빠르고 작고 매우 비싼 메모리이다. 프로그램에서 직접적으로 읽거나 쓸 수 없고 하드웨어의 메모리 관리 시스템이 내부적으로 제어한다. 대부분 프로그램은 한 번 사용한 데이터를 다시 사용할 가능성이 높고, 그 주변의 데이터도 곧 사용할 가능성이 높은 데이터 지역성을 가지고 있다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하면 시스템 성능을 향상시킬 수 있다.

데이터 지역성 데이터 접근이 시간적, 혹은 공간적으로 가깝게 일어나는 것을 의미한다. 
시간적 지역성 특정 데이터가 한 번 접근되었을 경우, 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것을 시간적 지역성 이라고 한다.
공간적 지역성 특정 데이터와 가까운 주소가 순서대로 접근 되었을 경우를 공간적 지역성이라고 한다. 

웹 애플리케이션 서버 Web Application Server, WAS는 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크 이다. 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)으로 볼 수 있다. 웹 애플리케이션 서버는 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행이 된다. 한국에서는 일반적으로 WAS 또는 WAS S/W 로 통칭하고 있으며공공기관에서는 웹 응용서버로 사용되고, 영어권에서는 AS(Application Server)로 불린다. 
대부분이 자바 기반으로 주로 자바 EE 표준을 수용하고 있으나, 자바 기반이지만 자바 EE 표준을 따르지 않는 제품과 .NET이나 Citrix 기반인 비 자바 계열도 존재한다.

개요
웹 애플리케이션 서버의 기본 기능은 3가지이다.
프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
여러 개의 트랜잭션을 관리한다.
업무를 처리하는 비즈니스 로직을 수행한다.
다만, 웹 애플리케이션의 정확한 정의는 존재하지 않아서 일부 기능을 제공하지 않는 웹 애플리케이션 서버도 존재한다. 업체들은 이러한 3가지 기능 말고도 여러 기능을 추가하고 강화하고 있다.

자바EE 자바 플랫폼, 엔터프라이즈 에디션(Java Platform, Enterprise Edition; Java EE)은 자바를 이용한 서버측 개발을 위한 플랫폼이다. Java EE 플랫폼은 PC에서 동작하는 표준 플랫폼인 Java SE에 부가하여, 웹 애플리케이션 서버에서 동작하는 장애복구 및 분산 멀티티어를 제공하는 자바 소프트웨어의 기능을 추가한 서버를 위한 플랫폼이다. 이전에는 J2EE라 불리었으나 버전 5.0 이후로 Java EE로 개칭되었다.
이러한 Java EE 스펙에 따라 제품으로 구현한 것을 웹 애플리케이션 서버 또는 WAS라 불린다.

트랜잭션 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위로서 데이터베이스 시스템에서 복구 및 병행 시행시 처리되는 작업의 논리적 단위이다.

프레임워크 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공되는 소프트웨어 환경

미들웨어 응용 소프트웨어가 운영 체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트 웨어이다. 응용 소프트웨어는 유연하고 확장, 축소가 편리하여야 하며 이러한 장점을 충족하기에 개발자의 다른 기종 간 플랫폼을 다시 구축할 필요가 없어야 한다. 
응용프로그램과 그 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있게 하는 소프트웨어

콘텐츠 매니지먼트 시스템 저작물 관리 시스템(Content Management System, CMS)은 저작물 관리에 사용하는 소프트웨어이다. 여기에서 지칭하는 저작물이란 사진, 음성, 전자문서 그와 유사한 컴퓨터 파일이다. 

FTP File Transfer Protocol 은 TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다. 파일전송 프로토콜은 TCP/IP 프로토콜 테이블의 응용 계층에 속하며, 역사는 오래 되었지만 지금도 인터넷에서 자주 사용된다.

도메인 네임 서버 Domain Name Server 특정 네트워크에 속한 특정 호스트에 접속하기 위해 일일이 숫자로 된 IP 주소를 기억하지 않고 도메인 네임만으로도 가능하게 하기위해 도메인 네임을 IP 주소로 전환시켜 주는 시스템.
각 호스트 컴퓨터의 IP 주소를 기억하고 있다가 문자로 된 도메인 네임이 입력되면 접속에 필요한 숫자로 이루어진 IP 주소로 바꾸어주는 역할을 하는 서버

서버 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 또는 프로그램을 뜻한다. 특히, 서버에서 동작하는 소프트웨어를 서버 소프트웨어라 한다. 주로 리눅스 등의 운영체제를 설치한 대형 컴퓨터를 쓰지만, 그렇지 않은 경우도 있다.

TP모니터 TP-monitor, Transaction Processiong Monitor, Teleprocessing monitor. 트랜잭션이 온전하게 처리되고 있는지, 오류가 발생하면 적절한 조치를 취하는 지에 대해 여러 개의 로컬, 원격 터미널 간의 데이터 전송을 감시하는 통제 프로그램이다. 각종 프로토콜에서 동작하는 세션과 시스템과 데이터베이스 사이의 최소 거리 단위인 트랜잭션을 감시하여 일관성있게 보관 유지하는 역할을 하는 트랜잭션 관리 미들웨어이다. 시장분석 기관인 가트너 에서는 TPM으로 표시하고 있고, 또 다른 시장분석 기관인 IDC에서는 ASSP의 일부로 분류 하고 있다.

URL  Uniform Resource Locator, 파일식별자. 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약. 즉 컴퓨터 네트워크와 검색 메커니즘에서의 위치를 지정하는, 웹 리소스에 대한 참조이다. 흔히 웹 사이트 주소로 알고 있지만, URL은 웹 사이트 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타낼 수 있다. 그 주소에 접속하려면 해당 URL에 맞는 프로토콜을 알아야 하고, 그와 동일한 프로토콜로 접속 해야 한다.
FTP 프로토콜인 경우에는 FTP 클라이언트를 이용해야 하고, HTTP인 경우에는 웹 브라우저를 이용해야 한다. 텔넷의 경우에는 텔넷 프로그램을 이용해서 접속해야 한다.

URI 통합 자원 식별자(Uniform Resource Identifier, URI)는 인터넷에 있는 원을 나타내는 유일한 주소. URI의 존재는 인터넷에서 요구되는 기본조건으로 인터넷 프로토콜에 항상 붙어 다닌다. 하위개념으로 URL, URN이 있다. 

메커니즘 작동하는 원리

XML Extensible Markup Language. W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어이다. XML은 SGML의 단순화된 부분집합으로 다른 많은 종류의 데이터를 기술 하는 데 사용할 수 있다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어 졌다.
XML은 문서를 사람과 기계 모두가 읽을 수 있는 형식을 갖도록 규정하고 있다. 
W3C는 XML 설계 목표에서 단순성과 일반성, 그리고 인터넷을 통한 사용 가능성을 강조했다. XML은 텍스트 데이터 형식으로 유니코드를 사용해 전 세계 언어를 지원한다. XML을 설계할 때는 주로 문서를 표현하는데 집중했지만, 지금은 임의의 자료구조를 나타내는 데 널리 쓰인다. 대표적인 예가 웹 서비스이다.

XHTML Extensible HyperText Markup Language. HTML과 동등한 표현 능력을 지닌 마크업 언어로, HTML 보다 엄격한 문법을 가진다. HTML이 SGML의 응용인 데반해, 매우 유연한 마크업 언어인 XHTML은 SGML의 제한된 부분집합인 XML의 응용이다. XHTML 문서는 하나의 XML 문서로서 문법적으로 정확해야 하기 때문에, HTML과 달리 표준 XML 라이브러리를 이용한 자동화된 처리가 가능하다. 

개관
XHTML은 HTML의 후속으로 많은 사람들이 XHTML을 HTML의 최신 버전이 아니라 별개의 분리된 표준이다. 

웹서비스 web service. 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용을 하기 위한 소프트웨어 시스템이다. 웹 서비스는 서비스 지향적 분산 컴퓨팅 기술의 일종이다. 웹 서비스 프로토콜 스택은 SOAP, WSDL, UDDI 등으로 이루어진다. 모든 메시징에 XML이 사용되어 상호운용성이 높다. 기존의 분산 컴퓨팅 기술들인 CORBA, DCOM, RMI과 비교했을 때 주된 차이점은 다음과 같다.
느슨한 연결, 이진부호화가 아닌 XML 유니코드 부호화를 사용한다.
개체지향이 아닌 메시지 지향이다.
웹 서비스는 컴퓨터와 컴퓨터 간의 상호작용을 위한 시스템이다.

분산컴퓨팅 인터넷에 연결된 여러 컴퓨터들의 처리 능력을 이용하여 거대한 계산 문제를 해결하려는 분산처리 모델이다. 

SOAP Simple Object Access Protocol. 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는프로토콜이다. SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다. 

SMTP Simple Mail Transfer Protocol. 간이 전자 우편 전송 프로토콜. 인터넷에서 이메일을 보내기 위해 이용되는 프로토콜. TCP 포트는 25번이다. 

WSDL Web Services Description Language. 웹 서비스 기술 언어 또는 기술된 정의 파일의 총칭으로 XML로 기술된다. 웹 서비스의 구체적 내용이 기술되어 있어 서비스 제공 장소, 서비스 메시지 포맷, 프로토콜 등이 기술된다.

UDDI Universal Description, Discovery and Integration. 웹 서비스 관련 정보의 공개와 탐색을 위한 표준. 서비스 제공자는 UDDI라는 서비스 소비자에게 이미 알려진 온라인 저장소에 그들이 제공하는 서비스 목록들을 저장하게 되고, 서비스 소비자들은 그 저장소에 접근함으로써 원하는 서비스들의 목록을 찾을 수 있게 된다.

상호운용성 하나의 시스템이 동일 또는 이기종의 다른 시스템과 아무런 제약이 없이 서로 호환되어 사용할 수 있는 성질을 말한다.

CORBA Common Object Request Broker Architecture. OMG에서 정의한 규격으로서 소프트웨어 컴포넌트들을 언어와 사용환경에 대한 제약이 없는 통합을 위한 표준을 지칭한다.

DCOM Distributed Component Object Model. 분산 컴포넌트 오브젝트 모델. 네트워크 컴퓨터 사이에 분산된 소프트웨어 컴포넌트 간 통신을 위한 마이크로소프트 사유 기술이다. 최초의 COM 기술은 동종 시스템에서만 가능했다. 다른 종류의 시스템에서의 프로세스 간 상호작용이 필요하여 생겨난 것이 바로 이 기술이다.

객체 지향 프로그래밍 컴퓨터 프로그래밍의 패러다임의 하나이다. 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어서 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한다.

OMG Object Management Group. 객체 관리 그룹. 분산 객체에 대한 기술 표준을 제정하기 위해 1989년에 설립된 비영리단체로서 현재는 800여 개 이상의 업체들이 참여하고 있다. 이단체에는 오라클, 마이크로소프트, 나사 등이 있다. 그리고 모델링을 위한 새로운 포커스와 모델 기반의 기술을 표준화한다. OMG는 이기종의 분산 객체 표준을 만들기 위해 시도를 한다. 이러한 목표는 모든 타입의 플랫폼과 다양한 환경에서 개발을 하기위해 사용되는 것을 돕고 발전을 하기 위해 방법들을 연구 중이고 공통의 객체 모델들을 만드는 데 있다.

SOA Service Oriented Architecture. 서비스 지향 아키텍처. 대규모 컴퓨터 시스템을 구축할 때의 개념으로 업무상의 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하여 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 나가는 방법론이다. 

패러다임 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념이다.

공인인증서 전자 서명의 검증에 필요한 공개 키에 소유자 정보를 추가하여 만드는 일종의 전자 신분증 이다. 공개 키 증명서, 디지털 증명서, 전자 증명서 등으로도 불린다. 공인인증서는 개인키와 한쌍으로 존재한다.

전자 서명 서명자를 확인하고 서명자가 당해 전자문서에 서명했다는 사실을 나타내는 데 이용하려고, 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보를 말한다.

공개 키 기반구조 public key infrastructure, PKI. 공개 키 암호 방식을 바탕으로 한 디지털 인증서를 활용하는 소프트웨어, 하드웨어, 사용자, 정책 및 제도 등을 총칭하여 일컫는다. 

공개 키 암호 방식 암호방식의 한 종류로 사전에 비밀키를 나눠가지지 않은 사용자들이 안전하게 통신 할 수 있도록 한다. 공개 키 암호 방식에서는 공개 키와 비밀 키가 존재하며, 공개 키는 누구나 알 수 있지만 그에 대응하는 비밀 키는 키의 소유자만이 알 수 있어야 한다. 공개 키 암호를 구성하는 알고리즘은 대칭 키 암호 방식과 비교하여 비대칭 암호라고 부르기도 한다. 
공개키 암호 - 특정한 비밀 키를 가지고 있는 사용자만 내용을 열어볼 수 있음.
공개키 서명 - 특정한 비밀 키로 만들었다는 것을 누구나 확인할 수있음.
공개 키 암호 방식은 열쇠로 잠겨 있고 좁은 투입구가 있는 편지함에 비유할 수 있다. 이런 편지함은 위치(공개키)만 알면 투입구를 통해 누구나 편지를 넣을 수 있지만 열쇠(개인 키)를 가진 사람만이 편지함을 열어 내용을 확인할 수 있다. 
공개 키 서명은 인장으로 편지봉투를 봉하는 것에 비유할 수 있다. 이렇게 봉인한 편지는 누구나 열어볼 수는 있지만 인장 확인을 통해 인장을 소유한 발신자가 이 편지를 보냈음을 증명할 수 있다. 일반적으로, 공개 키 암호 방식은 비밀키 암호 보다 계산이 복잡한 단점이 있기 때문에, 효율을 위해 비밀 키 암호(혹은 대칭암호)와 함께 사용된다. 메시지를 임의로 만들어진 비밀 키를 이용해 암호화한 다음 이 비밀키를 다시 수신자의 공개 키로 암호화하여 메시지와 함께 전송하는 것이다. 이렇게 하면 공개 키 암호 기술로는 짧은 비밀 키만을 암호화하고 보다 효율적인 비밀 키 암호 기술로 전체 메시지를 암호화하므로 양쪽의 장점을 취할 수 있다.

원리
공개 키 암호 방식은 출제자만이 알고 있는 특정한 종류의 정보(비밀키) 없이는 매우 풀기 어려운 수학적 문제(공개 키)를 바탕으로 만들어진다. 키를 만드는 사람은 이 문제(공개키)를 일반에 공개하고 특정한 정보(비밀키)는 자신만이 알 수 있도록 숨긴다. 그러면 어떤 사람이건 이 문제를 이용해 메시지를 암호화하면 키를 만든 사람만이 이 문제를 풀어 원래 메시지를 해독할 수 있다.
RSA 암호와 같은 초기 암호들은 두개의 큰 소수를 곱한 숫자를 문제로 사용하였다. 사용자는 임의의 큰 소수를 두 개 골라 비밀키로 삼고 그 곱한 값을 공개키로 공개한다. 큰 수의 소인수 분해는 대단히 풀기 어려운 문제에 속하기 때문에 다른 사람들은 비밀 키를 알 수 없을 것이라는 사실이 보장된다. 그러나 최근 이 분야의 연구가 크게 진전되어 RSA의 안전성을 보장하기 위해서는 수천비트 이상의 큰 소스를 키로 사용해야 한다. 또 다른 종류의 문제로는 a와 c가 알려진 상태에서 방정식 a b제곱 = c 의 해 b를 구하는 문제가 있다. 실수나 복소수에 대해서는 로그 함수를 이용해 이 문제를 쉽게 풀 수있다. 그러나 유한군에서는 이런 문제를 풀기가 어려운 것으로 알려져 있으며 이런 문제를 이산 로그 문제 라 부른다. 타원곡선암호를 비롯한 여러가지 공개키 암호들이 이산로그문제를 바탕으로 만들어져 있다.

타원곡선암호 타원곡선 이론에 기반한 공개키 암호 방식이다. 줄여서 ECC라고 쓰기도 한다.

대칭 키 암호 암호화 알고리즘의 한 종류로 암호화와 복호화가 같은 암호키를 쓰는 알고리즘을 의미한다. 대칭 키 암호에서는 암호화를 하는 측과 복호화를 하는 측이 같은 암호 키를 공유해야 한다. 이러한 점은 공개키 암호에서 공개 키와 비밀키를 별도로 가지는 것과 구별된다. 대신, 대부분의 대칭 키 암호는 공개 키 암호와 비교하여 계산 속도가 빠르다는 장점을 가진다. 따라서, 많은 암호화 통신에서는 비밀 키 암호를 사용하여 대칭 키 암호의 공통키를 공유하고, 그 키를 기반으로 실제 통신을 암호화하는 구조를 사용한다.
종류
대칭키 암호는 암호화하는 단위에 따라 스트림 암호와 블록 암호로 나눌수 있다. 
스트림 암호는 연속적인 비트/바이트를 계속해서 입력받아, 그에 대응하는 암호화 비트/바이트를 생성하는 방식이다.
블록 암호는 정해진 한 단위(블록)을 입력받아 그에 대응하는 암호화 블록을 생성하는 방식이다.
블록 암호의 경우 적절한 운용 모드를 조합하면 블록 단위보다 큰 입력을 처리할 수 있으며, 또한 스트림 암호와 유사하게 지속적인 입력에 대해 동작할 수 있다. 

쿠키 cookie 란 하이퍼텍스트의 기록서의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다. HTTP 쿠키, 웹쿠키, 브라우저 쿠키라고도 한다. 이 기록 파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀐다. 이 수단은 넷스케이프의 프로그램 개발자였던 루몬툴리가 고안한 뒤로 오늘날 많은 서버 및 웹사이트들이 브라우저의 신속성을 위해 즐겨 쓰고 있다.
쿠키는 소프트웨어가 아니다. 쿠키는 컴퓨터 내에서 프로그램처럼 실행될 수 없으며 바이러스를 옮길 수도, 악성코드를 설치할 수도 없다. 하지만 스파이웨어를 통해 유저의 브라우저 행동을 추적하는데에 사용될 수 있고, 누군가의 쿠키를 훔쳐서 해당 사용자의 웹계정 접근권한을 획득할 수도 있다.

ASP Active Server Page 액티브 서버 페이지. 마이크로소프트 사에서 동적으로 웹페이지들을 생성하기 위해 개발한 서버 측 스크립트 엔진이다. ASP 2.0은 6개의 내장 객체들을 제공한다. Application, ASPError, Request, Response, Server, Session. 예를 들어, Session은 페이지 간의 변수의 상태를 유지하는 쿠키 기반의 세션을 나타낸다. 동적 스크립팅 엔진의 컴포넌트 객체 모델(COM) 지원은 ASP 웹사이트들이 DLL들 같은 컴파일 된 라이브러리들을 함수처럼 접근 가능하게 해준다. 


반응형

'# 03 > Web Server' 카테고리의 다른 글

Tengine  (0) 2019.02.05
Nginx  (0) 2019.02.05
OpenLiteSpeed  (0) 2019.02.05
H2o  (0) 2019.02.05
Apache  (0) 2019.02.05