[e2e] Port numbers, SRV records or...?

Joe Touch touch at ISI.EDU
Tue Aug 8 08:46:39 PDT 2006

Keith Moore wrote:
>>> Port-ids or sockets identify an instance of communication,
>>> not a  particular service.
>> They currently do both for the registered numbers, at least as a
>> convention, although individual host-pairs override that protocol
>> meaning by a-priori (usually out-of-band) agreement.
> I think of port numbers identifying a distinguished service or default
> instance of a service.
> e.g. A host can have web servers (i.e. something that serves web pages
> for a web browser), using the HTTP protocol, on any number of ports. The
> web server running HTTP on port 80 is the default instance, the one that
> people get if they don't specify anything more than the name of the
> service (which is a DNS name but not necessarily the name of a single
> host).

Existing well-known port allocations indicate both protocol and version;
that means that there are multiple 'default instances' in that case
(e.g., NFS).

> A host can also use HTTP to provide things other than web servers, and a
> host can have web servers running other protocols such as FTP.  So we
> have service names, host names, services, protocols, and ports - each
> subtly different than those next to it.

A few questions:

- how are service names different from services?

- why does the service name differ from the protocol?
	protocols should indicate the next-layer up only, IMO

	transport should indicate how to parse the next layer,
	e.g., to indicate "HTTP". HTTP already provides for ways
	to indicate the next layer, which is similar to what
	others call 'semantics', e.g.: ftp:, http:, etc. If
	you want to do DNS over HTTP, define a "dns:" type, IMO.

Ports really indicate which instance of a protocol at a host, IMO - but
supporting that in TCP requires redefining the 'socket pair' to be a
pair of triples: "host, protocol, port" (rather than the current "host,

However, although there are many who want to consider multiple instances
of the same protocol, it's not clear how a source would know which
instance to talk to. IMO, instances are basically bound to the
destination IP address, and if you want multiple instances, get multiple
addresses - because the same resolution that determines host determines
instance, IMO.

I.e., instance indication and selection is rife with problems.

>> The key question is "what is late bound". IMO, we could really use
>> something that decouples protocol identifier from instance (e.g.,
>> process demultiplexing) identifier.
> We could also use something that decouples service from protocol.  (do
> we really want to be stuck with HTTP forever as the only way to get web
> pages?  SMTP as the only way to transmit mail?)  How many layers do we
> want?

We do in HTTP. We might be able to use that in other protocols, but
that's a decision for those protocols, not TCP, IMO.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 250 bytes
Desc: OpenPGP digital signature
Url : http://mailman.postel.org/pipermail/end2end-interest/attachments/20060808/2a96f8d2/signature-0001.bin

More information about the end2end-interest mailing list