Avatar billede herman01753 Nybegynder
17. oktober 2007 - 13:12 Der er 16 kommentarer og
1 løsning

identificere netværkskort baseret på ipadresse i netværket

Hvis jeg har en computer med to netværkskort, og ønsker at finde ud af hvilket netværkskort der er på det netværk hvor jeg kender en specifik IP Addresse på en anden computer, kan det så lade sig gøre i  C# og .NET.

Scenariet kunne være at min computer har ip 1.1.1.1 på netværksadapter A og 2.2.2.2 på netværksadapter B. Jeg kender maskinen 3.3.3.3 som kan pinges fra kommandoprompten, men kan man identificere om det er A eller B der er på samme netværk som 3.3.3.3
Avatar billede Syska Mester
18. oktober 2007 - 23:24 #1
Det scenarie kan slet ikke lade sig gøre ... da ingen af de 2 forskellige net vil kunne se 3.3.3.3 ...

med mindre det rent faktisk er tilladt at lave en /4 netmaske eller noget i den retning ...

// ouT
Avatar billede Syska Mester
18. oktober 2007 - 23:29 #2
System.Net.NetworkInformation ... der burde være en masse idder til at måske få det til at virke .....

Må man spørge i den sammenhæng du skal vide hvad netkort den bruger?

Jeg ville nok starte med at teste om den overhovedet er på det lokale net, ved at lave en ipcalc ... og derefter se om hosten er i live hvis den er på samme net ...

// ouT
Avatar billede herman01753 Nybegynder
19. oktober 2007 - 08:57 #3
hvis min computer med 1.1.1.1 er forbundet til en router der kender 3.3.3.3 kan det sagtens lade sig gøre.
--"Må man spørge i den sammenhæng du skal vide hvad netkort den bruger?"
Jeg forstår ikke helt dit spørgsmål.

Jeg har brug for at jeg fra maskinen 1.1.1.1 kan fortælle maskinen 3.3.3.3 min ipaddresse. Men hvis jeg har flere netkort i maskinen skal jeg kunne fortælle den en IP-addresse som den kan se, deraf problemstillingen.

hvordan fungere det med ipcalc, og hvordan vil du tjekke om den er i live? mener du med ping? hvis ja, så er det ikke acceptabelt da routere kan sættes op til at fjerne ping request.
Avatar billede herman01753 Nybegynder
19. oktober 2007 - 08:59 #4
jeg ved godt jeg skrev at man kan pinge oppe i det oprindelige spørgsmål, men det jeg leder efter er netværksadapter discovery mekanisme eller lignende. Det kan godt være det ikke kan lade sig gøre på andre måder end at lave en socket på maskine 3.3.3.3 min pc så kan forsøge at binde til henholdsvis 1.1.1.1 og 2.2.2.2, men ville helst undgå dette hvis der findes noget indbygget i .NET frameworket.
Avatar billede Syska Mester
19. oktober 2007 - 13:45 #5
lav en tracert ... så kan du jo se hvad for en gateway den tager, og deraf kan du så se hvad for en af dine ip'er den har brugt ... og så ved du jo på samme tid også hvad netkort ....

Hvis du skal fortælle en pc hvad ip du har ... så kan du jo heller ikke hoppe igennem nogen router, da det så er den forkerte ip klienten vil få oplyst ...

Og du skal jo have noget på den anden computer (socket server måske), som lytter efter hvad ip du kommer fra ... med lidt auth ... eller ville det jo være nemt at hacke.

Hvis folk slår echo reply fra i routeren følger de ikke en RFC standard ... men ved godt mange gør det.

"Må man spørge i den sammenhæng hvorfor du skal vide hvad netkort den bruger?" ( det har du så svaret på nu ... )

Til sidst ... hvis jeg har forstået det rigtig ... så vil du fortælle en hvilken som helst ip i verden hvad ip du selv har ? ( da du angiver 2 net som ikke uden en router kan se hinanden ) for mig giver det igen mening ....
Avatar billede herman01753 Nybegynder
19. oktober 2007 - 14:08 #6
Jeg har to applikationer jeg laver. server applikationen er en besked router, som jeg skal lave et abbonentkald til. det vil sige jeg skal fortælle serveren hvilken addresse den skal aflevere beskeder til mig på. Jeg kan ikke garantere at der er DNS i setuppet, og den teknologi jeg er bundet af til at kommunikere med serveren gør at serveren på baggrund af mit request ikke kan se hvilken ip jeg har. Det betyder jeg er nødt til at vide hvilken ip jeg sender beskeden fra,i og med at teknologien også tager hånd om min afsendelse af beskeder og dermed abstraherer netværk væk for mig, da jeg har serverens IP. Jeg vil meget nødigt skulle lave socket lyttere på serveren til at finde ud af den salgs information med, så derfor ønsker jeg heller ikke at introducere en masse hacks for at løse problemet.

Buzzzz ved du om det er muligt at lave en trace route via .NET? Hvori jeg kan få den information omkring  netkort ip'er osv?
Avatar billede Syska Mester
19. oktober 2007 - 14:47 #7
Noget i det lyder forkert ...

Du vil sende din lokale ip til serveren ... men du siger faktisk allerede at serveren ikke må kende din eksterne ip ... så har du da et problem med at få data frem til din klient app .... ?

Ved ikke om du kan lave tracert fra .NET ... men du kan jo grap output fra commandline ....

// ouT
Avatar billede herman01753 Nybegynder
19. oktober 2007 - 15:43 #8
Jeg siger ikke at serveren ikke må kende min ip, jeg siger bare at den underlæggende teknologi jeg benytter til at sende beskeder med ikke giver serveren mulighed for at se f.eks. IP på afsenderen af beskeden. Derfor er semantikken at man sender en besked til serveren om at man gerne vil abbonere på noget information og man vil gerne have informationen levere på en bestem ip. Herefter vil anden informatoin sendt til serveren blive forwardet til min klientapplikation.

Et ganske almindeligt distribueret publish subscribe pattern.
Avatar billede Syska Mester
19. oktober 2007 - 16:03 #9
Jeg tror desvære jeg ikke er helt med hvordan det ville komme til at virke ... så jeg må bakke ud herfra ...

Min viden er selvlært ... så alt det pattern ting siger mig ikke noget ...

[Server Public Ip] --- [Internet] --- [Router Public Ip] --- [Klient Local Ip]

Sådan går jeg ud fra det ser ud ... derfor kan jeg ikke se hvad serveren skulle få ud af at kende den ip på klient pc'en hvis du laver forward på routeren ... jeg synes ligesom der er information jeg mangler for at forstå dit setup ...

og brug ikke underliggende teknologi "ordet" ... bare sig hvad der skal håndtere det ... eller er det selv opfundet protokol?

Jeg ville nok bare lave at klient er connected via socket eller noget til serveren konstant ... og så kan den jo nemt sende info tilbage ...

Kan ske arve_v kommer på ... hans hovede kan måske nemmere gennemskue hvad du er ude på :-)

// ouT
Avatar billede herman01753 Nybegynder
19. oktober 2007 - 19:52 #10
Jamen hvis det kan gøre dig mere tilpas, så kan jeg fortælle at teknologien er MSMQ eller microsoft message queueing. den har forskellige måder at sende information, herunder ved hjælp af IP-addresser (FormatName:Direct=TCP) så klienten sender en besked til en kø på serveren. serverapplikationen lytter på køen, tager beskeden af og tolker beskeden, som indeholder information om hvilken data klienten ønsker, samt hvor klienten har en kø placeret som data skal puttes i. For at kunne bede serveren om at sende beskden til klientens kø skal serveren vide om det er FormatName:DIRECT=TCP:1.1.1.1\Private$\kønavn eller FormatName:DIRECT=TCP:2.2.2.2\Private$\kønavn

Derfor skal jeg, før jeg på klienten sender en besked til serverens kø, vide hvilken ipaddresse serveren skal lægge sine svar beskeder på.
Avatar billede Syska Mester
20. oktober 2007 - 11:19 #11
well, håber en anden kan tage over ...

Kan stadig ikke se hvad problem det vil løse at du kender local ip hvis klienten er bag en router ...
Avatar billede arne_v Ekspert
22. oktober 2007 - 00:07 #12
Vi må antage at client ikke bruger NAT men bare almindelig routing.

Jeg tror at jeg forstår spørgsmålet.

Men jeg tror at det bliver svært at løse problemet som beskrevet.

Fordi den relevante information findes ikke finde på klienten men i routerne
i netværket.

Og at snakke RIP/OSPS/BGP med routerne lyder som en lidt tung måde at gøre det på.

Jeg ville undersøge alternativer:

1)  client sender begge adresser til server, server prøver den første og hvis den fejler så
    bruger den nummer to *og* gemmer nformation til næste gang

2)  klientens kø ligger på serveren og ikke på klienten
Avatar billede herman01753 Nybegynder
22. oktober 2007 - 12:04 #13
Når man bruger MSMQ, så er det almindelig god skik at køerne man læser fra ligger lokalt. Da jeg ønsker et "Clean cut", hvor gode designprincipper følges, kan jeg desværre ikke løse problemet med metode nummer 2. Til at styre hvor serveren skal sende beskederne hen, har jeg produceret et xml skema, og noget xml som beskriver "kontrakten" for hvor data kommer fr og hvor de skal hen. Da jeg har et krav om at andre skal kunne integrere igennem formatet, er det desvære heller ikke rigtigt acceptabelt at man kan tage en mængde køer/destinationer som så skal prøves ved hjælp af trial and error. Jeg overvejer om den rigtige løsning består i at benytte den førstkomne IP-addresse, og så ellers eksponere IP-konfiguration igennem en konfigurationsfil så man kan overstyre hvis det forkerte valg er truffet af applikationen. Man kan jo dokumentere sig ud af meget, hvis man beskriver at i multi-netkort-setup skal man huske at tjekke op på konfigurationen. Hvis ikke der er andre forslag tror jeg det bliver løsningen.
Avatar billede Syska Mester
22. oktober 2007 - 14:22 #14
Det ville bestemt også være den løsning jeg ville vælge, da jeg tvivler på at mange computere i dag har flere ip'er sat op ...

Grunde kan være der, men stadig meget tvivlsomme, og nok kun i udviklingsmiljøer jeg kunne se det smarte i det at have flere ip'er på forskellige ip net.

// ouT
Avatar billede herman01753 Nybegynder
22. oktober 2007 - 14:30 #15
Til din information tager jeg ikke højde for den slags for sjov, det er velkendt at koden vli blive afviklet på maskiner med flere netkort,
Avatar billede Syska Mester
22. oktober 2007 - 16:10 #16
hvad for noget sjov? Er udviklingsmiljøer sjove eller ?

Miljøer ting skal bruges kommer selvfølgelig an på hvor man er henne, er hvad ens app skal kunne ... dit miljø er nok anderledens kan jeg forstå på dig.

// ouT
Avatar billede herman01753 Nybegynder
28. januar 2008 - 10:34 #17
lukker igen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester