Conexão TCP com vários proxies entre

0

O cliente envia um cabeçalho Proxy-Connection: Keep-Alive , o proxy inteligente intermediário vê esse cabeçalho e o substitui por Connection: Keep-Alive e envia para o servidor web. Tudo bem e bem.

E se houver dois proxies inteligentes no meio. Quando o primeiro encaminha Connection: Keep-Alive para o segundo, o segundo não sabe o que fazer com este cabeçalho. Ele sabe o que fazer com Proxy-Connection , mas não Connection: Keep-Alive . Ele apenas reenvia o cabeçalho para o servidor web? Isso não causaria problemas na conexão TCP atual?

    
por sanjihan 12.05.2016 / 23:13

1 resposta

1

Client sends an Proxy-Connection: Keep-Alive header, the intermediate smart proxy sees this header and replaces it with Connection: Keep-Alive and sends to the web-server.

Não é assim que funciona.

Proxy-Connection e Connection são cabeçalhos de salto a salto e não cabeçalhos de ponta a ponta. Isso significa que o cliente decide usar uma conexão persistente com o proxy e o proxy decide que deseja ter uma conexão persistente com o host upstream (servidor ou proxy). Não é que o proxy queira ter uma conexão persistente apenas porque o cliente quer, mas essas são decisões independentes. Na verdade, um cliente pode usar a mesma conexão TCP com o proxy para acessar vários hosts, enquanto o proxy precisa fazer conexões TCP diferentes, porque precisa acessar hosts diferentes.

Além disso, Proxy-Connection está errado de qualquer forma e deve ser Connection apenas, não importa se o próximo salto é um proxy ou o servidor de destino. Veja também link .

Wouldn't that cause problems in current TCP connection?

Estes cabeçalhos são apenas um desejo e keep-alive está implícito no HTTP / 1.1, ou seja, o cabeçalho não é necessário neste caso quando o cliente quer manter o keep-alive. E como isso é um desejo, tanto o cliente quanto o servidor podem fechar a conexão TCP subjacente a qualquer momento entre as solicitações. Pode haver situações em que o servidor fecha a conexão exatamente ao mesmo tempo em que o cliente está enviando uma nova solicitação e o cliente tem que lidar com essa situação, na maioria dos casos, refazendo a solicitação em uma nova conexão TCP.

    
por 13.05.2016 / 07:33