Akkor sejtésem szerint az aktív portokon bejövő forgalmat kellene figyelnem a kliensen (mindet, hiszen bármelyik lehet) és kiszűrnöm a 80-ról érkező válaszokat (a többi érdektelen) ?
tehát minden HTTP (esetünkben=internet) kérés/válasz valamilyen porton keresztül megy ki/jön be. A kliens oldalon is. Ennek a portnak a forgalmát szeretném elkapni és mérni. Nincs "egy bizonyos" port... mindíg más és más, nincs jelentősége... ezért lenne jó megnézni a netstat kimenetét, tanulságos:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 171.19.192.171:34916 171.19.192.183:80 ESTABLISHED
tehát az én 34916-os portom kapcsolódott a szerver 80-as portjához.
Akkor itt képzavar van, nyilván nálam.
Az volt az elgondolásom, hogy az internet kapcsolat TCP alapú, tehát minden HTTP (esetünkben=internet) kérés/válasz valamilyen porton keresztül megy ki/jön be. A kliens oldalon is. Ennek a portnak a forgalmát szeretném elkapni és mérni.
Rossz az elképzelés, vagy hibásan fogalmazok, vagy félreértek vmit ?
1) A netstat kimenetével nem sokat érek, mert ugyan ott van a fogadott-küldött byte-ok száma, de az nem, hogy az milyen adatforgalomból adódott.
Milyen portot? Épp ezt mondom, hogy a lokális gépen nincs webserver, azon nincs mit figyelni a 80-as porton... Két megoldást vélek látni:
1) programból futtatni a "netstat" parancsot, és annak a kimenetét figyelni
2) valamilyen sniffer-szerű programot készíteni/szerezni, ebben segitene a WinPcap http://winpcap.polito.it/
Szóval átbogarászva a linkeket sikerült elérni, hogy tetszőleges porttal tudok kommunikálni, és mérni a forgalmat, beleértem a 80-ast is !
Akkor, ha
- én írom meg a servert (adok neki egy portot és IP címet, aztán listen() és ha jön kérés, valamit csinál, pl megméri a beérkezett byte-ok számát );
- valamint én írom meg a klienst (connectélok és küldöm az üzeneteket).
Ez a gond. Lehetséges-e tetszőleges portot figyelni és mérni valahogy a forgalmat, úgy, hogy mit sem tudok a beérkező kérésekről-kimenő válaszokról, csak a portot figyelem ? Ez ugyanis nem megy.
Vagy nem is a socket-ek környékén kellene a megoldást kereni ?
"Valószinüleg úgy kell csinálni, hogy minden csomagot egy ponton el kell kapni, a csomagot elemezni, feldolgozni, majd az eredeti útjára visszaterelni" Ennél valami egyszerűbb megoldásban reménykedem. Igazából nem érdekel a csomag tartalma, csak az, hogy van-e.
Tulajdonképpen oda szerettem volna kilyukadni, hogy a Winsocket-tel meg lehet-e oldani ezt a feladatot, és ha igen, hogyan, mert én nem találtam rá.
Igaz, a platformot nem írtam: kizárólag Windows2000 és WinXP alatt kellene tudni ezt tenni.
Az internet kapcsolat jellegét szándékosan nem írtam, mert lehetőleg univerzális megoldás kellene (a kapcsolat lehet, hogy modemes, lehet, hogy LAN-os, azon belül is nem mindegyik kliens megy ki proxyn).
Induljunk el, abból, amit írtál: a HTTP forgalmat hogyan lehet naplózni ?
(Saját programocska kellene több okból is, vannak nagyon cégspecifikus dolgok, amihez illeszkednie kellene, valamint semmi mást nem kellene csinálnia, csak ezt)
Valószínűleg van ilyen program készen, csak tudni kellene, hogy mit is szeretnél... (az is érdekes lehet, hogy milyen OS van a gépeden, milyen internetkapcsolatod van).
Például ha a HTTP-forgalmat akarod naplózni, azt egy proxy is megteszi, pl Junkbuster, aki mellékesen szűrhet is...
(Speciel a lokális gép 80-as portjára konnektálni se nem szükséges se nem lehetséges, hacsak nem üzemeltetsz te magad is Web-servert)
Jó reggelt !
Egy kicsiny programot kellene írnom, amely telepítés után az adott gépen figyeli az internet használatot. Nem szükséges, hogy hol járt, csak az, hogy mennyi ideig volt kapcsolat, vagy esetleg a letöltések mennyisége.
Nem tudom, merre induljak, ehhez kellenének ötletek. Arra gondoltam, hogy a 80-as portot kellene figyelni. Ha ez jó gondolat, hogyan lehet megvalósítani (csak támpont kéne)?
De az is lehet, hogy egészen más irányban kell elindulni.
Minden ötletet köszönettel fogadok.
Üdv: SindbaD