RFC 2122

VEMMI URL Specification

๐Ÿ“… published March 1997, from ietf

RFC 2122: VEMMI URL Specification ๐ŸŽ€

okay bestie, this is the spec for the vemmi URL scheme โœจ It was written in March 1997 by three people: D. Mavrakis from Monaco Telematique MC-TEL, H. Layec from ETSI, and K. Kartmann from Telecommunication+Multimedia ๐ŸŒธ It's on the Standards Track ๐Ÿ‘‘ and the title block doesn't list anything it obsoletes or updates.


Status of this Memo ๐Ÿ“œ

This document specifies an Internet standards track protocol for the Internet community, and asks for discussion and suggestions for improvements ๐Ÿ’– For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐Ÿซถ Distribution of this memo is unlimited ๐Ÿฆ‹


1) Abstract โœจ

So a new URL scheme called "vemmi" is defined ๐Ÿงš It lets VEMMI client software and VEMMI terminals connect to multimedia interactive services that follow the VEMMI standard. VEMMI stands for Enhanced Man-Machine Interface for Videotex and Multimedia/Hypermedia Information Retrieval Services, and it's sometimes shortened to "VErsatile MultiMedia Interface" ๐Ÿ’…

VEMMI is a brand new international standard for on-line multimedia services ๐Ÿ”ฅ It's both an ITU-T (International Telecommunications Union, ex. CCITT) International Standard (T.107) [2] and a European Standard from ETSI (European Telecommunications Standard Institute) ๐Ÿ’œ That European one is ETS 300 382 [3], which has been obsoleted by ETS 300 709 [1] ๐Ÿ™ˆ

VEMMI could be described as an on-line multimedia protocol that covers both the man-machine interface and the client/server exchange protocol ๐ŸŒˆ It usually runs on a single continuous session between a client and a host, and it supports an object-oriented, event-driven, client/server oriented and platform independent multimedia interface โœจ The well-known tcp port number 575 has been assigned by IANA to the VEMMI protocol [13] ๐ŸŽ€

A description of the VEMMI standard, along with its last approved version, is publicly available on the Web at http://www.etsi.fr/ecs/projects/vemmi/vemmi.htm) ๐ŸŒธ A presentation of VEMMI can be found at http://www.mctel.fr/VEMMI/vemmien_intro.html ๐Ÿฆ‹


2) VEMMI URL scheme utility and operability ๐Ÿ’–

  • VEMMI service selection: A VEMMI multimedia server listens on its VEMMI well-known port for incoming connections ๐Ÿงš The server could be busy with many simultaneous connections at once. After a connection is set up, the terminal must be able to select the desired VEMMI application, because one system can host different VEMMI applications ๐Ÿ‘‘ The best way to fully describe the VEMMI service you want to activate is the URL mechanism ๐Ÿซถ
    • Reporting user action to a remote server: The VEMMI protocol sets up a continuous TCP/IP link between the terminal and the server for the whole user session ๐Ÿ”ฅ During a session that manages VEMMI objects, user actions are usually reported back to the server using the VEMMI user data report mechanism, which is an integral part of the VEMMI protocol ๐Ÿ’…
    • Sometimes though, the URL mechanism may be required to send reports back to a remote host ๐Ÿ™ˆ VEMMI can, for example, display HTML documents inside a multimedia display area in a VEMMI dialog box ๐ŸŒˆ These HTML documents may be managed either by the VEMMI server (acting as a proxy gateway), or directly by the client software, which issues its own HTTP requests on the network and browses documents on the Web like a standard Web browser ๐Ÿฆ‹ The link to the VEMMI server is kept and used for interacting with other VEMMI objects and components, but the VEMMI server may not be informed of the user's navigation on the Web inside the multimedia area ๐Ÿ˜ญ
    • In that kind of case, the URL mechanism could also be used to report user actions and commands within an HTML document back to the VEMMI server, or even to another system ๐Ÿ“
  • Extension of Web browsers: The VEMMI protocol is quite complementary to HTTP/HTML, which Web browsers use ๐Ÿ’– Several network operators have decided to support Web and VEMMI together, seeing them as complementary protocols โœจ Thanks to the VEMMI URL, Web browsers will be able to activate a VEMMI client software module to start a VEMMI session to the requested service when the user activates a vemmi URL included in an HTML document ๐ŸŽ€

3) Description of the VEMMI scheme ๐Ÿงš

The VEMMI URL scheme is used to designate multimedia interactive services that conform to the VEMMI standard (ITU/T T.107 and ETS 300 709) ๐Ÿ’œ

A VEMMI URL takes this form, as specified in Section 3.1. of RFC 1738 ๐ŸŒธ

vemmi://<host>:<port>/<vemmiservice>;
<attribute>=<value>

If :<port> is left out, the port defaults to 575 (client software may choose to ignore the optional port number in order to increase security) ๐Ÿ”ฅ The <vemmiservice> part is optional and may be omitted ๐Ÿ’…

This URL doesn't designate a data object. It designates a multimedia interactive service ๐Ÿฆ‹ A VEMMI service starts a multimedia session that manages multimedia objects and interacts with the user during that session ๐Ÿซถ Unlike other stateless protocols, the link between the client and the server is usually kept up for the whole session (although in some cases other mechanisms may be used, see below) ๐Ÿ™ˆ

The <vemmiservice> is the name of the VEMMI service to activate โœจ This field isn't mandatory. It can be left out, for example, if the remote host manages only one VEMMI service, or if it activates a VEMMI service by default when no service is specified ๐Ÿ‘‘ If this field is omitted from the URL and the server asks for it, it is assumed that the VEMMI client software will prompt the user for it ๐ŸŒˆ

After the <vemmiservice>, optional attributes and values (parameters) associated with the VEMMI service may be specified as part of the URL ๐Ÿ’– When they're present, each parameter (attribute/value pair) is separated from the others and from the rest of the URL by a ; (semicolon) ๐Ÿ“ The name of the attribute and its value are separated by a = (equal sign) ๐Ÿงš If present, these fields are used to transmit additional data useful for service selection, or to ask for a specific processing ๐Ÿ’… For example, the $USERDATA field can be specified to transmit additional user-specified data to the VEMMI service ๐ŸŽ€


4) Client/server dialog during service selection ๐Ÿฆ‹

The VEMMI client interprets the VEMMI URL to connect to the remote host and to access the specified VEMMI service ๐Ÿซถ After connecting to the remote system, the host may prompt the VEMMI client for a service name and user identification ๐Ÿ’–

Before starting the VEMMI session, a VEMMI terminal is in 'standard' mode, and it may display the data received from the network in a videotex or telnet terminal window ๐ŸŒธ Since a VEMMI session can start at any time during an interactive videotex or telnet session, service selection is done through a simple dialog between the client and the server โœจ

The service, username and password information is sent by the client software to the host in answer to the matching requests the host sends ๐Ÿ”ฅ The following behavior is expected from the client ๐Ÿ‘‘

  • The client waits for the optional request strings from the host server (service:, username: and password:) and answers them ๐Ÿ’… It answers with the <vemmiservice> value defined in the URL, and with the <username> and <password> the user enters, if they're required ๐ŸŒˆ The terminal answer may be sent automatically if the answers are already known (that is, if they're specified in the URL or the terminal configuration), or it may prompt the user for the needed information ๐Ÿฆ‹ When parameters (attribute and value pairs) are present in the URL, they're sent after the <vemmiservice> that goes to the host in answer to the service: request, separated from the <vemmiservice> value by a semicolon ๐Ÿงš
  • The client answers must always be followed by a Carriage Return (CR) โญ If a Line Feed (LF) is transmitted after the CR, the server will ignore it ๐Ÿซถ
  • In both cases, the server may echo the characters it receives from the client terminal, with the received CR echoed as CR LF ๐Ÿ“ The server may echo password characters as stars or any other scrambled output, for safety purposes ๐Ÿ™ˆ
  • The client must also be ready to start the VEMMI session as soon as it receives the VEMMI_Open command ๐Ÿ’œ Before this VEMMI session starts, the terminal is in 'standard' mode and may display the data received from the network in a videotex or telnet terminal window ๐Ÿ’– That's exactly why the service, username and password data are requested by the server using a telnet or videotex compatible dialog ๐Ÿ˜ญ

If an error occurs during VEMMI service activation, the remote host may inform the user by displaying the error cause ๐Ÿ˜ฌ When possible and applicable, it is recommended that the status code syntax described in HTTP [8] [9] be used, so the client can automatically process the host's answer during errors or normal operation ๐Ÿ”ฅ

If a VEMMI client software wants to request a VEMMI object without establishing a continuous VEMMI session, that request may also be performed using an HTTP request for the vemmi object, encoded with the Internet media type application/vemmi (pending registration by IANA [10]) ๐ŸŒˆ In the same way, HTTP could be used in some cases to exchange data pertaining to a VEMMI session, with or without setting the keep-alive keyword in the Connection header to request a persistent connection [9] ๐Ÿงš Protocol switching using the upgrade header field may be used in such a case to switch to the vemmi protocol [9] โœจ This possible use of HTTP for VEMMI is not described in this document ๐Ÿฆ‹


5) Proposed syntax ๐Ÿ’…

The proposed BNF syntax is encoded as specified in RFC 1738 [5] [14]:

; vemmi (see ITU-T T.107 and ETSI ETS 300 709)

vemmiurl      = "vemmi://" hostport [ "/" vemmiservice *[ parameter ] ]
vemmiservice  = *[ uchar | "/" | "?" | ":" | "@" | "&" | "=" ]
parameter     = ";" attribute "=" value
attribute     = *[ uchar | "/" | "?" | ":" | "@" | "&" ]
value         = *[ uchar | "/" | "?" | ":" | "@" | "&" ]

Okay so this is the grammar, and it's giving clean, tidy vibes ๐Ÿ’… Here's what the syntax lets you do, bestie ๐ŸŽ€

  • You can name the remote host by its name or its numeric address ๐ŸŒธ You could pick a specific port too, but the info providers and VEMMI software are expected to mostly use the port number assigned to VEMMI, which is 575 [13] ๐Ÿฆ‹
  • For security reasons, the username and password can't be specified in the URL ๐Ÿ”’ (no cap, that's a big one)
  • You can pick a specific VEMMI service if the remote host runs several different ones โœจ
  • You can also send extra data to the service using the parameter syntax ๐Ÿงš This can happen during the service selection phase, or when you select a vemmi hyperlink inside an HTML document shown in a VEMMI multimedia area. Quick compare: the params syntax in [4] is different, because here every value has to be labeled by an attribute ๐Ÿ’œ
  • Parameter attribute names are case-insensitive ๐Ÿ™ˆ Parameter values might or might not be case-sensitive, and it depends on the attribute. Iykyk ๐ŸŒˆ

All the fieldnames that start with a dollar ($) sign are reserved for specific use ๐Ÿ‘‘ That includes:

  • $COMMAND: the VEMMI command returned to the host when the VEMMI session doesn't use a continuous link ๐Ÿ’€
  • $CONTEXTDATA: context data ๐Ÿ“
  • $OBJECT_REQUEST: requests the retransmission of a given VEMMI object ๐Ÿ“ฆ
  • $USERDATA: user data specified by the user and to be processed by the VEMMI service ๐Ÿซถ

6) Examples โœจ

Okay bestie, here come some VEMMI URL examples with the matching client/server dialog ๐ŸŽ€ Just a heads up, they're for information only!

a) A simple VEMMI URL and its dialog, for a VEMMI service that doesn't enforce access control ๐Ÿ’– The URL is vemmi://zeus.mctel.fr/demo. The client and server exchange goes like this (server requests on the left, client answers on the right):

service:        demo
200 OK                     {status code returned by the VEMMI host}

b) The service name can be left out, for example if the remote server only hosts one VEMMI service ๐Ÿฆ‹ So the URL could be vemmi://zeus.mctel.fr. In this case, the host starts the VEMMI interactive session right away, without asking for the service name first. Should the client get a service request from the host anyway, it'll prompt the user for the service name ๐ŸŒธ

c) The URL can't include the username and password ๐Ÿ™ˆ So if the host asks for them, the VEMMI client can either use a default value set for this service, or prompt the user. For example, it could propose "anonymous" and the user's e-mail address as defaults ๐Ÿ’… The URL is vemmi://mctel.fr/demo, and the exchange might look like this (server requests on the left, client answers on the right):

service:        demo
login:          anonymous       {user has been prompted for username}
password:       mavrakis@ties.itu.ch  {user prompted for password}
401 Unauthorized                {an anonymous user is not allowed to
                                 access the service}

d) Some services use extra data sent in the parameter fields ๐Ÿงš For example, the URL vemmi://mctel.fr/demo;$USERDATA=smith;account=1234. If the host doesn't do any access check, the dialog might be:

service:        demo;$USERDATA=smith;account=1234
200 OK
 ...starting VEMMI session...

7) Procedure to use when a VEMMI URL is encountered in a HTML document without VEMMI support ๐ŸŒˆ

So, VEMMI URL support might be built into some Web browsers, or come from software or a plug-in that works with the user's browser ๐Ÿ”Œ For example, it could use the WWW_RegisterProtocol API command to register the new VEMMI protocol.

When a Web browser runs into a VEMMI URL without having VEMMI support, one of two things can happen ๐Ÿ˜ญ

  • Some browsers detect an unrecognized scheme and throw an unrecoverable error straight away ๐Ÿ’€
  • Others treat it as a relative URL [4], build a complete URL that includes the VEMMI URL, and request it from the host that sent the current document. In that case, the host usually returns the error "not found" ๐Ÿ™ƒ

There are some ways to offer a friendly experience to users both with and without VEMMI support โœจ

  • When the second case happens and the relative URL with the vemmi:// string gets sent to the server, the HTTPD server might be modified to recognize that URL and offer to download a VEMMI client software ๐ŸŽ
  • The HTML document with the vemmi URL that starts the VEMMI session can offer both options, like this:
If your browser supports VEMMI, directly
<A HREF="vemmi://ares.mctel.fr/TEST">start the interactive
multimedia service</A>, otherwise
<A HREF="ftp://ftp.mctel.fr/vemmi.exe">download first a VEMMI
client software</A>.
  • The application/vemmi MIME type is defined below (for example, to allow exchanging vemmi objects) ๐Ÿ’œ One possible way is for the server to look at the HTTP Accept header field and work out that if application/vemmi is supported, then VEMMI support exists. In this case, application/vemmi has to be defined in the browser and associated with the vemmi decoder ๐Ÿฆ‹

8) Security Considerations ๐Ÿšจ

Bestie, this part is serious, so listen up ๐Ÿ‘‘ The VEMMI URL scheme has the same security implications as the general URL scheme [5] [14], so the usual precautions outlined in [5] [14] apply. For example, it's not allowed to store the username and password in the URLs ๐Ÿ”’

Also, among the VEMMI objects that might be used during the interactive session, metacode objects (which represent a sequence of VEMMI commands) and operative objects (executable programs to be run on the client platform) may be downloaded and/or started ๐Ÿ˜ณ

To protect the user from a harmful operative object, it is strongly recommended that users go into the configuration menu of their VEMMI software and disable the option of running operative objects when receiving potentially unsafe VEMMI objects. At the very least, they should enable the option to request the user's approval before an operative object starts running ๐Ÿ›ก๏ธ

The VEMMI remote interactive services can vary a lot in their access control policies ๐Ÿ™ƒ In practice, when a prompt for a username or password comes in, the VEMMI terminal should ask the user for them. The VEMMI terminal implementation could support extra features too, like proposing "anonymous" as the username by default and the user's Internet e-mail address as the password, or looking in an encrypted local database for user identification on this service ๐Ÿ”

Real talk: such an identification mechanism using the username/password scheme is unsecure, and it's only provided for backwards compatibility. VEMMI services that need a safe identification procedure must rely on other alternative mechanisms (for example S/KEY or other) ๐Ÿšซ In lots of cases, the user identification procedure will be done by the VEMMI service itself.

9) application/vemmi MIME type ๐Ÿ’Œ

VEMMI is a multimedia interactive service, and VEMMI objects are usually exchanged through a continuous VEMMI multimedia session ๐ŸŽฌ But VEMMI objects can also be transmitted and exchanged using other mechanisms, for example HTTP, e-mail, and so on... ๐Ÿ“จ Assigning the MIME media type application/vemmi lets that transport and exchange happen, and this paragraph describes that MIME type ๐Ÿฆ‹

For Web browsers that don't support adding new URL protocol schemes, the VEMMI MIME type can also be used to transmit a text file containing the VEMMI URL to activate in order to connect to a VEMMI server, instead of a VEMMI object ๐ŸŒธ

9A) DESCRIPTION: ๐ŸŽ€

MIME media type name: "application"

MIME subtype name: "vemmi"

Required parameters: none

Optional parameters:

  • version: an optional version number may be specified, in this format:
version=<integer>

The version number is a numeric integer, encoded as the <version> parameter defined in ETS 300 709 (for example version=100). Its first digit is the major VEMMI version number ๐Ÿ‘‘ It must be pointed out that VEMMI objects include the VEMMI version and a timestamp โฐ

9B) ENCODING CONSIDERATIONS: ๐Ÿงฉ

The "base64" mechanism is preferred, because VEMMI uses a native 8-bit binary file format ๐Ÿ’– However, since VEMMI includes its own 7-bit encoding mechanisms, VEMMI data could also be transmitted in 7-bit mode โœจ

9C) SECURITY CONSIDERATIONS: ๐Ÿ”’

Refer to paragraph 8 ๐Ÿซถ

9D) INTEROPERABILITY CONSIDERATIONS: ๐ŸŒˆ

VEMMI is designed to be fully platform independent ๐ŸŒ The VEMMI objects and contents could interoperate between any platform. The only exception is the VEMMI operative objects, which could be binary programs specific to a given hardware platform and operating system ๐Ÿ’ป


10) Liaison address ๐Ÿ“ฎ

For all technical questions about this request, please contact:

        Daniel Mavrakis
        Monaco Telematique MC-TEL
        P.O. Box 225
        MC 98004 Monte-Carlo Cedex
        PRINCIPALITY OF MONACO
        EMail: Mavrakis@mctel.fr
        Tel: (+377) 9216 8860
        Fax: (+377) 9330 4545

Comments may also be addressed to:

        Mr. Herve Layec,
        ETSI STC TE1
        06921 SOPHIA ANTIPOLIS Cedex
        FRANCE
        EMail: herve.layec@dri.france-telecom.fr
        Tel: (+33) 2 99 12 73 01
        Fax: (+33) 2 99 38 49 61
        Mr. Kurt Kartmann
        Consulting
        Telecommunication+Multimedia
        Gabelsbergerstr. 2
        D-64807 DIEBURG
        GERMANY
        EMail: k.kartmann@t-online.de
        Tel: (+49) 6071 1528
        c/o Deutsche Telekom AG
        Tel. (+49)6151 834965, Fax (+49) 6151 834284

The authors thank the other members of the ETSI TE1 VEMMI Working Group for their comments ๐Ÿฅฐ

   - Michael Blaschitz (michael.blaschitz@etsi.fr)
   - Agnelo Fernandes (agnelo@telepac.pt)
   - Daniel Allonsius (daniel.allonsius@is.belgacom.be)
   - Stefaan Herrebout (Stefaan.Herrebout@mail.interpac.be)
   - Francisca Oliva (oliva@tid.es)
   - Herwart Wermescher (Herwart.Wermescher@infonova.telecom.at)

11) References: ๐Ÿ“šโœจ

okay so this is the receipts section ๐Ÿ’… every single source the spec leans on is listed right here, and I've kept every title, author, date, and number exactly as written ๐Ÿซถ

[1] "Enhanced Man-Machine Interface for Videotex and Multimedia/Hypermedia Information Retrieval Services (VEMMI revision 1)", ETS 300 709 standard (European Telecommunications Standards Institute), September 1996. This document is available on the Web in HTML format: see http://www.etsi.fr/ecs/projects/vemmi/vemmi.htm ๐ŸŒ

[2] "Enhanced Man-Machine Interface for Videotex and Other Information Retrieval Services (VEMMI)", ITU-T T.107 standard (International Telecommunications Union), March 1995. ๐Ÿ“บ

[3] "Videotex Enhanced Man-Machine Interface service (VEMMI)", ETS 300 382 standard (European Telecommunications Standards Institute), February 1995. ๐ŸŽ€

[4] Fielding, R., "Relative Uniform Resource Locators", RFC 1808, UC Irvine, June 1995. ๐Ÿฆ‹

[5] Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform Resource Locators (URL)", RFC 1738, December 1994. ๐ŸŒธ

[6] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1700, October 1994. ๐Ÿ”ข

[7] Mavrakis, D., "VEMMI and Internet", TD 44, ETSI TE1 plenary meeting in Brussels, October 20, 1995. ๐Ÿ‡ง๐Ÿ‡ช

[8] Berners-Lee, T., Fielding, R., and H. Frystyk: "Hypertext Transfer Protocol - HTTP/1.0", RFC 1945, MIT/LCS, UC Irvine, May 1996. ๐Ÿงš

[9] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., and T. Berners-Lee, Transfer Protocol - HTTP/1.1", RFC 2068, UC Irvine, January 1997. ๐Ÿ’œ

[10] Freed, N., Klensin, J., and J. Postel, "Multipurpose Internet Mail Extensions (MIME) Part Four Registration Procedures", BCP 13, RFC 2048, November 1996. ๐Ÿ“

[11] Masinter, L., Zigmond, D., and H. Alvestrand, "Guidelines and Process for new URL Schemes", Work in Progress. ๐Ÿšง

[12] Berners-Lee, T., and D. Connolly, "Hypertext Markup Language Specification - 2.0", RFC 1866, MIT/LCS, November 1995. ๐ŸŒˆ

[13] "Port Numbers", ftp://venera.isi.edu/in-notes/iana/assignments/port-numbers ๐Ÿ”Œ

[14] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource Locators (URL)", Work in Progress. โญ

๐Ÿ“ฆ where this page comes from