[jdev] Re: JEP-114 - what is the "component name"?
Ralph Meijer
jabber.org at ralphm.ik.nu
Fri Jul 22 03:35:11 CDT 2005
On Thu, Jul 21, 2005 at 04:50:22PM -0300, Gaston Dombiak wrote:
> Hey ralphm,
>
> My question was/is about the format of the TO attribute when sending the
> opening stream:stream element. So is it valid to just include the subdomain
> instead of the subdomain+hostname? There is no description of that in the
> JEP, just the examples that are using the format subdomain+hostname.
Oh. Maybe the text is not clear in this respect. The 'to' attribute must
contain the address of the component, a FQDN. If the address is DNS
resolvable (e.g. 'conference.jabber.org', other servers can send
messages to it (via s2s). If you just use 'conference.localhost' or
'conference', this is ok, too, but only local entities (clients or other
components connected to the same server) can send messages to it,
because the address would typically only resolve within the server.
For completeness, when a server receives a packet it checks the 'to'
address. If it is its own address it will try to handle the packet
itself. If it not, it has to route the packet elsewhere. In case of
local clients, it will try to send the packet on to a connected client
or handle it itself. If the address (or the host part of it) is of a
locally known component it will route it there. As a last resort, it
will try to resolve the address using DNS and open a s2s connection to
the found IP-address/port.
> Your post made me have more questions now. :) So is it valid to send
> subdomain+anyhostname to a server whose hostname is not anyhostname? Where
> can I read about the implications of doing something like that? How may a
> server differentiate between subdomain and subdomain+anyhostname? Do they
> have different implications?
Yes, the address is completely free. However, when an other server needs
to send messages to your component, the FQDN of the component should
resolve to the server it is connected to, since this other server will
simply open a s2s connection to the given address. Your server is then
responsible for answering on behalf of the component. This is because
servers cannot know beforehand if a certain address points to a 'normal'
server or a server component.
--
Groetjes,
ralphm
More information about the JDev
mailing list