최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

   CGI


CGI (Common Gateway Interface)는 웹사이트와 웹사이트를 방문한 사람의 중간에 위치하며 


사이트를 보다 유연하고 융통성있게 만들어 주기위한 규약입니다.


일반적으로 HTML문서는 TV처럼 무조건 방문자에게 보여주기만 할 뿐 방문자가 원하는 것만 모아서 본다던지,


검색을 하거나 혹은 글을 남길 수가 없습니다.



이럴 때 CGI 프로그램이 홈페이지와 사용자 중간에서 여러 가지 기능을대신 해주는 것입니다.


보통 CGI프로그램을 CGI라고 부르기도 합니다. CGI를 만들 수 있는 언어로는 C/C++, Perl, Java등 다양한 언어


로 만들 수 있으며,컴파일 할 필요가 없고 문법이 간단하면서도 강력한 기능 때문에 Perl 언어가 주로 사용되고


있습니다. 요즘엔 이러한 언어보다 배우기 쉬운 php나 asp등의 스크립트로 제작되는 경우가 많아졌습니다.


본래 웹이란 것은, 일방적인 정보의 전송만이 가능했었습니다.


사용자가 요청, 서버는 보내주고, 사용자는 받는다.


이것이 전부였죠. 하지만 CGI는 그 이상의 것을 가능하게 했습니다.


사용자는 보내고,서버가 받아서 처리한 후 사용자에게 보내주면 사용자는 처리된 결과를 받는겁니다.


원래는 서버 -> 클라이언트의 일방적 모델인 웹(HTTP)가 서버 <->클라이언트의 양방향성을 지니게 된 것


입니다. CGI는 이런 것입니다. 요즘 많은 분들이 PERL과 CGI의 경계선을 어렵게 생각하고 있습니다.


하지만 이것은 어려운 것이 아니죠. CGI는 서버와 클라이언트의 양방향 전송 모델 그 자체입니다.


또는 그 모델을 기반으로 만들어진 프로그램을 말하는거죠. 하지만 PERL은 언어입니다.


본래 PERL이란, Practical Extraction and Report Language의준말로써, 텍스트 데이터를 분석, 처리하기 위한


언어입니다. 하지만 PERL은 웹과 연결된후, 많은 진보를 합니다. 그 가장 큰 이유는 바로 이것입니다.


'웹은 텍스트 기반이다.'라는거죠. 그러면 그것을 처리하기 위해 만들어진 언어인 PERL은 가장 훌륭한 도구가


될 수 밖에 없다는 겁니다.  PERL로 짜여진 게시판, 방명록, 카운터등은 각자 훌륭히 제 몫을 해내고 있습니다.


PERL은 배우기 쉽고 또 꽤나 안정적으로 돌기 때문에 많은 CGI들이 PERL로 개발되고 있죠.


하지만 요즘은 대세가 바뀌는 듯 합니다. PHP의 등장 때문이죠. 특별히 등장이라고 할 것도 없는 것이, PHP도


꽤(?) 오래된 것이랍니다. PHP는 한 개인의 편의에 의해 개발되었습니다.


그리고 PHP2에 이르러 좀더 발전적인 모습을 갖추고 PHP3에서 대중화됩니다.


그것은 My SQL과의 만남 때문이죠, My SQL 이라는 든든한 파트너가 함께하는 CGI를 '아주 간단히' 만들 수


있게 된 겁니다.


 

My SQL은 SQL기반의 DBMS의 일종입니다. DBMS란 Database Management System의 준말로 DB관리

 

시스템이란 말이죠. 즉 데이터를 유지 보수, 관리하기 위한 도구입니다.


그리고 SQL이란 Structured Query Language의 준말로 "구조화된 질의 언어"라는 뜻입니다.


즉, DB에 접근할때 구조화된 질의어를 가지고 접근한다는 뜻입니다. 이것은 DB접근 방식중 가장 인간이 이해하


기 쉬운방식이라고도 할 수 있습니다. 영어 기반의 '말' 과 비슷한 '질의어'로 데이터 선택이 가능하니까요.


CGI를 그냥 만들어서 쓰면 그만이지 이딴 단어들은 멋하러 외우냐? 라고 질문하시면 뭐...


잘난척하는 프로그래머의 습관일까요? 아닐겁니다. 기본이란거죠. 뭐든지 기본이 중요한 것은 여러분들도 잘


아실겁니다.


CGI의 기본은 어디에 있을까요? 그것은 CGI의 역할이 무엇인가를 생각하면 아주 간단하게 떠올릴 수 있습니다.

  

CGI의 기본은 웹의 전송방식인 HTTP(HyperText Transfer Protocol:하이퍼텍스트 전송 규약)에 있습니다.


CGI가 만들어낸 데이터는 어떤 조작을 해도 단 한가지의 목적으로밖에 쓰일 수 없다는 것입니다.


HTTP를 통해 나갈 수 있는 데이터는? 일단은 HyperText(HTML문서), 이미지 이 두가지가 가장 대표적인 것이


겠죠. 즉 CGI안에서 이 두가지를 생성해서 내보내 주는것이죠. 이해가 가십니까? 간단하게 말하면 사용자가 게시


판에 글을 쓴다는 것은 게시물을 서버측으로 보내고,서버는 받아서 처리한 후에 그 결과를 HTML로 보여주죠.  


그게 여러분이 읽으시는 글입니다. HTTP를 통해 전송되는 데이터는 두가지 부분으로 나뉘어집니다.


하나는 HTTP Header, 다른 하나는 Document Body입니다. HTTP Header란 것은, CGI에 대해 전혀 모르시는


분들이나, 단순한 웹페이지만 만들어보신 분들은 잘 모르시겠지만, CGI 경험이 조금 있으신 분들은 금방 아실겁니다.

 

자료출처 : http://home.everywow.com

 

'■ 개발관련 ■ > IT 용어' 카테고리의 다른 글

랜카드, 랜케이블  (0) 2013.10.13
POP / SMTP  (0) 2013.10.13
HTTP (hypertext transfer protocol)  (0) 2013.10.13
Network protocol  (0) 2013.10.13
DNS  (0) 2013.10.13
댓글