2003. 8. 14. 14:21

2003/8/14

. CGI 의 개념 CGI(Common Gate Interface)란 서버와 외부 스크립트 또는 프로그램과 상호작용할 때 이루어지는 입출력을 정의한 표준이며, 이 표준에 맞추어 만들어진 것이 CGI 스크립트 또는 CGI 프로그램 이며 CGI 프로그램은 어떤 프로그래밍 언어로도 만들 수 있습니다.  . 서버(server)와 클라이언트(client) 온라인에서 클라이언트는 정보를 요청하는 컴퓨터이고 서버는 클라이언트의 요청에 따라 결과를 돌려주는 컴퓨터라고 생각하면 됩니다. 예를 들어, 내 컴퓨터가 인터넷의 어느 사이트로 접속을 할 때 내 컴퓨터는 그 사이트의 서버에게 HTML 같은 문서나 파일을 요청하고 서버는 요청을 받으면 결과를 내 컴퓨터에게 보내줍니다. 이때 내 컴퓨터는 클라이언트가 되고 그 사이트는 서버가 되는 것입니다.  . CGI의 동작원리  Client <==> Server <==> CGI Program  일반적인 경우 서버가 클라이언트로부터 특정 문서, 예를 들어 HTML 문서를 하이퍼링크를 통해서 요청을 받을 때 서버는 파일시스템으로부터 요청된 문서를 읽어서 클라이언트로 전송을 하게됩니다. CGI의 경우 클라이언트나 서버 이외에 CGI 프로그램이 있어서, 클라이언트가 요청한 URL이 CGI 프로그램일 경우, 서버는 CGI 프로그램을 호출해서 요청된 정보를 넘겨줍니다. CGI 프로그램은 전달된 데이터를 근거로 프로그램을 실행시켜 출력결과를 서버로 보내주면 서버는 다시 클라이언트로 결과를 전송하게 됩니다.  . CGI를 사용하는 이유 일반적인 HTML 파일의 경우를 정적페이지(static page), CGI를 통해 실시간으로 생성되는 페이지를 동적페이지(dynamic page)라고 합니다. 정적페이지일 경우 내용을 변경하려면 일일이 편집을 해야하고 클라이언트에서는 단지 고정된 페이지를 전송받는 단방향 통신이라는 한계점이 있습니다. 동적페이지는 사용자의 입력을 처리해서 데이타로 생성, 저장, 변경 등을 가능하게 하고 그 데이타를 이용하여 실시간으로 결과를 보여준다는 점 이외에도 많은 기능을 제공하기 때문에 웹사이트를 운영하는데 매우 효율적이며 사용자와 상호작용(interactive)하는 서비스를 가능하게 합니다.
Q : CGI 가 PHP 보다 서버에 부하를 많이 준다던데요...
A : 표현이 잘못된 것입니다.

CGI 는 Common Gateway Interface 의 약자로, Perl, C/C++, JAVA, PHP, ASP 등으로 만들어집니다.
따라서, CGI 와 PHP 를 따로 구분하는 것은 잘못된 것입니다.
서버의 부하는 CGI 제작에 사용된 언어의 영향보다, 프로그래머의 정성에 더욱 민감합니다.
만일 프로그래머가 CGI 를 제작할 때, 성의없이 제작하였다면, 서버의 부하는 막을 수 없습니다.


Q : CGI를 설치하려고 하는데, 어떤 것이 좋을까요?
A : 우선, CGI의 사용 목적을 분명히 해주셔야 합니다.

만일, 카운터나 현재 접속자 수등의 단순한 CGI 라면 어떤 언어로 된 것이든 상관이 없습니다.

게시판이나 방명록등의 경우, 접속자 수가 적을 때에는 Perl 쪽이 좋습니다.
그 이유는 보다 다양한 기능들을 쉽게 추가할 수 있기 때문이지요.

접속자가 많은 경우에는 C/C++ 이나 ASP, PHP 등이 좋습니다.
그래야 서버의 부하를 줄이고, 보다 안정적으로 사용할 수 있으니까요.

회사의 홈페이지와 같은 경우에는 ASP 가 좋습니다.
회사의 경우는 대부분 윈도우 서버이며, Perl이나 C/C++ 보다 윈도우에 최적화 된데다가,
Access, Excel 등과 연동시킬 수 있는 등, 여러가지 장점이 생긴답니다.

다만, ASP, PHP 등의 경우에는 보안에 취약한 부분이 많기 때문에 주의하셔야 합니다.


Q : 왜 PHP 나 ASP 가 보안에 문제가 있다고 하는 걸까요?
A : '권한'이라는 개념이 없기 때문입니다.

일반적으로, 파일을 업로드하게 되면 해당 파일은 브라우저를 통해 '실행'시킬 수 없습니다.
그러나, PHP, ASP 등의 경우에는 웹서버 프로그램이 관련된 '해석기'를 통해 '실행'시켜 줍니다.