현대의 배포 도구를 이용하면 웹 콘텐츠의 생성, 배포, 관리를 더 쉽게 할 수 있다. 이제 웹 콘텐츠를 화면에서 직접 보면서 작성할 수 있고, 단 한 번의 클릭으로 모든 파일이 하나씩 배포되고 있다는 알림을 받으면서 서버에 콘텐츠를 배포할 수 있다.
#1. 배포 지원을 위한 FrontPage 서버 확장
FrontPage(FP)는 다양한 기능을 제공하는 마이크로소프트사의 웹 개발 및 배포 도구 집합이다. 웹 사이트 관리와 제작을 모두 할 수 있는 제품이다.
FrontPage 서버 확장
"어디서든 배포한다"라는 전략의 하나로 마이크로소프트는 FrontPage 서버 확장(FrontPage Server Extensions, FPSE)이라는 서버 측 소프트웨어 제품군을 출시하였다.
FP 클라이언트와 FPSE 사이에서 사용하는 FrontPage 배포 프로토콜은 HTTP POST 요청 위에 RPC 계층을 구현했다. 이를 이용하면 웹 사이트에 있는 문서를 갱신하고, 검색을 수행하고, 웹 개발자들 간에 공동 작업을 할 수 있게 FrontPage 클라이언트가 서버에 명령을 보낼 수 있다.
웹 서버는 FPSE에 맞춘 POST 요청을 받아 처리한다. 클라이언트와 서버 사이에 방화벽과 프락시 서버가 있더라도 POST 메서드 통신만 할 수 있으면 FrontPage는 서버와 통신을 계속 할 수 있다.
FrontPage 용어
- 가상 서버 : 웹 서버 한 개에서 웹 사이트 여러 개를 호스팅하며 각 사이트는 브라우저에서 자체 전용 서버가 있는 것처럼 보인다. 가상 서버를 지원하는 웹 서버를 다중 호스팅(Multi-hosting) , 여러 개의 IP 주소로 구성된 장비는 다중-홈(Multi-homed) 서버라 부른다.
- 루트 웹 : 웹 서버의 최상위 콘텐츠 디렉터리이거나 다중 호스팅 환경에서 가상 웹 서버의 최상위 콘텐츠 디렉터리이다.
- 서브 웹 : 루트 웹의 하위 디렉터리거나 완전한 FPSE 확장 웹인 다른 서브 웹의 하위 디렉터리다.
FrontPage RPC 프로토콜
FrontPage 클라이언트와 FPSE는 자체 RPC 프로토콜을 사용해 통신한다. 이 프로토콜은 RPC 메서드와 그와 관련한 변수를 POST 요청의 본문에 기술해서 HTTP POST를 감싼다.
- 요청 : POST 요청본문에는 "method=<command>" 형식의 RPC 명령과 함께 필요한 모든 매개변수가 기술되어 있다.
POST 명령의 본문에는 FPSE에 보내는 RPC 명령이 기술되어 있다. 기호들을 가독성 있게 만들면 다음과 같다.
service_name : 메서드가 수행되어야 하는 웹사이트의 URL. 폴더나 한 단계 아래 폴더가 존재해야 함
listHiddenDocs : 값이 "true"면 웹에 있는 숨겨진 문서가 보임.
listExploreDocs : 값이 "true"면 태스크 리스트를 나열한다.
- 응답 : RPC 프로토콜 메서드 대부분은 반환 값이 있다. 일반적인 반환 값은 성공 메서드와 에러다. FrontPage는 사용자에게 정확한 응답을 주려고 코드를 적절히 해석한다.
#2. WebDAV와 공동 저작
WebDAV는 고동 저작에 적합한 플랫폼을 제공하려고 HTTP를 확장하는 데 집중하였다. 예를 들어 다국적 다언어를 지원하는 자동자 제조사 웹 사이트를 배포한다면 잠금(locking)기능과 버저닝 같은 고동 작업 기능에 안전하고 믿을 만한 배포 기능까지 갖춘 탄탄한 시스템이 필요할 것이다.
WebDAV 메서드
WebDAV가 추가한 새로운 메서드
- PROPFINE : 리소스의 속성을 읽는다.
- PROPPATCH : 한 개 이상의 리소스에 대해 한 개 이상의 속성을 설정한다.
- MKCOL : 콜렉션을 생성한다.
- COPY : 특정 원본지에서 특정 목적지로 리소스나 리소스의 집합을 복사한다.
- MOVE : 특정 소스에서 특정 목적지에 리소스나 리소스의 집합을 이동시킨다.
- LOCK : 하나 이상의 리소스를 잠근다.
- UNLOCK : 기존에 잠겨있는 리소스를 잠금 해제한다.
WebDAV와 XML
WebDAV의 메서드는 요청과 응답 관련 정보를 모두 잘 다루어야 한다. 하지만 헤더에만 정보를 담아 전송하는 것은 하나의 요청에 있는 여러 개의 리소스나 계층 관계에 있는 리소스들에 대한 정보를 헤더에 선택적으로 기술하기 어려운 점 등 한계가 있다.
WebDAV는 이 문제를 해결하려고 XML(Extensible Markup Language)을 지원한다. WebDAV는 XML을 다음과 같은 용도로 사용한다.
- 데이터를 어떻게 처리할 것인지 설명하는 명령 포맷
- 서버의 복잡한 응답을 표현하는 데 사용하는 포맷
- 콜렉션과 리소스를 처리하는 데 사용하는 커스텀 정보 포맷
- 데이터 자체를 표현할 수 있는 유연한 포맷
WebDAV 헤더
WebDAV는 새로운 메서드들의 기능을 더 넓혀주는 여러 HTTP 헤더를 도입
- DAV : WebDAV를 제공하는 서버와 통신할 때 사용
- Depth : 여러 수준의 계층 구조로 분류된 리소스에 WebDAV를 사용하기 위한 중요한 요소
- Destination : COPY나 MOVE 메서드가 목적지 URI를 식별하는데 쓰인다.
- If : 조건 집한을 정의한다. 정의되어 있는 상태 토큰은 lock 토큰뿐이다.
- Lock-Token : 제거되어야 할 잠근(lock)을 명시하는 용도로 UNLOCK 메서드에서 사용한다.
- Overwrite : 대상을 덮어쓸 것인지 아닌지를 기술하는 데 쓰이며 COPY, MOVE 메서드에서 사용한다.
- Timeout : 클라이언트가 필요한 타임아웃 값을 기술하는 데 사용하는 요청 헤더다.
'HTTP' 카테고리의 다른 글
[HTTP] 클라이언트 식별과 쿠키(Cookie) (0) | 2020.05.04 |
---|---|
[HTTP] HTTP/2.0 (0) | 2020.05.04 |
[HTTP] 웹 로봇 (0) | 2020.05.04 |
[HTTP] 통합점: 게이트웨이, 터널, 릴레이 (0) | 2020.05.03 |
[HTTP] 캐시(Cache) (0) | 2020.05.03 |