Re: URI Syntax Limitations

On Nov 9, 2005, at 4:38 AM, Manuel Urueña wrote:

> While studying the deployment of new protocols in Internet, I've found
> some limitations to current URI syntax:
>
> - Although URIs can include a port number, the transport protocol to be
> used cannot be specified (i.e. UDP or TCP in DNS). Thus, each URI 
> scheme
> is bound to a single transport protocol. This limitation could hinder
> the usage of newer protocols like SCTP in current applications (e.g.
> HTTP over SCTP).

It isn't a limitation. Authorities are bound by transport protocol
as well, so there is no value in treating them as the same space.
It is simply a choice as to whether the junction is part of the
authority syntax or the scheme syntax.  Since URIs were deployed
long before anyone considered that question, the choice has
narrowed to different schemes.  In other words, just define
"http.sctp" and "http.udp" schemes, if so desired.

The technical advantage of them being different schemes is because
applications will need a different protocol module to resolve them.
Since well-designed URI applications use a dispatch-on-scheme
table for handlers, it is technically superior to place that info
in the scheme name instead of inside the authority component.

> - Host identification is limited to plain IP addesses (no IPV6 scope 
> id)
> or DNS-like hostnames. Therefore, although each scheme could define an
> alternative resolution mechanism for the "host" part, this limitation
> could also hinder the deployment of newer Service Discovery (e.g. SLP)
> or Load Balancing (e.g. Rserpool) protocols, that offer some kind of
> alternative name-resolution mechanism.

No such limitation exists, so my guess is that you are assuming
something that isn't said in STD 66.

> Browsing the mailing list archive I've seen that some newer protocols
> define some arguments in the query part (like "transport=SCTP") in 
> their
> URI formats in order to cope with the first issue.
>
> However IMHO this mechanism could not be applied to all URI schemes
> already defined, as the "query" part is optional, thus many schemes do
> not allow any arguments.

I don't know of any worthwhile schemes that have done something
as goofy as placing a transport protocol in the query part.
All such proposals in the past have been told to use the scheme
name, as in http/https. The only reason you don't see http.sctp
in the registry is because nobody has asked for it yet.

Cheers,

Roy T. Fielding                            <http://roy.gbiv.com/>
Chief Scientist, Day Software              <http://www.day.com/>

Received on Wednesday, 9 November 2005 23:51:10 UTC