Network Working Group M. Karcz INTERNET-DRAFT Independent Intended status: Experimental 27 January 2012 Expires: 30 July 2012 Unified User-Agent String (UUAS) draft-karcz-uuas-00 Abstract User-Agent is a header used by certain protocols, e.g. HTTP. Unified User-Agent String is intended to unification of that complicated strings. Status of this Memo This memo defines an Experimental Protocol for the Internet community. This memo does not specify an Internet standard of any kind. Discussion and suggestions for improvement are requested. Distribution of this memo is unlimited. This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." Karcz Experimental [Page 1] INTERNET-DRAFT Unified User-Agent String (UUAS) 27 January 2012 Copyright Notice Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. This document may not be modified, and derivative works of it may not be created, except to format it for publication as an RFC or to translate it into languages other than English. Karcz Experimental [Page 2] INTERNET-DRAFT Unified User-Agent String (UUAS) 27 January 2012 Table of Contents 1. Introduction ................................................ 3 2. Structure ................................................... 3 2.1. Agent signature......................................... 3 2.1.1. Agent identifier .................................. 4 2.1.2. Agent Features .................................... 4 2.1.2.1. Security level flag .......................... 4 2.1.2.2. Operating system ............................. 5 2.1.2.3. Hardware platform ............................ 5 2.1.2.4. Client language .............................. 5 2.1.2.5. Contact ...................................... 5 2.1.2.6. Additional data .............................. 5 2.2. Engine signature ....................................... 6 2.2.1. Engine information ................................ 6 2.3. ABNF definition of UUAS ................................ 7 3. Security Considerations ..................................... 7 4. References .................................................. 8 4.1. Normative References ................................... 8 Appendix A. Acknowledgments .................................... 9 1. Introduction So far User-Agent strings are long, complicated and often ambiguous. (e.g. "Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.01" - it is Opera Browser, but it can be read as Internet Explorer or Netscape Navigator.) This document specifies a new, easy and clear format of Unified User-Agent String (UUAS). 2. Structure Unified User-Agent String is separated by space into two parts: o Agent signature (REQUIRED) - overview Section 2.1 o Engine signature (OPTIONAL) - overview Section 2.2 General ABNF notation of UUAS is: uuas = agent *1(SP engine) 2.1. Agent signature In Unified User-Agent String signature contains two main parts separated by space: Karcz Experimental [Page 3] INTERNET-DRAFT Unified User-Agent String (UUAS) 27 January 2012 o Agent identifier, containing name and version of Agent - Section 2.1.1 o Agent features, containing information about Agent platform. - Section 2.1.2 General ABNF notation of Agent signature is: agent = agent_id SP agent_ft 2.1.1. Agent identifier Agent identifier contains two parts separated by a slash sign: o Agent name, e.g. "FooBrowser" o Agent version, e.g. "1.0" Characters allowed to use in Agent name are: small and capital letters and a minus sign. Characters allowed to use in Agent version are: digits, dot, a minus sign and small and capital letters. 2.1.2. Agent Features Data contained in Agent features are (in turn): 1. Security level flag - Section 2.1.2.1 2. Operating system - Section 2.1.2.2 3. Hardware platform - Section 2.1.2.3 4. Client language - Section 2.1.2.4 5. OPTIONAL Contact - Section 2.1.2.5 6. OPTIONAL Addition data - Section 2.1.2.6 All of Agent features is contained in brackets. Data are separated by semicolon and space. 2.1.2.1. Security level flag Security level flag indicates client.s security level. This field may contain these values: o "N" - no encryption Karcz Experimental [Page 4] INTERNET-DRAFT Unified User-Agent String (UUAS) 27 January 2012 o "I" - 40-bit encryption o "U" - encryption stronger than 40-bit. 2.1.2.2. Operating system Operating system field indicates client.s operating system, e.g. "Windows NT 6.1", "FreeBSD 8.7" or "Mac OS X 10.7". Characters allowed to be used in this field are: small and capital letters, digits, dot, a minus sign and space. 2.1.2.3. Hardware platform Hardware platform field indicates client.s processor.s Instruction Set Architecture, e.g. "i386", "ppc" or "m68k". Character allowed to be used in this field are: small and capital letters, digits, dot and a minus sign. Maximum length of this field is 10 characters. 2.1.2.4. Client language This field indicates client application.s language. It may contain language tags defined in [RFC5646]. 2.1.2.5. Contact This field contains one HTTP URL and zero or more client application- related e-mail addresses. URL and e-mail addresses are preceded by a plus sign. All subfields are separated by a semicolon and a space. ABNF notation of this field is here: contact = curl *(break cemail) curl = plus cemail = plus 2.1.2.6. Additional data Additional data field can contain any data. All subfields are separated by semicolon and space. Characters allowed to be used in this field are: characters x20-x24, x26-x27, x2A-x2E, x30-x3A, x3C-x7E and hexadecimal-defined characters Karcz Experimental [Page 5] INTERNET-DRAFT Unified User-Agent String (UUAS) 27 January 2012 Hexadecimal-defined character ABNF notation is here: hexchar = %x25 2HEXDIG This is ABNF notation of Additional data (one): addit_data = break 1*adchar 2.2. Engine signature Engine signature indicates information about basis of the client application, e.g. HTML rendering engine. This signature contains two parts separated by space: o Engine identifier - structure identical as in Agent identifier o OPTIONAL Engine information - Section 2.2.1 ABNF notation of Engine signature is: engine = engine_id *1(SP engine_if) 2.2.1. Engine information This field contains contact information and/or other data about engine separated by semicolon and space. This is ABNF notation of Engine information: engine_if = obracket (1* adchar / contact) *addit_data cbracket Karcz Experimental [Page 6] INTERNET-DRAFT Unified User-Agent String (UUAS) 27 January 2012 2.3. ABNF definition of UUAS ; Unified User-Agent String general definition uuas = agent *1(SP engine) ; Agent signature definition agent = agent_id SP agent_ft agent_id = agent_nm slash agent_vr agent_nm = 1*nmchar agent_vr = 1*vrchar agent_ft = obracket security_flg break os break hwplatform break language *1(break contact) *addit_data cbraket security_flg = %x4E / %x49 / %x55 os = 1*(vrchar / SP) hwplatform = 1*10vrchar language = ; Non-required data definitions contact = curl *(break cemail) curl = plus cemail = plus addit_data = break 1*adchar ; Engine signature definition engine = engine_id *1(SP engine_if) engine_id = agent_id engine_if = obracket (1*adchar / contact) *addit_data cbraket ; Additional definitions slash = %xF2 obracket = %x28 cbracket = %x29 plus = %x2B break = %x3B SP hexchar = %x25 2HEXDIG nmchar = ALPHA / "-" vrchar = nmchar / DIGIT / "." adchar = %x20-24 / %x26-27 / %x2A-2E / %x30-3A / %x3C-7E / hexchar 3. Security Considerations Security is truly believed to be irrelevant to this document. Karcz Experimental [Page 7] INTERNET-DRAFT Unified User-Agent String (UUAS) 27 January 2012 4. References 4.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC5234] Crocker, D. and Overell, P., "Augmented BNF for Syntax Specifications: ABNF", RFC 5234, January 2008. [RFC2068] Fielding, R., Gettys, J., Mogul, J., Frystyk, H. and Berners-Lee, T., "Hypertext Transport Protocol - HTTP/1.1", January 1997 [RFC5646] Phillips, A. and Davis, M., "Tags for Identifying Languages", September 2009 [RFC5322] Resnick, P., "Internet Message Format", October 2008 Karcz Experimental [Page 8] INTERNET-DRAFT Unified User-Agent String (UUAS) 27 January 2012 Appendix A. Acknowledgments I would like to thank my English teacher, who devoted their time to conduct a linguistic revision of this Memo. This document was prepared using 2-Word-v2.0.template.dot. Authors. Addresses Mateusz Karcz Independent 18/6 Sambora Street 83-110 Tczew Poland Email: sami.wiecie.kto@interia.eu Karcz Experimental [Page 9]