draft-karcz-uuas-00:
Unified User-Agent String (UUAS)
Author(s): Mateusz Karcz
User-Agent is a header used by certain protocols, e.g. HTTP. Unified User-Agent String is intended to unification of that complicated strings....
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 <rfc1738-httpurl>
cemail = plus <rfc5322-addr-spec>
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 = <rfc5646-Language-Tag>
; Non-required data definitions
contact = curl *(break cemail)
curl = plus <rfc1738-httpurl>
cemail = plus <rfc5322-addr-spec>
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, RFC2119, March 1997.
[RFC5234] Crocker, D. and Overell, P., "Augmented BNF for Syntax
Specifications: ABNF", RFC5234, 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]














