문제

첫째, 저는 네트워크 프로그래밍을 처음 접했습니다. 서버 응용 프로그램에 도달하기 전에 HTTP 트래픽을 가로 채고 지연시키고 싶습니다. 나는 libnetfilter_queue를 탐구하여 적절하게 지연시키는 데 필요한 모든 정보를 제공하지만 너무 낮은 A 레벨로 제공했습니다. 트래픽을 지연시킬 수는 있지만 IP 데이터 그램을 거의 즉시 수락하지 않으면 (따라서 지연되고 싶을 때 스택을 보내면), 내가 원하는 것이 아닌 ack가 도착할 때 분개됩니다.

나는 TCP를 원하거나 처리해야 할 필요가 없으며, 탑재량 만 제공합니다. 제 질문은 특정 포트가 목적지에 도달하기 전에 트래픽을 가로 채는 방법입니다. 그러나 TCP가 인정하고 확인한 후?

감사

편집 : 태그와 libnetfilter_queue에서 분명합니다 - 이것은 Linux 용입니다.

도움이 되었습니까?

해결책

HTTP 프록시를 통해 연결을 납치하십시오. 클라이언트에서 http_proxy를 설정할 수 없거나 현재 서버의 IP 및 포트 번호로 실행중인 필터를 설정하여 실제 서버를 다른 IP로 이동할 수없는 경우 Google을 Google에 올리십시오.

따라서 실제 TCP 연결은 클라이언트와 귀하에서 서버로 이루어집니다. TCP는 항상 미션이 성취되는 것을보고 있기 때문에 ACK를 다룰 필요가 없습니다.

편집 : 원본에 대한 의견이 이미 IPTables를 사용하여 동일한 기계의 투명 프록시 프로세스를 통해 트래픽을 리디렉션 하여이 아이디어를 제시했습니다.

다른 팁

글쎄, 나는 내 의견에서 내가 제안한 일을 해냈고, 그것이 오랫동안 그것을하는 방법을 느끼더라도 작동합니다.

(또는 a) 문제는 이제 웹 서버가 모든 요청이 LocalHost에서 나온다고 생각한다는 것입니다. 정말로이 지연이 클라이언트와 서버 모두에 투명 해지기를 바랍니다 (물론 시간 제외). 이것에 대해 할 수있는 일이 있습니까?

그렇지 않다면, 그 의미는 무엇입니까? 각 HTTP 세션은 다른 포트를 통해 발생합니다. 그들이해야 할만큼 완전히 분리되기에 충분합니까? 아마도 많은 세션의 주소가 동일 인 Nat 뒤에있을 때 작동한다는 것을 고려할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top