Published on

MIME, CGI, 웹서버

Authors
  • avatar
    Name
    JaeHyeok CHOI
    Twitter
    none

MIME

Multipurpose Internet Mail Extenstions

다목적 인터넷 메일 확장

이메일 시스템에서 다양한 종류의 파일을 전송할 수 있게 하는 표준 인터넷 프로토콜이다. MIME은 이메일 본문에 텍스트 이외의 다른 데이터 유형(이미지, 오디오, 비디오 등)을 첨부할 수 있게 해준다. MIME은 이메일 클라이언트와 서버 간에 파일 유형과 형식을 정확하게 인식하고 처리할 수 있도록 도와준다. 그러므로 MIME은 이메일 통신에서 다양한 유형의 파일을 안정적으로 전송할 수 있게 한다.

미디어 타입, MIME 타입, 콘텐츠 타입은 인터넷에 전달되는 파일 포맷과 포맷 컨텐츠를 위한 2 부분의 식별자이다.

미디어 타입은 원래1996년에 MIME 사양의 일부로써 이메일 메시지 콘텐츠와 첨부파일의 종류를 고지하기 위해 RFC 2045에 정의되었으며, 이를 근거로 MIME 타입이라는 이름이 만들어졌다.

HTTP/HTTPS 와 같은 인터넷 프로토콜, HTML 등에서도 사용된다.

예시


CGI

Common Gateway Interface

서버와 애플리케이션 간에 데이터를 주고 받는 방식 혹은 컨벤션을 CGI라고 한다.

웹 서버에서 동적인 페이지를 보여주기 위해 임의의 프로그램을 실행할 수 있도록 하는 기술 중 하나이다.

원래 웹 서버는 서버에 저장되어 있는 고정된 문서를 보여주는 역할을 했으나, 웹 서버에서 정보를 찾거나 기록을 하려면 웹 서버를 고쳐서 그런 기능을 넣어야 하지만 대신 웹 서버가 특정한 URL로 들어가면 요청을 원하는 프로그램에 적절히 넘겨주는 기술이 필요해 졌고 CHI가 같은 역할을 한다.

CGI 웹 서버와 외부 프로그램 혹은 스크립트 사이에서 통신을 하게 해주는 프로토콜이다. 이것은 웹 콘텐츠의 동적인 동작을 가능하게 하는 기반 기술이다.

  1. 목적 : CGI는 웹 서버가 서버에서 실행 중인 프로그램이나 스크립트와 통신하여 동적 웹 컨텐츠를 생성할 수 있도록 한다. 이는 정적인 HTML 파일만 제공하는 것이 아니라, 요청에 대응하여 프로그램이나 스크립트를 실행하고 다양한 요소(사용자 입력, 데이터베이스 쿼리, 환경 변수 등)를 기반으로 사용자 정의 컨텐츠를 생성할 수 있음을 의미한다.

  2. 동작 방식 : 웹 서버는 동적 컨텐츠를 필요로 하는 리소스에 대한 요청을 받으면 해당 CGI 스크립트나 프로그램을 호출한다. 서버는 환경 변수나 표준 입력을 통해 폼 데이터나 요청 헤더와 같은 필요한 매개변수를 CGI 스크립트에 전달한다. CGI 스크립트는 데이터를 처리하고 원하는 출력(일반적으론 HTML)을 생성한 다음 서버로 다시 전송하여 클라이언트의 웹 브라우저로 제공한다.

  3. 지원 언어 : 스크립트 작성언어 Perl, Python, PHP, C/C++ 등 표준 입출력을 사용하는 프로그래밍 언어라면 CGI 스크립트를 만드는데 쓸 수 있다.

  4. 실행 환경 : CGI 스크립트는 일반적으로 웹 서버에서 분리된 프로세스로 실행된다. CGI 스크립트가 호출될 때마다 웹 서버는 요청을 처리하기 위해 새 프로세스를 생성한다. 이는 프로그램 언어를 선택하고 복잡한 작업을 실행하는 유연성을 제공하나, 프로세스 생성 및 종료에 따른 오버헤드로 인해 트래픽이 많은 상황에서 성능 문제가 발생할 수 있다.

  5. 보안 고려 사항 : CGI 스크립트는 서버에서 실행되기 때문에 코드 인젝션이나 미승인된 액세스와 같은 보안 취약점을 방지하기 위해 주의 깊게 관리되어야 한다. 적절한 입력 유효성 검사, 출력 이스케이핑 및 액세스 제어 조치가 CGI 앱을 안전하게 만드는데 필수적이다.

  6. 진화 및 대안 : CGI 초기엔 혁신적이었으나, 성능 오버헤드와 보안 문제로 현대 웹 개발에서 인기가 떨어졌고, PHP, ASP.NET, Node.js 같은 서버 측 스크립팅 기술을 사용하거나 Django, Ruby on Rails, Laravel 등 웹 응용 프로그램 프레임워크를 사용해 동적 웹 앱을 개발한다.

요약

CGI는 동적 웹 컨텐츠의 초기 개발에 중요한 역할을 했으며, 고급 웹 기술을 위한 기초 기술로써의 가치가 있다.