11. Querying for Capabilities
11 Querying for Capabilities
OPTIONS ist eine Anfragemethode, die zum Abfragen der Fähigkeiten eines User Agent oder Proxy verwendet wird. Sie ähnelt HTTP/1.1 OPTIONS. Der Zielserver antwortet mit einer 200 (OK)-Antwort, die einen Nachrichtenrumpf mit der Beschreibung seiner Fähigkeiten enthält.
OPTIONS-Anfragen ermöglichen es, die Fähigkeit zum Aufbau eines Anrufs abzufragen, ohne den Anruf aufzubauen. Beispielsweise kann ein User Agent Client (UAC) ein OPTIONS an den User Agent Server (UAS) eines bestimmten Benutzers senden, um unterstützte Erweiterungen, Codecs usw. zu ermitteln. Dieser Ansatz wird jedoch für eine Erreichbarkeitsprüfung NICHT EMPFOHLEN (NOT RECOMMENDED), da die Fähigkeiten des Session Description Protocol (SDP) ebenfalls verwendet werden können, um die Erreichbarkeit zu prüfen. Stattdessen wird EMPFOHLEN (RECOMMENDED), ein INVITE mit einem Angebot zu senden und die Fehlerantwort (oder den Erfolg) zu beobachten. Der „in Anführungszeichen“ genannte Grund ist, dass ein UAC keine Authentifizierung durchführen kann, bevor er ein INVITE sendet, sodass ein Angreifer leicht eine OPTIONS-Anfrage fälschen könnte, um dem UAC die einfache Abfrage der Anwesenheit des Empfängers zu ermöglichen. Daher wird die OPTIONS-basierte Erreichbarkeitsprüfung durchbrochen, da das herkömmliche SIP-Verhalten die Authentifizierung des Empfängers erzwingt, um die Peer-to-Peer-Natur des Anrufs aufrechtzuerhalten.
OPTIONS-Anfragen können sowohl von einem UAC an einen UAS als auch von einem UAC an einen Proxy gesendet werden. (Da ein UAS ein Endpunkt ist, der als Proxy oder Redirect-Server agiert, ist das Senden eines OPTIONS an einen Proxy logisch äquivalent zum Senden an einen UAS.) Eine solche Anfrage DARF (MAY) verwendet werden, um die Fähigkeiten eines beliebigen Endpunkts in der durch den Request-URI der Anfrage identifizierten Domain abzufragen (gemäß dem Proxy-Verhalten in Abschnitt 16).
11.1 Erstellen einer OPTIONS-Anfrage
Eine OPTIONS-Anfrage wird mithilfe der in [4] definierten Entitätsvorlage erstellt, wobei die Zieladresse der Request-URI ist. Keine zusätzlichen Require- oder Proxy-Require-Header-Felder dürfen in diese Anfrage aufgenommen werden (MUST NOT).
Das Accept-Header-Feld dieser Anfrage DARF (MAY) ein Format angeben, das gegenüber allen anderen Mitteln der Fähigkeitsbeschreibung bevorzugt wird (SHOULD).
11.2 Verarbeitung von OPTIONS-Anfragen
Der Empfang einer OPTIONS-Anfrage wird wie der Empfang einer Nicht-INVITE-Anfrage behandelt. Ein UAS, der dieser Spezifikation entspricht, gibt für jede empfangene Methode, wenn die Anfrage anderweitig INVALID ist, eine 405 (Method Not Allowed)-Antwort zurück. Daher SOLLTE (SHOULD) ein Server, der die Fähigkeit der OPTIONS-Methode nicht unterstützt, beim Empfang einer OPTIONS-Anfrage 405 (Method Not Allowed) zurückgeben.
11.3 Erzeugen einer Antwort auf OPTIONS
Die Erstellung einer 200 (OK)-Antwort auf eine OPTIONS-Anfrage folgt den in Abschnitt 8.2.6 beschriebenen Verfahren. Der Rumpf der Antwort ist optional (OPTIONAL). Ist der Rumpf leer, enthält der 200 (OK) nur die erforderlichen Header-Felder (außer Contact). Die Header-Felder Allow, Accept, Accept-Encoding, Accept-Language und Supported werden EMPFOHLEN (RECOMMENDED), um die Fähigkeiten des UAS zu beschreiben. Der Nachrichtenrumpf DARF (MAY) für eine detailliertere Beschreibung der Fähigkeiten verwendet werden. Ein solcher Rumpf kann in einem beliebigen geeigneten Format vorliegen und muss (MUST) im Wesentlichen Informationen bereitstellen, die es dem Empfänger ermöglichen, die unterstützten Fähigkeiten zu verstehen und zu entscheiden, ob er sie verwendet.
11.4 Abfragen eines Proxys mit OPTIONS
Wenn ein Proxy eine OPTIONS-Anfrage empfängt, SOLLTE (SHOULD) er eine 200 (OK)-Antwort zurückgeben, die die Fähigkeiten beschreibt, die er unterstützt. Die Beschreibung der Proxy-Fähigkeiten SOLLTE (SHOULD) nur für eine OPTIONS-Anfrage zurückgegeben werden, deren Request-URI eine Adresse hat, die der Verantwortungsdomain des Proxys entspricht. Der Antwortcode 501 (Not Implemented) SOLLTE (SHOULD) zurückgegeben werden, wenn der Proxy eine solche Anfrage nicht unterstützt. Mit anderen Worten: Befindet sich der Core auf der Proxy-Seite, verarbeitet der Proxy die Anfrage wie jede andere Anfrage und erzeugt eine Antwort. Wenn ein Proxy seine eigene OPTIONS-Anfrage empfängt und sie nicht zu seiner Verantwortungsdomain auflösen kann, SOLLTE (SHOULD) er 404 (Not Found) zurückgeben (falls der URI nicht aufgelöst werden kann). Wenn ein Proxy seine eigene OPTIONS-Anfrage empfängt und sie zu seiner Verantwortungsdomain auflösen kann, aber seine Fähigkeiten nicht beschreiben möchte, SOLLTE (SHOULD) er 405 (Method Not Allowed) zurückgeben.