[jcifs] SMB URL

Christopher R. Hertel crh at ubiqx.mn.org
Wed Jul 10 07:11:18 EST 2002


Looking at java.net.URLEncoder and java.net.URLDecoder...

The encoder is very conservative.  It encodes just about everything.  That 
means that if you created an SMBURL class, as a descendant form of the URL 
class, the SMBURL class would need to parse the smb_srv_name field into 
it's component parts before applying any encoding or decoding.

That is fairly straight-forward, though.  Java.net.URL will parse out what
they call the "host" field (which is actually the server field, according
to RFC 2396).  The descendant SMBURL class can parse that into userinfo,
host, and port.  It can then determine syntactically whether the host
component is an IPv4 address, an IPv6 address or some kind of name.

Determining whether the name is a DNS name or a NetBIOS name with scopeID
attached is mostly a semantic problem.  I think that this is where the
problem is.  In most cases, there is no syntactic distinction between 
NetBIOS and DNS name syntax.  So, in order to determine which kind of name 
is in the host field, the application needs to try both the NetBIOS and 
DNS queries.

Thing is, this must be done even if the scope ID is contained in the 
?query string.  If you have:

  smb://foo%2Ebar/

You need to do a NetBIOS query for "FOO.BAR<20>" and "FOO.BAR<1D>" and 
possibly "FOO.BAR<1B>" as I described earlier.  You also need to do a DNS 
lookup for "FOO.BAR" (though why anyone would escape a dot in a DNS name 
is beyond me).

Bottom line:  I don't think we gain anything by removing the Scope ID from 
the authority component.

Chris -)-----

-- 
Samba Team -- http://www.samba.org/     -)-----   Christopher R. Hertel
jCIFS Team -- http://jcifs.samba.org/   -)-----   ubiqx development, uninq.
ubiqx Team -- http://www.ubiqx.org/     -)-----   crh at ubiqx.mn.org
OnLineBook -- http://ubiqx.org/cifs/    -)-----   crh at ubiqx.org




More information about the jcifs mailing list