나중에 찾아보기 위해 RFC 2446을 번역된 것 남김.

iCalendar Transport-Independent Interoperability Protocol (iTIP)
Scheduling Events, BusyTime, To-dos and Journal Entries

2 Interoperability Models

상호 운용성과 관련된 프로토콜에는 "응용 프로그램 프로토콜"과 "전송 프로토콜"이라는 두 가지가 있습니다. 애플리케이션 프로토콜은 위에 나열된 스케줄링 트랜잭션을 수행하기 위해 발신자와 수신자 간에 전송되는 iCalendar 개체의 내용을 정의합니다. 전송 프로토콜은 발신자와 수신자 간에 iCalendar 개체를 전송하는 방법을 정의합니다. 이 문서는 애플리케이션 프로토콜에 중점을 둡니다. iMIP]와 같은 바인딩 문서는 전송 프로토콜에 중점을 둡니다.

아래 다이어그램에서 발신자와 수신자 간의 연결은 애플리케이션 프로토콜을 참조합니다. 발신자에서 수신자에게 전달되는 iCalendar 개체는 섹션 3, 애플리케이션 프로토콜 요소에 나와 있습니다.

   +----------+                      +----------+
   |          |        iTIP          |          |
   |  Sender  |<-------------------->| Receiver |
   |          |                      |          |
   +----------+                      +----------+

이 다이어그램에는 발신자와 수신자가 'Calendar User Agent(CUA)' 또는 'Calendar Service(CS)'의 다양한 역할을 맡는 여러 가지 변형이 있습니다.

iTIP의 아키텍처는 아래 다이어그램에 나와 있습니다. 이 사양에 따라 작성된 애플리케이션은 저장 후 전달 전송, 실시간 전송 또는 둘 다에 대한 바인딩과 함께 작동할 수 있습니다. 또한 iTIP는 다른 전송에 바인딩될 수도 있습니다.

   +------------------------------------------+
   |                   iTIP                   |
   +------------------------------------------+
   |Real-time | Store-and-Fwd | Other         |
   |Transport | Transport     | Transports... |
   +------------------------------------------+

2.1 Application Protocol

iTIP 모델에서 캘린더 항목은 "주최자"가 생성하고 관리합니다. "주최자"는 위에 나열된 iTIP 메시지 중 하나 이상을 전송하여 다른 CU와 상호 작용합니다. "참석자"는 "회신" 방법을 사용하여 자신의 상태를 전달합니다. "참석자"는 마스터 캘린더 항목을 직접 변경할 수 없습니다. 그러나 "카운터" 방법을 사용하여 "주최자"에게 변경 사항을 제안할 수 있습니다. 어떤 경우든 "주최자"는 마스터 캘린더 항목을 완전히 제어할 수 있습니다.

2.1.1 Calendar Entry State

캘린더 항목과 관련된 상태에는 항목의 전체 상태와 해당 항목의 '참석자'와 관련된 상태라는 두 가지가 있습니다.

항목의 상태는 "상태" 속성에 의해 정의되며 "주최자"에 의해 제어됩니다. "상태" 속성에는 기본값이 없습니다. "주최자"는 "상태" 속성을 각 일정관리 항목에 적합한 값으로 설정합니다.

항목과 관련된 특정 "참석자"의 상태는 각 "참석자"의 "참석자" 속성에 있는 "partstat" 매개변수에 의해 정의됩니다.  "주최자"가 초기 항목을 발행하면 "참석자" 상태를 알 수 없습니다. "주최자"는 "partstat" 매개변수를 "NEEDS-ACTION"으로 설정하여 이를 지정합니다. 각 "참석자"는 "참석자" 속성의 "partstat" 매개변수를 적절한 값으로 수정하여 "주최자"에게 다시 보내는 "REPLY" 메시지의 일부로 사용합니다.

2.1.2 Delegation

위임은 "참석자"가 다른 CU(또는 여러 CU)에 자신을 대신하여 참석할 수 있는 권한을 부여하는 절차로 정의됩니다. "주최자"는 위임하는 "참석자"가 "주최자"에게 알리기 때문에 이러한 변경 사항을 알게 됩니다. 이러한 단계는 요청 방법 섹션에 자세히 설명되어 있습니다.

2.1.3 Acting on Behalf of other Calendar Users

많은 조직에서 한 사용자가 다른 사용자를 대신하여 미팅 요청을 조직하거나 응답합니다. ITIP는 이러한 활동을 지원하는 두 가지 메커니즘을 제공합니다.

첫째, '주최자'는 '참석자'와는 별개의 특수한 개체로 취급됩니다. '참석자'의 모든 응답은 '주최자'에게 전달되므로 미팅을 조직하는 캘린더 사용자와 미팅에 참석하는 캘린더 사용자를 쉽게 구분할 수 있습니다. 또한, iCalendar는 각 "참석자"에 대해 설명적인 역할을 제공합니다. 예를 들어, '의장'이라는 역할은 한 명 이상의 '참석자'에게 할당될 수 있습니다. "의장"과 "주최자"는 동일한 캘린더 사용자일 수도 있고 아닐 수도 있습니다. 이는 어시스턴트가 회의의 의장을 맡은 다른 사람을 위해 회의 일정을 관리할 수 있는 시나리오에 잘 부합합니다.

둘째, '보낸 사람' 매개변수는 '주최자' 또는 '참석자' 속성 중 하나에 지정할 수 있습니다. 지정된 경우, "보낸 사람" 매개변수는 응답하는 CU가 지정된 "참석자" 또는 "주최자"를 대신하여 작업했음을 나타냅니다.

2.1.4 Component Revisions

"SEQUENCE" 속성은 "주최자"가 캘린더 구성 요소의 수정본을 표시하는 데 사용됩니다. "SEQUENCE" 숫자를 증가시키는 규칙은 [iCAL]에 정의되어 있습니다. 명확성을 위해 여기서는 이러한 규칙을 [iTIP]에서 적용되는 방식에 따라 의역했습니다. 캘린더 컴포넌트에서 주어진 "UID"에 대해:

. "PUBLISH" 및 "REQUEST" 메서드의 경우, [iCAL]에 정의된 규칙에 따라 "SEQUENCE" 속성 값이 증가합니다.
. "주최자"가 "추가" 또는 "취소" 메서드를 사용할 때마다 "SEQUENCE" 속성 값은 반드시 증가해야 합니다.
. "응답", "새로고침", "카운터", "선언 카운터"를 사용하거나 "요청" 위임을 보낼 때 "SEQUENCE" 속성 값을 증가시키면 안됩니다.

경우에 따라 "주최자"는 발송된 최종 수정본에 대한 응답을 받지 못할 수도 있습니다. 이 경우 "주최자"는 업데이트 "REQUEST"를 보내고 모든 "참석자"에 대해 "RSVP=TRUE"를 설정하여 현재 응답을 수집할 수 있도록 할 수 있습니다.

 

"참석자"의 응답에 포함된 "SEQUENCE" 속성 값은 "주최자"의 수정본과 항상 일치하지 않을 수 있습니다. 구현은 CUA가 CU에 응답이 수정된 항목에 대한 것임을 표시하고 CU가 응답을 수락할지 여부를 결정하도록 선택할 수 있습니다.

2.1.5 Message Sequencing

iTIP] 애플리케이션 프로토콜을 처리하는 CUA는 종종 캘린더 저장소의 구성 요소와 [iTIP] 메시지로 수신된 구성 요소를 연관시켜야 합니다. 예를 들어, 이벤트가 동일한 이벤트의 이후 개정판으로 업데이트될 수 있습니다. 이를 위해 CUA는 캘린더 저장소에 이미 있는 이벤트의 버전과 [iTIP] 메시지로 전송된 버전을 상호 연관시켜야 합니다. 이러한 상관관계 외에도 [iTIP] 메시지가 예기치 않은 순서로 도착하는 원인이 될 수 있는 몇 가지 요인이 있습니다.  즉, '주최자'가 구성 요소의 이전 버전에 대한 회신을 받은 후에 이후 버전에 대한 회신을 받을 수 있습니다.

상호 운용성을 극대화하고 예기치 않은 순서로 도착하는 메시지를 처리하려면 다음 규칙을 사용하세요:

 

  1. 특정 iCalendar 구성 요소를 참조하기 위한 기본 키는 "UID" 속성 값입니다. 반복 구성 요소의 인스턴스를 참조하기 위해 기본 키는 "UID" 및 "RECURRENCE-ID" 속성으로 구성됩니다.
  2. 컴포넌트를 참조하기 위한 보조 키는 "SEQUENCE" 속성 값입니다.  "UID"가 동일한 컴포넌트의 경우, "SEQUENCE" 속성 값이 가장 높은 컴포넌트가 낮은 값을 가진 컴포넌트의 다른 모든 리비전을 무시합니다.
  3. "참석자"는 "주최자"에게 "REPLY" 메시지를 보냅니다.  "UID" 속성 값이 동일한 답장의 경우, "SEQUENCE" 속성 값은 "참석자"가 답장하는 구성 요소의 리비전을 나타냅니다.  "SEQUENCE" 속성의 가장 높은 숫자 값을 가진 회신은 낮은 값을 가진 다른 모든 회신을 무시합니다.
  4. "UID" 및 "SEQUENCE" 속성이 일치하는 경우, "DTSTAMP" 속성이 동점자로 사용됩니다. 가장 최근의 "DTSTAMP"를 가진 구성 요소가 다른 모든 구성 요소보다 우선합니다. 마찬가지로 "UID" 속성 값이 일치하고 "SEQUENCE" 속성 값이 일치하는 "참석자" 응답의 경우 가장 최근의 "DTSTAMP"가 있는 응답이 다른 모든 응답보다 우선합니다.

따라서 CUA는 다음 구성 요소 속성을 유지해야 합니다: "UID", "RECURRENCE-ID", "SEQUENCE" 및 "DTSTAMP".  또한 구성 요소의 각 "참석자" 속성에 대해 CUA는 "참석자"의 응답과 관련된 "SEQUENCE" 및 "DTSTAMP" 속성 값을 유지해야 합니다.

+ Recent posts