CGI란?

1999. 1. 21. 오후 8:31:46

2
글자

안녕하세요 아름바다 김민형입니다.

그 동안 인사가 늦었네요. 요즘 교육을 받느라 정신이 없어서..

 

제가 주로 하는 일이 인터넷 어플리케이션 개발이라, CGI와 Javascript를 많이 쓰지요.

 

우선 이번엔 CGI에 대해서 간단히 설명 드리고 다음은 다른 회원님들의 요구에

따라 글을 써 보도록 하지요.

 

CGI란!

 

CGI는 초기 HTML의 단순히 링크만 존재하는 정적인 페이지에 여러 값들을 받아들여

그에 맞는 반응을 보이는 페이지를 만들려 시도 되었습니다.

 

이때 브라우저에서 웹서버로 정보를 전달하고 그 정보를 가지고 웹서버에서 CGI 프로그램을 실행할 때 다시 웹서버로에서 CGI 프로그램으로 정보를 전달하는 표준을 모두 CGI라 합니다.

즉 CGI는 Common Gateway Interface의 약자입니다.

 

 

브라우저

1. CGI프로그램 지정, 변수 전달

웹서버

2. CGI프로그램실행, 변수 전달

CGI프로그램

---------------------->

- - - - - - - - - - - >

4. 실행결과 출력(HTML형태)

3. 실행결과 출력(HTML형태)

<----------------------

<- - - - - - - - - - -

그림1. CGI동작 형태

실선은 Network상으로 데이터 전달

점선은 시스템 내부에서 일어나는 데이터 전달

 

위의 그림에서 보듯이 1번과 2번과정에서 CGI Format을 이용하여 프로그램에 변수를 전달하고 CGI프로그램은 변수를 올바른 방법으로 전달받아 실행후 결과를 출력하는 구조를 가진다.

 

보통 카운터의 경우는 1.번과정에서 변수가 전달되지 않으므로 서버쪽에 파일 같은 곳에 숫자를 저장하였다. 프로그램이 실행되면 특정 파일에서 숫자를 읽어 카운트 하는 형태를 취하지요.

 

CGI를 이용하려면 브라우저에는 <FORM>테그를 이용하여 전달할 변수와 UI(User Interface<콤보박스나 Text Input같은 것을 만들고> 서버에서는 그 FORM과 연결되는 CGI프로그램(실행파일이나 스크립트)가 존재하여야 한다.

 

데이터 전달방법

브라우저에서 웹서버로 데이터를 전달하는 방법에는 크게 GET방법과 POST방법 두가지가 있다.

 

GET방법 url에 직접 사용하는 방법으로 예를 들어 알타비스타에서 검색을 할 때 CGI라고 입력을 하면 브라우저의 URL이 이렇게 바뀐다.

http://www.altavista.com/cgi-bin/query?pg=q&kl=XX&q=cgi

----------------------------------여기 까지가 CGI프로그램의 위치

?가 이제부터 변수를 전달한다면 의미

pg=q pg라는 이름의 변수의 값이 q라는 의미다.

& 변수와 값쌍이 하나 끝나고 다음 변수와 값의 쌍이 나온다는 것을 의미한다.

kl=XX

&

q=cgi여기에 search에 있는 text input란의 값이 들어간다.

 

만약 html을 찾는다면, q=html로 바껴서 보일 것이다.

이 때 웹서버는 query라는 프로그램으로 각 변수와 값쌍을 전달할때

QUERY_STRING이라는 환경변수를 이용하여 전달하게 된다.

query라는 프로그램에서 QUERY_STRING이라는환경변수 값을 살펴보면

QUERY_STRING의 값은 'pg=q&kl=XX&q=cgi'이 된다.

 

이 방법은 링크에 다른 CGI를 연결할 때 많이 사용한다. 보통 게시판에서 게시된 글을 보고 있다가 다음 글로 이동하는 버튼을 보면 아마 '...?변수=값&변수=값'으로 되어 있는 것을 볼 수 있을 것이다.

 

 

POST는 이와는 달리 <FORM METHOD=POST>라고 지정해야지만 값이 전달된다.

<FORM>테그와 기타 <INPUT>테그는 다음에 이어서 설명하기로 한다.

웹서버에서 CGI프로그램으로 값을 전달할 때는 stdin(standard input)을 이용하여 아까와 같을 Query String을 전달한다.

 

GET은 환경변수를 이용하기 때문에 주로 작은 데이터를 전송할 때 사용하고, POST는 큰 데이터나 파일을 업로드할 때 사용한다.

 

다음은 <FORM>테그와 <INPUT>테그 그리고 간단한 CGI프로그램을 만들어 보겠다. 참 CGI를 공부하시려면 기본적으로 WEB Server는 있어야 합니다.

 

질문사항은 게시판에 쓰세요. 다른 사람과도 공유해야 하니까요.

댓글 0

첫 댓글을 남겨보세요

[테크닉게시판] CGI

목록 전체보기 →