HTTP2: base it on NNTP?

Dan Connolly <connolly@pixel.convex.com>
Message-id: <9212080422.AA28362@pixel.convex.com>
To: www-talk@nxoc01.cern.ch
Subject: HTTP2: base it on NNTP?
Date: Mon, 07 Dec 92 22:22:26 CST
From: Dan Connolly <connolly@pixel.convex.com>

The functionality of the HTTP2 has a lot in common
with NNTP:

Commands:

HTTP		NNTP

GET u		BODY
GET u v		ARTICLE
HEAD		HEAD
PUT		POST or IHAVE

These are novel to HTTP:

CHECKOUT
CHECKIN
TEXTSEARCH u v

Status messages:

HTTP		NNTP

OK		2xx - command ok
ERROR		4xx - command correct, but could not be completed
		5xx - command unimplemented or incorrect
REDIRECTION
FORWARD

	etc.

The main technical difference between the protocols is that
NNTP involves a few more round-trips here and there: the server
starts the dialogue with a "200 - server ready" message.

The HTTP client just assumes it's ready if it accepted the connection.
This save half a round-trip, but it's doesn't allow servers to
say things like "502 - This server only available from 6pm to 8am".

Also, the NNTP IHAVE and POST commands involve more round-trips:

   S:      (listens at TCP port 119)
   C:      (requests connection on TCP port 119)
   S:      201 Foobar NNTP server ready (no posting)
   C:      IHAVE <4106@ucbvax.ARPA>
   S:      335 News to me!  <CRLF.CRLF> to end.
   C:      (sends article)
   C:      .
   S:      235 Article transferred successfully.  Thanks.

But lots of stuff like error handling, status codes, and the
like have been laid out.

I think it would be very useful to include the NNTP NEWNEWS
command in W3. (client sends NEWNEWS <date> and server responds
with a list of articles newer than <date>)

The NNTP commands HEAD, BODY, ARTICLE, etc. take a number or
a message-id as an argument. We could extend the syntax to
include URL's as quoted strings.

Then we'd add a few commands for format negotiation, locking,
and so on. I think it's a nice clean framework to work in.


Dan