[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: FW: Application for port-number (more tech)



At 12:09 PM 5/1/2003 -0700, IANA wrote:
Q: What value should I pass for the "type" parameter when registering a service?

A: You must pass a string of the form "_applicationprotocol._transportprotocol". Currently "_transportprotocol" must be either "_tcp" or "_udp". Your "_applicationprotocol" must be a protocol name registered with IANA and appearing in the list of registered IANA protocol names and port numbers. If your application protocol does not appear in this list, it is a simple matter to fill out the IANA application for user registered port number form. You will also be allocated a registered port number for your protocol, but of course you don't actually need a registered port number because you will be using DNS Service Discovery SRV records which specify the port number, so the client can find you no matter what port your server is running on today.
OK, so the web page is asking him for a unique and registered character string as a service identifier, and whether he is using UDP or TCP. He will now do a DNS lookup for an SRV record as described in RFC 2782, and the DNS record will return him the port number he is to use.

He wants you to register the character string he provided as a name in the registry associated with RFC 2782. Do you have one? Service Location WG didn't ask you to...

IANA Considerations

   The IANA has assigned RR type value 33 to the SRV RR.  No other IANA
   services are required by this document.
He presumes, and the web page presumes, that the registry in question is in fact your port registry, which is of course incorrect - the port number and transport combination are registered, but AFAIK you don't guarantee that the mnemonic associated with it is unique or that it meets any specific rules. You don't, for example, have facilities in the port registry for Unicode characters in the names, which would be important for the Chinese version of any given application...

There is a bit of history here. Unix systems - of which MacOS X is an example - keep a list of the "services" they use in a file called /etc/services. On my favorite UNIX machine, the first few lines of that are:

#ident "@(#)services 1.16 97/05/12 SMI" /* SVr4.0 1.8 */
#
# Network services, Internet style
#
tcpmux 1/tcp
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users

I suspect that if you go to your port registry, you will be able to map each of those lines (name, port number, and transport) very specifically to a line in your registry. However, what you are registering is the port number and transport, and the ASCII string is for mnemonic value (and is ASCII) and not something you guarantee to be unique. Apple seems to be telling its users something different.

What I would suggest that you do is forward this email of mine to the zeroconf and the defunct Service Location WG (the Apps ADs should be able to put you in contact), and then log an issue at http://developer.apple.com/contact/ pointing to the emails you sent. Apple, first, is just plain wrong, because your registry doesn't guarantee the uniqueness of the names or attempt to register them in the same sense that it does ports. Since all the guy really wants is a name, I think you want to have a different registry that registers names for use in DNS SRV Resource Records and uses them to obtain the relevant port number - after all, if you *also* give him a port number, the content of the DNS record is rather predictable. It is therefore either Zeroconf or servloc's remit to instruct you about the details of that registry.