본문으로 바로가기

[Web] server-client간의 CGI 통신

category ETC 2019. 9. 26. 17:34

Web Server와 Client 사이의 통신

사용자는 웹 브라우저를 통해 보고자 하는 정보가 있는 서버에 접근해서 정보를 가져온다.

브라우저와 서버 간에 정보를 주고받기 위한 특별한 규정 (Protocol)이 필요하다.

웹에서는 주로 HTTP(Hyper Text Transmission Protocol)프로토콜을 사용한다.

클라이언트에 해당하는 브라우저는 서버에 HTML(Hyper Text Mark-up Language)를 전송해 줄 것을 Request하고, 서버는 클라이언트의 요청에 따라 해당 문서를 Response한 후 접속을 중단하여 클라이언트와 서버간의 통신이 이루어진다.

HTTP는 정보를 8bit의 문자열로 전송하며, 이를 이용해 다양한 형태의 정보 전송이 가능하다.

이때, 클라이언트가 해당 서버를 찾아갈 수 있게 하는것이 URL(Uniform Resource Locator)이다.

URL은 클라이언트에게 갈 곳과 가는 방법, 그리고 목적지에 도달했을때 해야 할 일 등을 알려주는 주소 체계라고 할 수 있다.


HTTP의 접속은 크게 6단계로 이루어진다.

  1. 브라우저가 URL의 첫 부분을 해독하고 서버와 접속한다.

  2. 브라우저가 URL의 나머지 부분을 서버에 전달한다.

  3. 서버는 URL을 경로와 파일 이름으로 번역한다.

  4. 서버는 해당 문서를 브라우저에게 전송한다.

  5. 서버가 연결을 끊는다.

  6. 브라우저가 전송 받은 문서를 보여준다.

이와 같이 서버는 클라이언트가 요구한 하나의 문서만을 전해주고 접속을 끊는다.


이를 stateless connection이라고 한다.

이러한 경우 클라이언트는 Request를 하고 서버는 응답을 하는 단순한 형태로서, 상호작용에 상당한 제약이 있다.


따라서 서버에서 요구를 하고 클라이언트에서 응답이 필요한 경우의 응용프로그램을 개발할 수 있는 방법이 필요하게 되었다.

웹을 단순한 정보검색에서 업무에 활용하려면 클라이언트에서 입력한 데이터를 서버에서 처리할 수 있어야 한다.

이러한 일을 할 수 있는 방법이 Common Gateway Interface이다.


Common Gateway Interface

CGI는 외부의 응용프로그램과 웹서버를 연결시켜주는 "표준"을 의미한다.

예를들면, 검색엔진이나 데이터 베이스 검색 프로그램 등과 웹서버를 연결시켜주는 것 등이다.


독립적으로 실행되는 응용프로그램에서 웹에서 입력받은 자료를 응용 프로그램의 입력으로 전달한다든지, 응용 프로그램에서 실행된 결과를 웹에 전달해야 하는 등의 일을 위해서는 일정한 변수 전달 방법이 필요하다.

이러한 일의 실행을 위해 사용되는 "표준 방법"이 CGI이다.

일반적으로 CGI는 아래와같은 과정을 거처 실행된다.

Requset -> Web server -> Execute program by Web server

img

위의 그림의 동작 과정을 살펴보면, 데이터는 클라이언트부터 서버로 전달된다.

서버는 사용자의 요청을 CGI로 넘기고, CGI는 사용자의 입력을 받아서 결과를 처리하고, 그 결과를 서버에 전달한다.

마지막으로, 서버는 응용프로그램의 결과를 서버에 전달하고, 서버와 클라이언트 간의 연결이 종료된다.

'ETC' 카테고리의 다른 글

[ETC] STRIDE Threat modeling 위협 모델링  (0) 2020.02.03
[C] mmap함수  (4) 2019.09.29