draft-ietf-svrloc-service-scheme-01

[フレーム]

Service Location Working Group Erik Guttman
INTERNET DRAFT Charles Perkins
6 June 1997  Sun Microsystems
 Service Templates and service: Schemes
 draft-ietf-svrloc-service-scheme-01.txt
Status of This Memo
 This document is a submission by the Service Location Working Group
 of the Internet Engineering Task Force (IETF). Comments should be
 submitted to the srvloc@corp.home.net mailing list.
 Distribution of this memo is unlimited.
 This document is an Internet-Draft. Internet-Drafts are working
 documents of the Internet Engineering Task Force (IETF), its areas,
 and its working groups. Note that other groups may also distribute
 working documents as Internet-Drafts.
 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.''
 To learn the current status of any Internet-Draft, please check
 the ``1id-abstracts.txt'' listing contained in the Internet-Drafts
 Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (North
 Europe), ftp.nis.garr.it (South Europe), munnari.oz.au (Pacific Rim),
 ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast).
Abstract
 Service: schemes define URLs (called "service: URLs" in this
 document) which are primarily intended to be used by the Service
 Location Protocol in order to distribute service access information.
 These schemes provide an extensible framework for client based
 network software to obtain configuration information required to make
 use of network services. When registering a service: URL with a
 Directory Agent, the URL may be accompanied by a set of well defined
 attributes which define the charateristics of the service. These
 attributes may convey configuration information to client software,
 or service characteristics meaningful to end users.
 This document describes how to define and standardize new service
 types and attributes for use with the service: scheme using Service
Guttman,Perkins Expires 6 December 1997 [Page i]

Internet Draft Service Templates and URLs 6 June 1997
 Templates. These templates are human and machine readable. They
 may be used by administrative tools to parse service registration
 information and by client applications to provide localized
 translations of service attribute strings.
Guttman,Perkins Expires 6 December 1997 [Page ii]

Internet Draft Service Templates and URLs 6 June 1997
 Contents
Status of This Memo i
Abstract i
 1. Introduction 2
 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
 1.2. Service Schemes . . . . . . . . . . . . . . . . . . . . . 4
 1.3. Related work . . . . . . . . . . . . . . . . . . . . . . 5
 1.4. Changes made since the last version . . . . . . . . . . . 5
 1.5. Open issues and work to be done . . . . . . . . . . . . . 6
 2. Use of service: URLs 6
 3. Specifying A New Service Type 7
 3.1. Service Type Specifications . . . . . . . . . . . . . . . 7
 3.1.1. Service Type . . . . . . . . . . . . . . . . . . 7
 3.1.2. The service: 'url-path' information . . . . . . 8
 3.1.3. Attributes . . . . . . . . . . . . . . . . . . . 8
 3.2. Specifying Attributes . . . . . . . . . . . . . . . . . . 8
 3.2.1. Service Templates and attributes . . . . . . . . 9
 3.2.2. Service Templates String Encoding . . . . . . . . 9
 3.2.3. Attributes with multiple values . . . . . . . . . 12
 3.2.4. Grouping attribute values together in records . . 12
 3.3. Special attributes . . . . . . . . . . . . . . . . . . . 13
 3.3.1. Service Type Language . . . . . . . . . . . . . . 13
 3.3.2. Version . . . . . . . . . . . . . . . . . . . . . 13
 3.3.3. url-path rules . . . . . . . . . . . . . . . . . 14
 4. A Process For Standardizing New Service Types 14
 5. Encoding Rules for Service Type URLs 15
 6. Examples 16
 6.1. SLP Directory Agent . . . . . . . . . . . . . . . . . . . 16
 6.2. POP3 . . . . . . . . . . . . . . . . . . . . . . . . . . 16
 7. General Service Template 17
 7.1. Obtaining Service Templates dynamically . . . . . . . . . 18
 8. Internationalization Considerations 18
 8.1. Character Set identification and use . . . . . . . . . . 18
 8.2. Language identification and translation . . . . . . . . . 19
Guttman,Perkins Expires 6 December 1997 [Page 1]

Internet Draft Service Templates and URLs 6 June 1997
 9. Security Considerations 19
1. Introduction
 This document describes a class of schemes which will allow network
 services to define their service access information, using a standard
 notation.
 In addition it describes how to define a set of attributes to
 associate with a service: URL. These attributes will allow end users
 and programs to select between network services of the same type that
 have different capabilities.
 A client may use these attributes to select a particular service
 (obtain the service: URL) that has the configuration it needs. The
 minimal encoding rules for attributes are specified.
 Service Type templates are used to describe in a standard way those
 services which use the service: URL. The rules for specifying a
 scheme are provided, along with two examples. Templates are used the
 following distinct purposes:
 1. Standardization
 The template is reviewed before it is standardized. Once it is
 standardized, all versions of the template are archived by IANA.
 2. Service Registration
 Servers making use of the Service Location Protocol will register
 themselves and their attributes. They will use the templates to
 generate the service registrations; the service must pick from
 among the allowable values.
 3. Client presentation of Service Information
 Client applications may display service information. The
 template provides type information and explanatory text which may
 be helpful in producing user interfaces.
 4. Internationalization
 If a client application has the template for a given service type
 in two different languages, the attributes may be translated back
 and forth between the two languages.
Guttman,Perkins Expires 6 December 1997 [Page 2]

Internet Draft Service Templates and URLs 6 June 1997
 A Service may use templates to register services in more than
 one language, though it has been configured by the system
 administrator to register in a single language.
 QUESTION: Which of several homonyms would be the one known
 to user agents processing the translated information?
 All grammar encoding follows the Augmented BNF (ABNF) [6] for syntax
 specifications with a few deviations.
 QUESTION: What are the deviations?
1.1. Terminology
 In order to reduce confusion, some terminology is introduced.
 service: URL
 A URL, registered by a service agent of a particular service
 type, that conforms to any "service scheme" definition.
 service type
 A type of service all of whose agents are accessed by service:
 URLs of the same scheme (a service scheme, below). The name
 of the type of service is the part of the service scheme name
 which follows the initial string "service:".
 service scheme
 A scheme, whose name start with the string "service:" and is
 followed by the service type name, constructed according to the
 rules in this document.
 service template
 A formal description of the service attributes and service
 scheme associated with a particular service type. a particular
 service may be selected by obtaining the service: URL
 registered by that service.
 general service template
 A template for describing service templates -- for instance as
 is contained within this document.
Guttman,Perkins Expires 6 December 1997 [Page 3]

Internet Draft Service Templates and URLs 6 June 1997
1.2. Service Schemes
 Each service scheme MUST obey the URL conventions defined in [4].
 The scheme specific information following the service: scheme
 provides the service type and address of a network service. It may
 additionally include service type specific information. The form of
 a service: URL is as follows:
 "service:" service-type ":" service-part
 where the service-part typically has the following form:
 /addr-family/addr-spec/url-path;FAQ
 and the last field is never required to exist in any service
 location registration, but is sometimes provided for convenience of
 interactive user agents. The formal syntax for a service: URL is
 given in Section 5.
 The service-type string indicates the type of service. The service
 type determines the semantics of the service-part and of the
 attributes associated with the service: URL. The <addr-family> is
 IP by default (if not present), but can be used to indicate the use
 other address families such as IPX and Appletalk. In this document,
 the addr-family> is always IP, so that the field can be omitted; all
 service-parts will start with "//". Next, the service-part includes
 a address specification (an <addr-spec>), which is typically either
 a domain name (DNS) or an IP address for the service, and possibly a
 port number. The service-part allows more information to be provided
 (by way of <url-path>) that can uniquely locate the service or
 resource if the <addr-spec> is not sufficient for that purpose.
 The FAQ is actually composed of a list of "attribute = value"
 elements, describing for the user the attributes that are associated
 with the service: URL. This might be done in situations where the
 service: URL is used in a context where it was not automatically
 selected by picking desired attributes. When a human obtains a
 URL and needs to ask questions about how to use it, hopefully the
 attribute values provided in the FAQ can help. For instance, if
 the keyword "PostScript" were provided in a service:printer URL, a
 user would be able to guess that the printer could correctly print
 PostScript documents.
 Other than in a FAQ, attributes associated with the service: URL are
 not typically included in the URL. They are stored and retrieved
 using other mechanisms. The service: URL is uniquely identified
 with a particular service agent, and is used when registering
Guttman,Perkins Expires 6 December 1997 [Page 4]

Internet Draft Service Templates and URLs 6 June 1997
 or requesting the attribute information. The Service Location
 Protocol [10] specifies how such information may be advertised
 by network services and obtained by client software. Service
 agents would not typically advertise URLs with FAQs unless manually
 configured to do so by a system administrator, and a user agent that
 obtains a service: URLs by issuing a Service Request will already
 have all the necessary attribute information to make use of the
 service: URL.
 Attributes are associated with service: URLs for three reasons:
 1. Many servers have optional features. Clients which require or
 prefer to make use of these features can proceed to do so without
 protocol negotiation or feature selection. Attributes serve as
 a mechanism for servers to distribute information about their
 configuration, capabilities and characteristics (even dynamic
 qualities, such as status or load.)
 2. Client software may have particular requirements. The attributes
 associated with a given URL allow for automatic selection of
 services which have certain features. For example, client
 software may require a server which has a particular version of
 something, or which has access to specific resources.
 3. Attributes support selection of service instances by
 characteristic as opposed to simply by type. These attributes
 may be used to give users information enabling the selection of
 particular services when browsing service directories or the
 available services on the local network.
1.3. Related work
 The "Finding Stuff" work by Ryan Moats and Martin Hamilton uses
 service: URLs provide access information about arbitrary network
 protocols through DNS [9]. They do not associate service attributes
 with these URLs. The URLs may contain nonstandard service port
 information for services advertised in the DNS. DNS SRV Resource
 Records are a mechanism which provides a way to obtain a service by
 type for a given domain [7], without being able to specify which of
 the (possibly numerous) instances of the service type would satisfy
 the needs of the user agent.
1.4. Changes made since the last version
 Removed:
Guttman,Perkins Expires 6 December 1997 [Page 5]

Internet Draft Service Templates and URLs 6 June 1997
 - The long template examples.
 - Description of the Service Specific Multicast Addresses (which
 are no longer needed in the Service Templates.)
 - 'Record based' attribute values.
 - The possibility for putting CR, LF, or TAB in most places.
 Added:
 - Terminology
 - Further explanation of Service Templates.
 - New syntax for Service Templates.
 - A proposal on how to use Templates for internationalization.
 - Some security considerations.
1.5. Open issues and work to be done
 - Justification will be added (as done in the URL process
 draft [3]).
 - Encoding rules for transforming a Service Template to an LDAP
 Schema will be added.
 - The process for standardizing a new service type needes to be
 sharpened. In particular, feedback from the Applications Area
 Directors needs to be solicited.
 - Description of how Service Templates themselves may be registered
 and obtained in a network is needed. Why isn't SLP enough for
 this purpose?
2. Use of service: URLs
 The service: URL is intended to allow arbitrary client/server and
 peer to peer systems to make use of a standardized dynamic service
 access point discovery mechanism.
 It is intended that service: URLs be selected according to the
 suitability of associated attributes. A client application may
 obtain the URLs of several services of the same type and distinguish
Guttman,Perkins Expires 6 December 1997 [Page 6]

Internet Draft Service Templates and URLs 6 June 1997
 the most preferable among them by means of their attributes. The
 client will use the service: URL to bind directly to a service.
 These attributes will be specified as shown with the "service-
 template", described below. If a service: URL is stored by a client
 or an agent representing a client, the agent SHOULD also keep track
 of the attributes which characterize the service offered at the
 network location indicated by the URL, and can use the service
 template for additional information about those service attributes.
 The registration of this attribute information is typically done
 using the Service Location Protocol [10], although manual techniques
 and other protocols may be possible.
3. Specifying A New Service Type
 A Service Type defines the syntax for all URLs that will be
 registered by services of the particular type. For instance, a
 'Printer' service type is defined with service: URLs in the following
 form:
 service:printer://<address of printer>/<queue name>
 The service agent registering the printer service can be selected by
 clients specifying the protocol which matches the protocol attribute
 registered with the printer URL above. The attribute information can
 be used to indicate other configuration details, optional features
 available and characteristics (which may be relevent to a human user
 or to a program.)
3.1. Service Type Specifications
 Service Type specifications define the fields described in the
 following subsections, and define the syntax of the service-part of
 service: URLs of that service type.
3.1.1. Service Type
 This is a string which will be prepended by the 'service:' scheme.
 It may be a name which is entirely invented or be the same as a well
 known service scheme. For example, service:http: might refer to a
 HTTP server, whereas the http: scheme used in a URL generally refers
 to a document.
 The meaning of this service type must be fully described by service
 type specification. A network protocol specification is often
Guttman,Perkins Expires 6 December 1997 [Page 7]

Internet Draft Service Templates and URLs 6 June 1997
 included as one of the attributes associated with the service, and
 may optionally be registered by some service agents as part of the
 service: URL include in the service registration.
3.1.2. The service: 'url-path' information
 This information is included in the URL in order to provide uniquely
 identifying information. This mechanism is used in the examples
 which follow in order to identify a mountable filesystem (using the
 'nfs' service type) and an lpd print queue (as described above).
 The syntax and interpretation of the url-path must accompany the
 definition of a new Service Type. See section 3.3.3, describing the
 mandatory "template.url-path rules" attribute. The url-path may be
 very simple, or even entirely omitted except possibly a terminating
 slash. See [4] for examples and general guidance.
3.1.3. Attributes
 This information provides information about the service's
 capabilities, characteristics and required client configuration.
 Each attribute which is defined must have a default value and
 definition of all values it can take.
 An attribute may take one or more values. A keyword does not take
 any values. Registration, deregistration and the use of attributes
 in queries may be accomplished using Service Location Protocol, or
 possibly other means beyond the scope of this document.
3.2. Specifying Attributes
 Attributes are used to convey information about a given service for
 purposes of differentiating different services of the same type.
 They convey information to be used in the selection of which service
 to bind to, either browsers or for use by a program.
 Attributes may be encoded in different character sets and in
 different languages. The procedure for doing this is described in
 Section 9.
 Attributes definitions have several components.
 1. The first is a 'tag'. This is a string with certain encoding
 rules.
Guttman,Perkins Expires 6 December 1997 [Page 8]

Internet Draft Service Templates and URLs 6 June 1997
 2. Attribute descriptors (type and flags)
 3. Possibly, a set of typed values.
 4. Descriptive help text explaining necessary information about what
 the attribute is
 Attributes (but not keywords) may have one or more values. Values of
 an attribute are typed, and must have the same type for each value if
 the attribute is multivalued. The rules for typing and encoding of
 attribute values is given in the rest of section 3.2.
3.2.1. Service Templates and attributes
 Service Templates provide rules for attributes. They define:
 - Which attributes are REQUIRED with every service registration of
 a given service type, and which are OPTIONAL.
 - The type of values possible for the attribute (e.g., STRING).
 - Whether the attribute may take multiple values.
 - Whether the attribute may take arbitrary values or only those
 provided in the list.
 - Whether the attribute may be translated to other languages or is
 a 'literal', ie. not meant for human readability.
 - Whether the service: URL can be be supplied in response to a
 request that does not give a value for the attribute, when the
 attribute is used as part of the registration for that service:
 URL.
3.2.2. Service Templates String Encoding
 Service templates are encoded in a simple form. They may be
 translated to any language or character set, but the template used
 for standardization MUST be encoded in ASCII [2] and be in English.
 Between each attribute definition there is a blank line. The rules
 for encoding attributes is given below. Reserved characters include
 ";", "&", "=", ",", "*", "#", TAB, LF, and CR. Reserved characters
 may be escaped. The escaped character is replaced by a character
 sequence with no spaces. The digits are a decimal representation of
Guttman,Perkins Expires 6 December 1997 [Page 9]

Internet Draft Service Templates and URLs 6 June 1997
 the character value to be replaced, in the character set used for the
 attribute encoding.
 Some attributes may take values only among those present in a
 specified value list. A keyword has no value list included. Any
 attribute or keyword definition may include help text which can be
 used to provide interactive descriptions helpful to people browsing
 the available services. This descriptive text is often used to
 explain technical details about the attribute or about the values
 which the attribute can take.
 esc-char = "&" "#" 1*DIGIT ";"
 The following special case should be noted:
 - Commas are used to separate list elements (e.g., allowable
 attribute values. To use a comma in attribute encodings, escape
 the comma with &#44;
 Service Templates have the following ABNF [6] grammar:
 NOTE that this grammar is not quite correct yet, because it
 needs a lot of work on specifying the scheme-def.
 template = scheme-props scheme-def attr-defs
 schemeatrs = schemevers schemelang schemetype schemetext
 schemevers = "Version" "=" 1*DIGIT "." 1*DIGIT
 schemelang = "Language" "=" 2*2lower-alpha
 schemetype = "Type" "=" *schemechar
 schemechar = ALPHA / DIGIT / "-" / "_" / "$" / "+" /
 "@" / "." / "|" / "<" / ">" / "~"
 schemetext = "Scheme-description" "=" [help-text]
 scheme-def = url-path-rules
 ; Rules for constructing service: URLs:
 ; The scheme-def part of the template will
 ; be text describing the allowable format
 ; of information in the url-path of the
 ; service-part of the service scheme.
 ; The <addr-spec> and FAQ fields do not
 ; require additional specification.
 attr-defs = *(attr-def/keydef)
 attr-def = tag "=" attrtail newline
 keydef = keyword "=" "KEYWORD" newline
 attrtail = type flags newline [value-list] [help-text]
 value-list = 1#value newline
 help-text = 1#help-line
 ; This is a human readable description of
Guttman,Perkins Expires 6 December 1997 [Page 10]

Internet Draft Service Templates and URLs 6 June 1997
 ; this attribute and its values.
 help-line = *[white-sp] "#" *[ com-chars ] newline
 tag = 1*attrchar
 keyword = 1*attrchar
 attrchar = 1*(schemechar / ":"
 flags = ["M"] ["L"] ["X"] ["O"]
 ; M means multiple values are allowed
 ; L "Literal", values MUST NOT be translated
 ; X means explicit match required
 ; O "Optional", the attribute may be omitted
 value = string / integer / boolean / opaque
 type = "STRING" / "INTEGER" / "BOOLEAN" |
 "OPAQUE" / "KEYWORD"
 ; These strings are not to be translated.
 string = safe-char *[safe-chars / SPACE] safe-char
 integer = [-] 1*DIGIT
 ; The integer MUST fall within the range of
 ; values a 32 bit integer may take, ie.
 ; -2147483648 to 2147483647.
 boolean = "TRUE" / "FALSE"
 ; These strings are not to be translated.
 com-chars = safe-char / white-sp / "*" / "," / ";"/ "&"
 safe-char = attrchar / " " / "!" / '"' / "%" / "'" /
 "(" / ")" / "+" / "," / "-" / "." / "|" /
 ":" / "=" / "?" / "[" / "]" /
 "" / "/" / "" / " "
 ; All ASCII printable characters are
 ; included except ",", "&", "*" and "#".
 white-sp = SPACE / TAB
 rad64-char = ALPHA / DIGIT / "+" / "-" / white-sp
 opaque = 1*DIGIT ":" 4*rad64-char
 ; The digits define the original length of
 ; the opaque value. The restricted character
 ; string is the radix-64 encoding of the opaque
 ; value. See [5], Section 5.2.
 ; NOTE: White space is ignored in decoding
 ; radix-64 values.
 newline = CR / ( CR LF )
Guttman,Perkins Expires 6 December 1997 [Page 11]

Internet Draft Service Templates and URLs 6 June 1997
 ABNF should have some way of denoting a continuation
 line! Otherwise, it is ambiguous whether a next line is a
 continuation or starts with some bizarro nonterminal.
 Note on the use of white space:
 A string is considered to be a token in the case of a tag or
 <string> value. In this case, the string is 'trimmed'. White space
 interior to a string token is left alone, while white space between
 the tokens is removed. For example:
 " some name = some value , another example "
 would be trimmed to
 "some name" '=' "some value" and "another example".
 Notes on string matching:
 Attribute tags and values may be used by some protocols for directory
 look-up. In this case, the following rules should be applied for
 string matching of attribute strings.
 Decoding character escape and trimming white space MUST be performed
 before string matching. In addition, string matching SHOULD be case
 insensitive.
3.2.3. Attributes with multiple values
 Attributes with multiple values must be defined so that the type of
 each value is the same. Boolean attributes may not take multiple
 values.
 Attributes and values must be given in exactly the same order in
 translated service templates. This will allow the service templates
 to be used to translate attributes and values to other languages
 (using service templates as look up tables.)
3.2.4. Grouping attribute values together in records
 Some attributes may be related, which is to say, not independent.
 Each configuration, for instance, might have a limitation and a best
 use. If these were encoded in separate attributes, the dependency
 would not be clear:
Guttman,Perkins Expires 6 December 1997 [Page 12]

Internet Draft Service Templates and URLs 6 June 1997
 Configuration = A,B,C
 Restriction = slow,large,unpredictable,low-priority
 Best Use = cpu-intensive,batch-jobs,interactive-use
 Which is slow, A, B or C? Are interactive jobs unpredictable? The
 suggested convention is to choose one of the attributes ranges to be
 the attribute base. Here, it will be the configuration. The others
 attributes are, by conventions, extensions of this record. The
 following makes all dependencies explicit:
 Configuration-A.Restriction = slow,low-priority
 Configuration-A.Best-Use = batch-jobs
 Configuration-B.Restriction = unpredictable
 Configuration-B.Best-Use = interactive-use
 Configuration-C.Restriction = large
 Configuration-C.Best-Use = cpu-intensive
 Note that the use of such grouping is conventional, by use of the
 dot as an <tag> character, and does not place any constraint on
 the parsing mechanisms used by agents storing the visually related
 attribute values.
3.3. Special attributes
 Every service template must define the following attributes:
3.3.1. Service Type Language
 This is a two letter code defining the language of the template [8].
3.3.2. Version
 The version of the Service Type template. A proposal starts at 0.0,
 and the minor number increments once per revision. The Version
 attribute has a string value of the form:
 version = 1*DIGIT '.' 1*DIGIT
 A standardized template starts at 1.0. Additions of attributes add
 one to the minor number, where changes of definition or removal of
 attributes or values adds one to the major number. See Section 4 for
 more detail on how to use the Version attribute.
Guttman,Perkins Expires 6 December 1997 [Page 13]

Internet Draft Service Templates and URLs 6 June 1997
3.3.3. url-path rules
 This is a text attribute which defines the semantics of the url path
 of the service: URL of the given type.
 The <service-part> is of the form:
 /<addr-family>/<addr-spec>/<url-path>;FAQ
 The <url-path> description specifies additional information to locate
 a service when the <addr-spec> is not sufficient, and is a field
 whose content that distinguishes URLs of a particular service type
 from those of another service type. For instance, in the case of a
 printer service: URL, the url-path will typically be a queue name,
 but not in the case of a service: URL for any other service type.
4. A Process For Standardizing New Service Types
 New Service Types can be suggested simply by providing a Service Type
 template and a short description of the use for the service: URL.
 This MUST have its 'Version' attribute set to "0.0" initially.
 The minor version number will increment once with each change until
 it achieves 1.0. There is no guarantee any version of the service
 template will be backwards compatible before it reaches 1.0.
 Once a service template has reached 1.0, the definition is "frozen"
 for that version. New templates may be defined, of course, to refine
 that definition, but they must follow these rules:
 - Any new attribute defined for the template will increase the
 minor version number by one. All other attributes for the
 version must continue to be supported as before. A client which
 supports 1.x can still use later versions of 1.y (where x<y) as
 it will ignore attributes it doesn't know about.
 - Deprecating or changing the definition of an attribute requires
 changing the major version number of a service template. A user
 agent may be unable to make use of this information, or it may
 need to obtain the most recent service template to help the user
 interpret the service info.
 The template should be posted to the Service Location Working Group
 mailing list for review. Ideally, experts in the implementation and
 deployment of the particular protocol will be consulted so as to add
Guttman,Perkins Expires 6 December 1997 [Page 14]

Internet Draft Service Templates and URLs 6 June 1997
 more attributes or change their definition to make them as useful as
 possible.
 All published versions of the template must be available on-line,
 including obselete ones.
 QUESTION:
 Where?
 Once there is no more active dissent the Service Type should be
 reissued with possible corrections, having its Version number set to
 "1.0". If there is no comment on the template after 3 months, it
 should be considered to have been accepted.
5. Encoding Rules for Service Type URLs
 Much of this material is directly adapted from [4]. Note that the
 syntax for the url-path depends upon the Service Type definition.
 See Section 3. The ABNF for a service: URL is:
 service: URL = "service:" service-type ":" service-part
 service-type = 1*[ low-alpha / DIGIT / "+" / "-" / "." ]
 low-alpha = "a".."z"
 service-part = "//" login [ "/" url-path ]
 login = [ user "@" ] hostport
 hostport = host [ ":" port ]
 host = hostname / hostnumber
 hostname = hostlabel *[ "." domainlabel ]
 okchar = ALPHA / DIGIT
 domainlabel = okchar / okchar *[ okchar / "-" ] okchar
 hostlabel = ALPHA / ALPHA *[ okchar / "-" ] okchar
 hostnumber = ipv4-number / ipv6-number
 ipv4-number = 1*3DIGIT 3*3("." 1*3DIGIT)
 ipv6-number = 32hex
 port = 1*DIGIT
 user = *[ uchar / ";" / "?" / "&" / "=" ]
 url-path = *xchar ; each Service Type must define its
 ; own syntax (section 3)
 safe = "$" / "-" / "_" / "." / "+"
 extra = "!" / "*" / "'" / "(" / ")" / ","
 hex = DIGIT / "A".."F" / "a".."f"
 escape = "%" hex hex
 reserved = ";" / "/" / "?" / ":" / "@" / "&" / "="
 unreserved = ALPHA / DIGIT / safe / extra
 uchar = unreserved / escape
 xchar = unreserved / reserved / escape
Guttman,Perkins Expires 6 December 1997 [Page 15]

Internet Draft Service Templates and URLs 6 June 1997
6. Examples
 The Service Templates for the SLP Directory Agent and POP3 service
 are given below.
6.1. SLP Directory Agent
 The directory-agent service type has no attributes except scope.
6.2. POP3
 template.service-type = STRING L
 POP3
 # This is the template for the POP3 service.
 template.version = STRING L
 0.0
 # This is the preliminary version of the template.
 template.description = STRING
 The question is how to make this string exceed one line
 # Clients which wish to make use of POP3 service need to be
 # configured to use the correct POP3 server. The server may
 # or may not be able to use the APOP authentication mechanism.
 # Clients are able to discover which POP3 server is the correct
 # one for them and whether they can use the APOP to authenticate
 # themselves. Finally, the POP3 server policy may be
 # included.
 template.url-path-rules = STRING
 The url-path is omitted.
 #
 template.language = STRING L
 en
 # The default template is in English.
 Mailboxes = STRING M L
 # This is a list of all users (by user name) which the POP3
 # server supports.
 APOP = BOOLEAN L
Guttman,Perkins Expires 6 December 1997 [Page 16]

Internet Draft Service Templates and URLs 6 June 1997
 FALSE
 # This determines whether the POP3 server supports APOP
 Policy = STRING O
 # This optional attribute describes the POP3 server's policy
 # regarding its use. For instance, are users dissuaded or
 # disallowed from keeping mail on the server? Is there a
 # quota? Is mail older than a certain number of days erased?
7. General Service Template
 The service-template Service Type has 4 attributes, followed by the
 service: URL definition for the service type and the collection of
 attribute specifications for the service type.
 version = STRING L
 # This is the version number of the template.
 # It is expressed in X.Y notation, where X is the major
 # and Y is the minor version number.
 service type = STRING L
 # The value of this attribute is a service type string.
 description = STRING
 # The service type is described here. This is a paragraph or
 # so of text which describes how to interpret the service: URL
 # for this particular service type. It should be clear what
 # protocol or protocols can bind to the service access point
 # which the service: URL resolves to.
 Language tag = STRING L
 en
 # The Language tag used in the service type template. This is
 # an ISO-639 two letter language code.
 service-URL = STRING
 # A way of describing the structure of the <service-part>
 # is for the service type being specified.
 attr-specs = STRING M
 # The value of this attribute is the template text, defining
 # all the service type attributes.
 Of the mandatory attribute tags, only "description" may be translated
 into another language (see Section 9.)
Guttman,Perkins Expires 6 December 1997 [Page 17]

Internet Draft Service Templates and URLs 6 June 1997
 The description field should be a paragraph of text describing the
 attribute and the all the values it can take on. This information
 will be used by those who develop user interfaces to display service
 information and those who advertise services using attributes
 associated with the service: URL.
7.1. Obtaining Service Templates dynamically
 The service template is registered as a service type by any SA which
 has a template. The SA SHOULD query the DA to determine if the
 service template has already been registered, and if so, abstain from
 registering the service template.
 This is an area which definitely needs work. The difficulty
 is that in order for a service template to be retrieved as
 an attribute of some registered service: URL (presumably
 of type service:template:), one would have to allow extra
 newlines and space and reserved characters in tricky places.
 On the other hand, devising a new method (a new service) of
 handing out such information is not immediately attractive.
8. Internationalization Considerations
 The service: URL itself must be encoded using the rules set forth
 in [4]. The character set encoding is limited to specific ranges
 within the US-ASCII character set [2].
 The attribute information associated with the service: URL may be
 expressed in any character set, and in any language.
8.1. Character Set identification and use
 The way of identifying the character set used is the IANA Character
 Set registry official name, found at:
 http://www.isi.edu/in-notes/iana/assignments/character-sets
 US-ASCII MUST be supported.
 For other encodings, the repository of the service template or the
 protocol which transmits attributes (for registration or query
 purposes) must be able to identify the encoding using an external
 mechanism. It would make no sense to use an 'internal' designation
 for marking the character encoding, as the attribute information is
 itself string encoded. The Service Location Protocol [10] makes the
Guttman,Perkins Expires 6 December 1997 [Page 18]

Internet Draft Service Templates and URLs 6 June 1997
 character encoding for each registration, query and query result
 explicit in the protocol header, for example.
 All attribute information in a single transmission, file, etc. MUST
 be in the same character encoding.
8.2. Language identification and translation
 The language used in attribute string should be identified using a
 Language tag as defined by [1].
 A program may translate a service advertisement from one language
 to another provided it has both the template of the language of the
 advertisement and the template of the desired target language. All
 standardized attributes will be in the same order in both templates.
 All non-arbitrary strings (such as tags and set members) will be
 directly translatable from one language to another. Free text and
 nonstandard attributes may not be automatically translated in this
 manner.
 Shouldn't help text be translatable? What is free text?
 All strings used in attributes (tags and values) are assumed to
 be able to be translated unless explicitely defined as should
 be literal, so that best effort translation (see below) will not
 obfuscate strings which are meant to be interpreted by a program, not
 a person.
 There are two ways to go about translation: Standardization and best
 effort.
 When the service type is standardized, more than one document may be
 submitted for review. One service type description is registered
 for each language. These descriptions must be kept in sync, so that
 when a service type template is updated in one language, all the
 translations (at least eventually) reflect the same semantics.
 If no document exists describing the standard translation of the
 service type, a 'best effort' translation for strings may be done.
9. Security Considerations
 Service type templates provide information which will be used to
 interpret information obtained by the Service Location Protocol. If
 these templates were modified or false templates were distributed,
Guttman,Perkins Expires 6 December 1997 [Page 19]

Internet Draft Service Templates and URLs 6 June 1997
 services may not correctly register themselves or clients might not
 be able to interpret service information obtained by SLP.
 Service URLs themselves specify the service access point and
 protocol for a particular service type. These Service URLs could be
 distributed and indicate the location of a service other than that
 which a user would normally want to use. SLP distributes Service
 URLs and has an authentication mechanism which allows Service URLs of
 advertised services to be signed and these signatures to be verified
 by clients.
Guttman,Perkins Expires 6 December 1997 [Page 20]

Internet Draft Service Templates and URLs 6 June 1997
References
 [1] H. Alvestrand. Tags for the Identification of Languages. RFC
 1766, March 1995.
 [2] ANSI. Coded Character Set -- 7-bit American Standard code for
 Information Interchange. X3.4-1986, 1986.
 [3] T. Berners-Lee, R. Fielding, and L. Masinter. Uniform
 Resource Locators (URL): Generic Syntax and Semantics.
 draft-fielding-url-syntax-05.txt, May 1997. (work in progress).
 [4] T. Berners-Lee, L. Masinter, and M. McCahill. Uniform Resource
 Locators (URL). RFC 1738, December 1994.
 [5] N. Borenstein and N. Freed. MIME (Multipurpose Internet Mail
 Extensions) Part One: Mechanisms for Specifying and Describing
 the Format of Internet Message Bodies. RFC 1521, September
 1993.
 [6] D. Crocker and P Overell. Augmented BNF for Syntax
 Specifications: ABNF. draft-ietf-drums-abnf-02.txt, November
 1996. (work in progress).
 [7] A. Gulbrandsen and P. Vixie. A DNS RR for specifying the
 location of services (DNS SRV). RFC 2052, October 1996.
 [8] Geneva ISO. Code for the representation of names of languages.
 ISO 639:1988 (E/F), 1988.
 [9] R. Moats and M. Hamilton. Finding Stuff(Providing information to
 support service discovery). draft-ietf-svrloc-advertise-00.txt,
 February 1997. (work in progress).
 [10] J. Veizades, E. Guttman, C. Perkins, and S. Kaplan. Service
 Location Protocol, April 1997. draft-ietf-svrloc-protocol-17.txt
 (work in progress).
Authors' Addresses
 Questions about this memo can be directed to:
 Erik Guttman Charles E. Perkins
 Sun Microsystems Sun Microsystems
 Gaisbergstr. 6 2550 Garcia Avenue
 D-69115 Heidelberg Mountain View, CA 94043
 Germany USA
Guttman,Perkins Expires 6 December 1997 [Page 21]

Internet Draft Service Templates and URLs 6 June 1997
 Phone: +1 415 336 6697 1 415 336 7153
 email: Erik.Guttman@eng.sun.com cperkins@corp.sun.com
Guttman,Perkins Expires 6 December 1997 [Page 22]

AltStyle によって変換されたページ (->オリジナル) /