# MMS-Protokoll

Das MMS-Protokoll (Microsoft Media Server Protocol) ist ein von Microsoft entwickeltes Protokoll der Anwendungsschicht, das der Übertragung von Multimedia-Streams dient.

## Begriffe

Die Abkürzung MMS steht für Microsoft Media Server. Das Protokoll wurde also nach der zugehörigen Server-Software benannt, deren vollständige Bezeichnung Microsoft Windows Media Server lautet und Teil des Softwarepakets Windows Media Services ist (früher Microsoft NetShow Services). Als Client-Software kommt typischerweise der Windows Media Player zum Einsatz. Zusammenfassend spricht man von den sogenannten Windows Media Technologies. Der Computer, auf dem die Server-Software läuft, heißt Streaming Media Server.

## Erzeugung einer MMS-Sitzung

Das MMS-Protokoll wird von einem Client gestartet, der einen URL mit dem Präfix „mms://“ verarbeiten will. Er baut zunächst eine TCP-Verbindung zu Port 1755 des Servers auf, um seine IP-Adresse und einen selbst gewählten UDP-Port zu übermitteln. Daraufhin erzeugt der Server einen UDP-Socket und verbindet ihn mit dem gewünschten Port des Clients. Die Übertragung der Multimediadaten erfolgt dann über diese UDP-Verbindung (MMSU), während die TCP-Verbindung für Steuerungsbefehle genutzt wird. Es kann jedoch vorkommen, dass die UDP-Verbindung von einer Firewall verhindert wird. In diesem Fall kann der Client die Übertragung der Multimediadaten ebenfalls über die für diesen Zweck jedoch weniger gut geeignete TCP-Verbindung anfordern (MMST). Wenn auch das fehlschlägt, muss die dritte Möglichkeit genutzt werden, bei der die Kommunikation über HTTP erfolgt. Dieser Vorgang, bei dem die passende Protokollvariante ausgehandelt wird, bezeichnet man auch als „protocol rollover“. Aufgrund der besseren Echtzeiteigenschaften wird die MMSU-Variante dabei stets bevorzugt, hier besteht auch die Möglichkeit, verlorene Pakete erneut anzufordern, falls genug Zeit vorhanden ist. Die ersten MMS-Pakete bei Sitzungsaufbau enthalten an Offset=12 die Kennung „MMS“.

## Windows-Media-Formate

* Das „Advanced Streaming Format“ (.asf) ist das für die Multimediadaten erforderliche Dateiformat. Darin kann ein Stream in unterschiedlichen Kompressionsraten bereitgehalten werden, wodurch eine bessere Bandbreitenanpassung ermöglicht wird.
* Die „Advanced Stream Redirector metafiles“ (.asx) ermöglichen Hyperlinks auf Streams und die Spezifikation mehrteiligen Inhalts, realisieren also Playlists. Sie enthalten auch Regeln für den „protocol rollover“-Mechanismus.
* Die „Microsoft Windows Media Station metafiles“ (.nsc) dienen der Unterstützung von Multicasting und beschreiben eine Art Kanal, auf welchen der Client ähnlich wie auf einen Fernsehkanal zugreifen kann.

## Anpassung an die Bandbreite

Der Client einigt sich mit dem Server zunächst auf ein Qualitätsniveau der Übertragung, das zur vorhandenen Bandbreite passt. Voraussetzung dafür ist die Verwendung einer ASF-Datei, die den Stream zu unterschiedlichen Datenraten kodiert bereithält. Falls später die Bandbreite nachlässt, kann der Client zusätzlich den Stream dynamisch ausdünnen, wobei eine kontinuierliche Anpassung von „full frames“ bis hinunter zu „key-frame only“ möglich ist. Bei solcherart reduzierter Bandbreite hat dann stets der Ton die Priorität vor dem Bild. Verbessern sich die Bandbreitenbedingungen anschließend, so kann die Video-Bitrate wieder bis zum Optimum aufgestockt werden. Diese Möglichkeiten, den Datenstrom an eine veränderliche Bandbreite anzupassen, werden unter dem Begriff „Smart Streaming“ zusammengefasst.

## Unicast und Multicast

Wird der Server im Unicast-Modus betrieben, so ist für jeden Empfänger eine eigene Verbindung nötig, und die Daten müssen jedes Mal erneut gesendet werden. Der Client kann den Datenstrom dann „on-demand“ empfangen, hat also die Kontrolle über den Abspielvorgang (zum Beispiel Start, Stopp, Pause oder Suchlauf), vergleichbar mit einem Videorekorder. Multicasting dagegen bedeutet, dass viele Empfänger gleichzeitig den einmal gesendeten Datenstrom empfangen können. Dazu muss das Netzwerk multicast-fähig sein und der Server im Multicast-Modus betrieben werden. Man spricht in diesem Fall auch von Broadcast-Empfang, vergleichbar mit dem Empfang eines Fernsehprogramms, das heißt, der Empfänger kann den Abspielvorgang nicht kontrollieren. Der Vorteil besteht dann in einer erheblich geringeren Beanspruchung des Netzwerks.

## HTTP-Streaming

Beim HTTP-Streaming kann das URL-Präfix zwar ebenfalls „mms://“ lauten, es handelt sich aber im Gegensatz zu dem in diesem Artikel beschriebenen MMS-Streaming um eine grundsätzlich andere Technologie, bei der man anstelle der „Windows Media technologies“ HTTP bzw. einen HTTP-Server verwendet, der um einige Funktionen erweitert wurde, um bessere Echtzeiteigenschaften zu erhalten. Dies ist aber nicht zu verwechseln mit der oben beschriebenen Methode des MMS-Streamings über HTTP.

## Herunterladen

Normalerweise ist das dauerhafte Speichern von den über das MMS-Protokoll empfangenen Multimedia-Dateien nicht möglich und auch nicht erwünscht, daher wurde die genaue Spezifikation des MMS-Protokolls auch lange Zeit von Microsoft geheim gehalten (Veröffentlichung der Protokollspezifikation am 8. Februar 2008, Newseintrag von SDP Multimedia vom 27. März 2008). Dennoch existieren neben dem SDP Downloader und einigen anderen wie beispielsweise Nettransport oder auch dem Player VLC diverse freie Programme, mit denen das Speichern von Streams möglich ist.

## Quellen

* Protokollspezifikation
* Funktion des Streaming Media-Servers: Konfigurieren eines Streaming Media-Servers
* Windows Media Technologies Application Development
* Firewall and NAT Support for Streaming over MMS