RFC 2122
VEMMI URL Specification
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:andpassword:) 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 theservice: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_Opencommand ๐ 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
- ietf: rfc2122 1997-03
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms