# diffs between previous version and this

Larry Masinter (masinter@parc.xerox.com)
Wed, 27 Jul 1994 09:26:12 PDT

- Messages sorted by: [ date ][ thread ][ subject ][ author ]
- Next message: John A. Kunze: "final? IRL Requirements draft"
- Previous message: Mitra: "ftp ambiguity"

    To: uri@bunyip.com

    Subject: diffs between previous version and this

    From: Larry Masinter <masinter@parc.xerox.com>

    Message-Id: <94Jul27.092624pdt.2760@golden.parc.xerox.com>

    Date: 	Wed, 27 Jul 1994 09:26:12 PDT

For those who have asked, here is a diff between the previous version
and the one I just mailed out for discussion on Thursday:

================================================================
2,3c2,3
< draft-ietf-uri-url-05.txt L. Masinter
< Expires February 26, 1995 M. McCahill

    ---
    > interim draft 5.2                                            L. Masinter
    > Expires February 27, 1995                                    M. McCahill
    5c5
    <                                                            July 26, 1994

    ---
    >                                                            July 27, 1994
    28c28
    <      This Internet Draft expires February 26, 1995.

    ---
    >      This Internet Draft expires February 27, 1995.
    53,54c53,54
    <    for a resource available on the Internet. As there are many
    <    different method of accessing resources, there are several

    ---
    >    for a resource available on the Internet. Just as there are many
    >    different methods of access to resources, there are several
    57,58c57,58
    <    The generic syntax provides a framework for new schemes for names
    <    to be resolved using as yet undefined protocols.

    ---
    >    The generic syntax provides a framework for new URL schemes to be
    >    resolved using as yet undefined protocols.
    61,62c61,62
    <    rules of a completely specified name; second, we give the rules
    <    under which parts of the name may be omitted in a well-defined

    ---
    >    rules of a completely specified URL; second, we give the rules
    >    under which parts of the URL may be omitted in a well-defined
    67,69c67
    <    A URL consists of a scheme specifier followed by a string whose
    <    format is a function of the scheme. A BNF description of the URL
    <    syntax is given in section 5. URLs are written as

    ---
    >    URLs are written as follows:
    71c69
    <          URL:<scheme>:<scheme-specific-part>

    ---
    >        URL:<scheme>:<scheme-specific-part>
    73,75c71
    < 2.1.1. URL Label
    <
    <    URLs start with a constant prefix "URL:". This prefix is used to

    ---
    >    A URL starts with a constant prefix "URL:".  This prefix is used to
    77c73,74
    <    elements.

    ---
    >    elements. The part of the URL after the initial prefix is known as
    >    the URL body.
    79c76,84
    < 2.1.2. Scheme

    ---
    >    The body of the URL contains the name of the scheme being used
    >    (<scheme>) followed by a colon and then a string (the
    >    <scheme-specific-part>) whose interpretation depends on the scheme.
    >
    >    Scheme names consist of lower case letters "a"--"z", digits, and
    >    the characters plus ("+"), period ("."), and hyphen ("-"). For
    >    resiliency, programs interpreting URLs should allow upper case
    >    letters as equivalent to lower case in scheme names (e.g., allow
    >    "HTTP" as well as "http").
    81,94c86
    <    After the initial "URL:" string, the next component of a URL is the
    <    name of the scheme used, followed by a colon. Scheme names are made
    <    of lower case letters "a"--"z", digits, and the character plus
    <    ("+"), period ("."), and hyphen ("-"). For resiliancy, programs
    <    interpreting URLs may wish to allow upper case letters as
    <    equivalent to lower case in scheme names (e.g., allow
    <    "URL:HTTP://host/" as well as "URL:http://host/").
    <
    < 2.1.3. Scheme Specific Part
    <
    <    The syntax for the rest of the URL varies depending on the scheme.
    <    However, there is a common syntax shared by many schemes that use
    <    IP-based protocols to specified Internet hosts, as specified in
    <    Section 3.1.

    ---
    >    A BNF description of the URL syntax is given in Section 5.
    111,118c103,110
    <    Many URL schemes have characters that are _reserved_; their
    <    appearance in the scheme-specific part of the URL has a designated
    <    semantics. If it is necessary to designate a byte in a component of
    <    a URL that would otherwise be represented by a reserved character,
    <    it is necessary to represent that byte encoded. The characters ";",
    <    "/", "?", ":", "@", "=" and "&" are the characters which may be
    <    reserved for special meaning within a scheme.  No other characters
    <    may be reserved within a scheme.

    ---
    >    Many URL schemes reserve certain characters for a special meaning;
    >    their appearance in the scheme-specific part of the URL has a
    >    designated semantics. If it is necessary to designate a byte in a
    >    component of a URL that would otherwise be represented by a
    >    reserved character, it is necessary to represent that byte encoded.
    >    The characters ";", "/", "?", ":", "@", "=" and "&" are the
    >    characters which may be reserved for special meaning within a
    >    scheme.  No other characters may be reserved within a scheme.
    160c152
    <    prospero                Prospero directory service

    ---
    >    prospero                Prospero Directory Service
    196,197c188,189
    <     while <URL:ftp://foo:@host.com/> has a user name of "foo" and no
    <     password.

    ---
    >     while <URL:ftp://foo:@host.com/> has a user name of "foo" and an
    >     empty password.
    225c217
    <    FTP URLs follow the syntax described in section 3.1.  The port

    ---
    >    FTP URLs follow the syntax described in Section 3.1.  The port
    233c225
    <    conventions for "anonymous" FTP are to be used, as followed:

    ---
    >    conventions for "anonymous" FTP are to be used, as follows:
    310c302
    <    HTTP URLs take the following form:

    ---
    >    The body of an HTTP URL takes the form:
    312c304
    <      URL:http://<host>:<port>/<path>?<searchpart>

    ---
    >       http://<host>:<port>/<path>?<searchpart>
    315,319c307,311
    <    is omitted, the port defaults to 80.  <path> is a HTTP selector,
    <    and <searchpart> is a query string. The <path> is optional, as is
    <    the <searchpart> and its preceding "?". If neither <path> nor
    <    <searchpart> is present, the "/" may also be omitted.  No user name
    <    or password is allowed.

    ---
    >    is omitted, the port defaults to 80.  No user name or password is
    >    allowed.  <path> is a HTTP selector, and <searchpart> is a query
    >    string. The <path> is optional, as is the <searchpart> and its
    >    preceding "?". If neither <path> nor <searchpart> is present, the
    >    "/" may also be omitted.
    331,336c323,328
    <    items and collections of items (directories). The Gopher+
    <    protocol is a set of upward compatible extensions to the base
    <    Gopher protocol and is specified in [2]. Gopher+ supports
    <    associating arbitrary sets of attributes and alternate data
    <    representations with Gopher items. Gopher URLs accommodate both
    <    Gopher and Gopher+ items and item attributes.

    ---
    >    items and collections of items (directories). The Gopher+ protocol
    >    is a set of upward compatible extensions to the base Gopher
    >    protocol and is specified in [2]. Gopher+ supports associating
    >    arbitrary sets of attributes and alternate data representations
    >    with Gopher items. Gopher URLs accommodate both Gopher and Gopher+
    >    items and item attributes.
    340c332
    <    Gopher URLs have the following form:

    ---
    >    The body of a Gopher URL takes the form:
    342c334
    <     URL:gopher://<host>:<port>/<gopher-path>

    ---
    >       gopher://<host>:<port>/<gopher-path>
    344c336
    <     where <gopher-path> is one of

    ---
    >    where <gopher-path> is one of
    347a340
    >        <gophertype><selector>%09<gopher+_string>
    366,369c359,362
    <    gophertype character, in which case that character will occur twice
    <    consecutively. The gopher selector string may be an empty string;
    <    this is how gopher clients refer to the top-level directory on a
    <    gopher server.

    ---
    >    <gophertype> character, in which case that character will occur
    >    twice consecutively. The gopher selector string may be an empty
    >    string; this is how gopher clients refer to the top-level directory
    >    on a gopher server.
    389a383,393
    >    When a gopher client retrieves an item from a Gopher+ server, the
    >    client send Gopher+ commands to the gopher server by appending a
    >    <tab> and the gopher+ commands after the gopher selector (and the
    >    <tab> and search string in the case of a gopher search item). If a
    >    Gopher+ URL does not refer to a Gopher search type, the Gopher
    >    client sends to the server the gopher selector string, followed by
    >    a tab, followed by the gopher+ commands. If the Gopher+ URL refers
    >    to a Gopher search type, the client sends to the gopher server the
    >    gopher selector string, followed by a tab, followed the search
    >    string, followed by a tab, followed by the gopher+ commands.
    >
    398c402
    <    a Gopher electronic for associated with it.

    ---
    >    a Gopher electronic form associated with it.
    470c474
    <    Mailto URLs take the form:

    ---
    >    The body of a mailto URL takes the form:
    472c476
    <         URL:mailto:<rfc822-addr-spec>

    ---
    >         mailto:<rfc822-addr-spec>
    491c495
    <    News URLs take one of two forms:

    ---
    >    The body of a news URL takes one of two forms:
    493,494c497,498
    <      URL:news:<newsgroup-name>
    <      URL:news:<message-id>

    ---
    >      news:<newsgroup-name>
    >      news:<message-id>
    504c508,509
    <    The URL "news:*" is used to refer to "all available news groups".

    ---
    >    If <newsgroup-name> is "*" (as in <URL:news:*>), it is used to
    >    refer to "all available news groups".
    514c519,521
    <    (RFC 977). NNTP URLs take the form:

    ---
    >    (RFC 977).
    >
    >    The body of a nntp URL take the form:
    516c523
    <      URL:nntp://<host>:<port>/<newsgroup-name>/<article-number>

    ---
    >       nntp://<host>:<port>/<newsgroup-name>/<article-number>
    518,519c525,526
    <    where <host> and <port> are as described in 3.1. If :<port> is
    <    omitted, the port defaults to 119.

    ---
    >    where <host> and <port> are as described in Section 3.1. If :<port>
    >    is omitted, the port defaults to 119.
    537c544
    <    Telnet URLs take the form

    ---
    >    The body of a telnet URL takes the form:
    539c546
    <      URL:telnet://<user>:<password>@<host>:<port> [ / ]

    ---
    >        telnet://<user>:<password>@<host>:<port> [ / ]
    541c548
    <    as specified in section 3.1. The port defaults to 23; the <user>

    ---
    >    as specified in Section 3.1. The port defaults to 23; the <user>
    555c562,566
    <    WAIS URLs take the following forms:

    ---
    >    The body of a WAIS URLs takes one the following forms:
    >
    >      wais://<host>:<port>/<database>
    >      wais://<host>:<port>/<database>?<search>
    >      wais://<host>:<port>/<database>/<wtype>/<wpath>
    557,563c568,572
    <      URL:wais://<host>:<port>/<database>
    <      URL:wais://<host>:<port>/<database>?<search>
    <      URL:wais://<host>:<port>/<database>/<wtype>/<wpath>
    <
    <    If :<port> is omitted, the port defaults to 210. The first form
    <    designates a WAIS database that is available for searching. The
    <    second form designates a particular search.

    ---
    >    where <host> and <port> are as described in Section 3.1. If :<port>
    >    is omitted, the port defaults to 210.  The first form designates a
    >    WAIS database that is available for searching. The second form
    >    designates a particular search.  <database> is the name of the WAIS
    >    database being queried.
    584c593
    <    FILE URLs take the form:

    ---
    >    The body of a file URL takes the form:
    586c595
    <    URL:file://<host>/<path>

    ---
    >        file://<host>/<path>
    588c597
    <    Where <host> is the fully qualified domain name of the system on

    ---
    >    where <host> is the fully qualified domain name of the system on
    593c602,603
    <           DISK$USER:[MY.NOTES]NOTE123456.TXT

    ---
    >
    >      DISK$USER:[MY.NOTES]NOTE123456.TXT
    597c607
    <           URL:file://vms.host.edu/my/notes/note12345.txt

    ---
    >      <URL:file://vms.host.edu/disk$user/my/notes/note12345.txt>
    610,613c620,621
    <    accessed via the Prospero Directory Service. Prospero URLs are
    <    are interpreted by using a Prospero Directory Service to determine
    <    appropriate access methods for a resource; an access method
    <    might itself be represented as (a different) URL.

    ---
    >    accessed via the Prospero Directory Service. The Prospero protocol
    >    is defined elsewhere [16].
    615c623
    <    Prospero URLs take the form:

    ---
    >    The body of a prospero URLs takes the form:
    617c625
    <     URL:prospero://<host>:<port>/<hsoname>;<field>=<value>

    ---
    >       prospero://<host>:<port>/<hsoname>;<field>=<value>
    619,620c627,629
    <    as specified in section 3.1 The port defaults to 1525. No username
    <    or password is allowed.

    ---
    >    where <host> and <port> are as described in Section 3.1. If :<port>
    >    is omitted, the port defaults to 1525. No username or password is
    >    allowed.
    622,623c631,646
    <    The <hsoname> corresponds to the host specific object name, as
    <    defined in the document describing the Prospero protocol.[16].

    ---
    >    Prospero URLs are interpreted by contacting an a Prospero directory
    >    server on the specified host and port to determine appropriate
    >    access methods for a resource, which might themselves be
    >    represented as different URLs. External Prospero links are
    >    represented as URLs of the underlying access method and are not
    >    represented as Prospero URLs.
    >
    >    The <hsoname> is the host-specific object name in the Prospero
    >    protocol, suitably encoded.  This name is opaque and interpreted by
    >    the Prospero server.  The semicolon ";" is reserved and may not
    >    appear without quoting in the <hsoname>.
    >
    >    Note that a slash "/" may appear in the <hsoname> without quoting
    >    and no significance may be assumed by the application.  Though
    >    slashes may indicate hierarchical structure on the server, such
    >    structure is not guaranteed.
    625c648
    <    In addition, after the <hsoname>, optional field and values

    ---
    >    In addition, after the <hsoname>, optional fields and values
    627,629c650,652
    <    URL.  When present, each field value pair is separated from each
    <    other and from the rest of the URL by a semicolon (;).  The name of
    <    the field and its value are separated by an equal sign (=).  If

    ---
    >    URL.  When present, each field/value pair is separated from each
    >    other and from the rest of the URL by a ";" (semicolon).  The name
    >    of the field and its value are separated by a "=" (equal sign). If
    631c654
    <    example, the version-number field can be specified to identify a

    ---
    >    example, the OBJECT-VERSION field can be specified to identify a
    647c670
    <    URL schemes must have demonstratable utility and operability.  One

    ---
    >    URL schemes must have demonstrable utility and operability.  One
    679,684c702,707
    <    url            = "URL:" unlabelled
    <    unlabelled     = httpaddress | ftpaddress | newsaddress |
    <                     nntpaddress | telnetaddress | gopheraddress |
    <                     waisaddress | mailtoaddress | fileaddress |
    <                     prosperoaddress | otheraddress
    <    otheraddress   = scheme ":" schemepart

    ---
    >    url            = "URL:" urlbody
    >    urlbody        = httpbody | ftpbody | newsbody |
    >                     nntpbody | telnetbody | gopherbody |
    >                     waisbody | mailtobody | filebody |
    >                     prosperobody | otherbody
    >    otherbody      = scheme ":" schemepart
    697,699c720,722
    <    ftpaddress     = "ftp://" login [ "/" path [ ";type=" ftptype ]]
    <    path           = segment *[ "/" segment ]
    <    segment        = *[ uchar | "?" | ":" | "@" | "&" | "=" ]

    ---
    >    ftpbody        = "ftp://" login [ "/" fpath [ ";type=" ftptype ]]
    >    fpath          = fsegment *[ "/" fsegment ]
    >    fsegment       = *[ uchar | "?" | ":" | "@" | "&" | "=" ]
    702c725,729
    <    httpaddress    = "http://" hostport [ "/" path [ "?" search ]]

    ---
    >    filebody       = "file://" host [ "/" fpath ]
    >
    >    httpbody       = "http://" hostport [ "/" hpath [ "?" search ]]
    >    hpath          = hsegment *[ "/" hsegment ]
    >    hsegment       = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
    705c732
    <    gopheraddress  = "gopher://" hostport [ / [ gtype [ selector

    ---
    >    gopherbody     = "gopher://" hostport [ / [ gtype [ selector
    711,712c738,739
    <    mailtoaddress  = "mailto:" encoded822addr
    <    encoded822addr = *xchar

    ---
    >    mailtobody     = "mailto:" encoded822addr
    >    encoded822addr = 1*xchar
    714c741
    <    newsaddress    = "news:" grouppart

    ---
    >    newsbody       = "news:" grouppart
    719c746
    <    nntpaddress    = "nntp://" hostport "/" group [ "/" digits ]

    ---
    >    nntpbody       = "nntp://" hostport "/" group [ "/" digits ]
    721c748
    <    telnetaddress  = "telnet://" login [ "/" ]

    ---
    >    telnetbody     = "telnet://" login [ "/" ]
    723c750
    <    waisaddress    = waisdatabase | waisindex | waisdoc

    ---
    >    waisbody       = waisdatabase | waisindex | waisdoc
    731c758,760
    <    prosperoaddress= "prospero://" hostport "/" path *[ fieldspec ]

    ---
    >    prosperobody   = "prospero://" hostport "/" ppath *[ fieldspec ]
    >    ppath          = psegment *[ "/" psegment ]
    >    psegment       = *[ uchar | "?" | ":" | "@" | "&" | "=" ]
    856c885
    <   [1] Anklesaria, F., et.al. (1993) "The Internet Gopher Protocol",

    ---
    >   [1] Anklesaria, F., et al. (1993) "The Internet Gopher Protocol",
    859c888
    <   [2] Anklesaria, F., et.al. (1993) "Gopher+ upward compatible

    ---
    >   [2] Anklesaria, F., et al. (1993) "Gopher+ upward compatible
    916,920c945,948
    <  [16] Neuman, B. Clifford, (1992) "Prospero: A Tool for Organizing
    <       Internet Resources", Electronic Networking: Research,
    <       Applications and Policy, Vol 1 No 2, Meckler Westport CT USA.
    <       See also <URL:ftp://prospero.isi.edu/pub/prospero/
    <       doc/prospero-protocol.PS.Z>.

    ---
    >  [16] Neuman, B. Clifford, and Augart, Steven (1993). "The Prospero
    >       Protocol", USC Information Sciences Institute, June 1993 and as
    >       updated from time to time, <URL:ftp://prospero.isi.edu/pub/
    >       prospero/doc/prospero-protocol.PS.Z>.
    967d994
    <

     Next message: John A. Kunze: "final? IRL Requirements draft"
     Previous message: Mitra: "ftp ambiguity"