SCGI
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
SCGI는 닐 셰메나워가 2001년에 최초 명세를 발표한 프로토콜로, 웹 서버와 애플리케이션 간의 통신을 위한 인터페이스이다. 클라이언트는 8비트 바이트 전송을 지원하는 신뢰할 수 있는 스트림 프로토콜을 통해 SCGI 서버에 연결하여 요청을 보낸다. 요청은 넷스트링으로 인코딩된 헤더와 본문으로 구성되며, 응답은 CGI와 유사한 HTTP 응답 형식을 따른다. SCGI는 아파치, 체로키, Lighttpd, nginx 등 다양한 웹 서버에서 구현되며, 코브라, D, Go, Perl, Python, Ruby, Rust 등 여러 프로그래밍 언어에서 바인딩을 지원한다.
더 읽어볼만한 페이지
- 네트워크 프로토콜 - UUCP
UUCP는 유닉스 시스템 간 파일 복사, 원격 명령 실행, 이메일 및 유즈넷 뉴스 전송을 위한 프로토콜 및 프로그램 모음으로, 초기 인터넷 확장에 중요한 역할을 했으나 TCP/IP 기반 서비스 보편화로 사용이 감소했다. - 네트워크 프로토콜 - 프레임 릴레이
프레임 릴레이는 LAN 간 또는 WAN 종단점 간 데이터 전송을 위한 고속 패킷 교환 방식 통신 프로토콜로, X.25 프로토콜을 간소화하여 속도를 높이고, 영구 가상 회선을 통해 안정적인 연결을 제공하며, 서비스 품질 설정을 통해 프레임 우선순위를 지정할 수 있었으나, 현재는 다른 기술에 밀려 사용이 감소하고 있다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
| SCGI | |
|---|---|
| 개요 | |
| 이름 | 단순 공통 게이트웨이 인터페이스 |
| 약자 | SCGI |
| 종류 | 프로토콜 |
| 계층 | 애플리케이션 계층 |
| 설명 | 웹 서버와 애플리케이션 간 통신을 위한 프로토콜 |
| 기술 세부 사항 | |
| 기반 | CGI를 대체하기 위해 만들어짐 |
| 목표 | CGI의 단점 극복 |
| 특징 | 소켓 기반 프로토콜, 지속적인 연결 지원 |
| 장점 | CGI보다 효율적인 자원 관리, 더 나은 성능 |
| 역사 | |
| 개발 배경 | CGI의 성능 문제 해결 필요성 |
| 영향 | 웹 애플리케이션 성능 향상에 기여 |
| 관련 기술 | |
| 관련 기술 | FastCGI, WSGI |
| 비교 | 다른 웹 서버 인터페이스 기술과 비교 분석 |
| 구현 | |
| 구현체 | 다양한 프로그래밍 언어 및 웹 서버에서 구현 가능 |
| 예시 | 구현 예제 코드 또는 라이브러리 정보 |
2. 역사
SCGI 프로토콜은 2001년 10월 닐 셰메나워가 처음 발표했으며,[1] 2002년 4월에는 그가 개발한 SCGI의 첫 구현이 공개되었다.[2]
2. 1. 초기 개발
2001년 10월, 닐 셰메나워(Neil Schemenauer)가 SCGI 프로토콜의 최초 명세를 발표했다.[1] 그는 2002년 4월에 SCGI의 첫 번째 구현을 공개했다.[2]3. 명세
클라이언트는 8비트 바이트 전송을 허용하는 신뢰할 수 있는 스트림 프로토콜을 통해 SCGI 서버에 연결하여 요청을 전송한다. SCGI 서버는 요청의 끝을 감지하면 응답을 다시 보내고 연결을 닫는다. 응답 형식은 이 프로토콜에 의해 특별히 지정되지 않지만, 일반적으로 CGI와 동등한 HTTP 응답이 사용된다.[1]
3. 1. 요청 형식
SCGI 요청은 넷스트링으로 인코딩된 헤더와 본문의 연결이다.각 헤더는 이름-값 쌍으로 구성되며, 이름과 값은 모두 널 종료 문자열(C 문자열)이다. 값은 빈 문자열일 수 있으며, 이 경우에도 종료 널은 유지된다. 이름이나 값은 임베디드 널 바이트를 포함할 수 없다.
제공된 모든 헤더는 연결되어 단일 바이트 시퀀스를 형성한 다음 넷스트링으로 인코딩된다. 그런 다음 원시 본문(있는 경우)이 추가된다.
요청 헤더에는 중복된 이름이 허용되지 않는다. RFC 2616 호환 헤더 결합이 이미 이루어져야 한다. 첫 번째 요청 헤더는 "CONTENT_LENGTH"라는 이름을 가져야 하며, 값은 본문의 길이를 10진수로 나타낸다. "CONTENT_LENGTH" 요청 헤더는 값이 "0"이더라도 항상 존재해야 한다. 또한 "SCGI"라는 이름과 "1"의 값을 가진 요청 헤더가 항상 있어야 한다. 이전 CGI 프로그램을 SCGI로 변환할 때 호환성을 위해 표준 CGI 환경 변수가 SCGI 헤더에 제공되어야 한다. 요청에 제공된 본문(있는 경우)은 헤더 다음에 오며, 길이는 "CONTENT_LENGTH" 요청 헤더에 의해 지정된다.
3. 2. 응답 형식
SCGI 서버는 요청의 끝을 감지하면 응답을 보내고 연결을 닫는다. 응답 형식은 이 프로토콜에 의해 특별히 지정되지 않지만, 일반적으로 CGI와 동등한 HTTP 응답이 사용된다.[1]3. 3. 예시
웹 서버(SCGI 클라이언트)는 연결을 열고 다음 문자열을 서비스 프로세스(SCGI 서버)로 보낸다.: ''"70:"''
: ''"CONTENT_LENGTH" <00> "27" <00>''
: ''"SCGI" <00> "1" <00>''
: ''"REQUEST_METHOD" <00> "POST" <00>''
: ''"REQUEST_URI" <00> "/deepthought" <00>''
: '","'
: ''"인생의 답은 무엇인가?"''
SCGI 서버는 다음과 같은 응답을 웹 서버로 보낸다.
: ''"Status: 200 OK" <0d 0a>''
: ''"Content-Type: text/plain" <0d 0a>''
: ''"" <0d 0a>''
: ''"42"''
SCGI 서버는 연결을 닫는다.
4. SCGI를 구현하는 웹 서버
- 아파치 HTTP 서버
- 체로키
- Lighttpd
- 마이크로소프트 인터넷 정보 서비스(http://isapi-scgi.sourceforge.net/ ISAPI SCGI 확장 포함)
- nginx
- Althttpd[3]
5. SCGI API를 위한 언어 바인딩
SCGI는 네트워크 소켓과 넷스트링을 지원하는 모든 언어로 구현될 수 있다. 다음은 SCGI 바인딩이 알려진 언어의 부분 목록이다.
| 프로그래밍 언어 | 라이브러리 / 프레임워크 |
|---|---|
| 코브라 | |
| D | [https://github.com/adamdruppe/arsd/blob/master/cgi.d#57 arsd.cgi] |
| Emacs Lisp | [https://www.github.com/skangas/url-scgi/ url-scgi] |
| Go | [https://pkg.go.dev/github.com/mjl-/scgi scgi] |
| 하스켈 | |
| 자바 | [https://gist.github.com/38425 SCGI connector] 또는 [https://github.com/szabogabriel/jSCGI] |
| Lisp | |
| Perl | [https://metacpan.org/release/SCGI SCGI] 패키지 또는 [https://plackperl.org/ Plack] 프레임워크 |
| PHP | |
| 파이썬 | |
| Racket | [http://www.neilvandyke.org/racket/scgi/ scgi] |
| 루비 | |
| Rust | [https://crates.io/crates/tokio-scgi tokio-scgi] |
| Scheme | |
| Tcl | |
| Nim |
참조
[1]
웹사이트
SCGI: A Simple Common Gateway Interface alternative
http://python.ca/nas[...]
2001-10-30
[2]
웹사이트
scgi-0.1.tar.gz
http://www.mems-exch[...]
2002-04-12
[3]
웹사이트
Althttpd: The Althttpd Webserver
https://sqlite.org/a[...]
2023-05-19
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com