HTTP2: base it on NNTP?

Dan Connolly (connolly@pixel.convex.com)
Mon, 07 Dec 92 22:22:26 CST


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