Pergunta

Em primeiro lugar, eu sou relativamente novo para programação de rede. Quero tráfego interceptar e atraso HTTP antes que ele chegue à aplicação de servidor. Eu já mergulhou em libnetfilter_queue que me dá todas as informações que precisa para retardar adequadamente, mas a um nível demasiado baixo. I pode atrasar o tráfego lá, mas se eu não aceitar o IP datagramas quase imediatamente (para enviá-los até a pilha quando eu quero atrasá-los), eles vão ficar reenviado (quando nenhum ACK chega), o que não é o que eu quero.

Eu não quero ou necessidade de ter que lidar com TCP, apenas as cargas que ele oferece. Então, minha pergunta é como faço o tráfego de intercepção em uma porta específica antes que ele chegue ao seu destino, mas depois TCP reconheceu e verificou-lo?

Graças

Edit: Esperemos que é óbvio a partir do tag e libnetfilter_queue - isto é para Linux

Foi útil?

Solução

sequestrar a conexões através de um proxy HTTP. Google-se uma boa maneira de fazer isso se você não pode apenas definir HTTP_PROXY no cliente, ou configurar o filtro a funcionar com o número IP ea porta do servidor atual, movendo o servidor real para outro IP.

Assim, as conexões TCP reais são entre o cliente e você, em seguida, de você para o servidor. Então você não tem que lidar com ACKs, porque TCP sempre vê missão cumprida.

edit:. Eu vejo os comentários sobre o original já veio com essa ideia usando iptables para redirecionar o tráfego através de seu processo de proxy transparente na mesma máquina

Outras dicas

Bem, eu fiz o que eu sugeri no meu comentário, e ele funciona, mesmo se ele se sentia uma forma prolixa de fazê-lo.

O problema (ou a) é que o servidor web agora, compreensivelmente, acha que cada solicitação vem de localhost. Realmente eu gostaria que esta demora para ser transparente para o cliente e servidor (exceto no tempo, é claro!). Existe algo que eu possa fazer sobre isso?

Se não, quais são as implicações? Cada sessão HTTP acontece através de uma porta diferente - é que o suficiente para que eles sejam separados completamente como deveriam ser? Presumivelmente para considerando que funciona quando atrás de um NAT onde o endereço para muitas sessões é o mesmo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top