Subject: Re:Re: Proxy and HTTP protocol versions

From: "Sudha" <[email-masked]>
Date: Sat, 7 Jun 2003 22:29:01 -0400 (EDT)

Firstoff, thanks for all the response. I've provided my answers
with some more questions inline (enclose between >>>>)

-Thanks/Sub

There are a few questions you need to answer before we can
help you with the design and minimal feature set:

	1. Will your proxy forward all requests to one configured
	   server? Or will it need to look at requested URLs and
	   forward requests to corresponding servers?

Yes. My proxy server would always forward it to one configured server. I don't have
to lookup the request header. 

 2. Is performance important? Do you want your proxy to cache
	   responses?

No. I don't have to provide any caching feature.

 3. Will you proxy do anything other than forwarding messages?
	   That is, why do you need a proxy?

The reason I need this proxy is because, I want a way to forward all requests
to a centralized server. And I want to write one on my own. 

The end server that I would be sending the request to is HTTP 1.1 compliant. But,
I doubt if the server properly implements 'Keep-alive' etc. 

My question is, if there din't exist a proxy between the browser and the server,
won't the browser and the server handle all these differences ? In which case,
how should a proxy now make a difference ? Can't I just forward the request
or just tunnel it as if it were HTTPS, and be assured that it works?

Your answers will determine how much HTTP corners you can cut. If it
turns out that your proxy needs to support HTTP/1.1, then you would
have to handle versions and *Connection headers correctly, among other
things. In that case, I would not recommend just removing
Proxy-Connection; a lot more work needs to be done to survive in a
general HTTP environment (RFC 2616 defines most of what needs to be
implemented in that case).

Alex.

---

From: Alex Rousskov <[email-masked]>
Date: Sun, 8 Jun 2003 09:13:42 -0600 (MDT)

On Sat, 7 Jun 2003, Sudha wrote:

> My proxy server would always forward it to one configured server. I
> don't have to lookup the request header. I don't have to provide any
> caching feature.

Use a TCP tunnel then. You do not need an HTTP proxy. Moreover, you
may not need a TCP tunnel if your clients can connect to the origin
server directly instead.

> The reason I need this proxy is because, I want a way to forward all
> requests to a centralized server. And I want to write one on my own.

A TCP tunnel should work just fine, then. You can write your own or
use an existing one. For every TCP connection it accepts, the tunnel
should establish a TCP connection to the origin server and shovel
octets until either side terminates the connection. Keep in mind that
some networking gear (like an L7 switch, for example) can do that for
you.

Again, if the "centralized server" address can be public, then you do
not need a tunnel at all.

> The end server that I would be sending the request to is HTTP 1.1
> compliant. But, I doubt if the server properly implements
> 'Keep-alive' etc.

You contradict yourself. An HTTP/1.1 compliant server MUST properly
support persistent connections, among other things. I doubt there are
HTTP/1.1 compliant servers out there (because there is no test for
origin server compliance yet), but something like Apache should work
well enough.

> My question is, if there din't exist a proxy between the browser and
> the server, won't the browser and the server handle all these
> differences ?

Yes, they would.

> In which case, how should a proxy now make a difference?

Nobody said an HTTP proxy would make a difference in your case! The
reason to have a proxy is to add some new functionality (e.g., request
aggregation or caching or virus checking). In your case, the only
functionality that an origin server cannot support is (I am guessing)
a public IP address. If the origin server address is public, you do
not need a tunnel.

> Can't I just forward the request or just tunnel it as if it were
> HTTPS, and be assured that it works?

You can tunnel as if it were TCP. That is why I started with asking
you these questions instead of answering yours. :-)

HTH,

Alex.

-- 
                            | HTTP performance - Web Polygraph benchmark
www.measurement-factory.com | HTTP compliance+ - Co-Advisor test suite
                            | all of the above - PolyBox appliance