protokoły internetowe

0

Witam :-)

Zastanawiałem się ostatnio czy można by przesyłać jakieś dane innym protokołem niż IP, tj. jakimś niższym w hierarchi :-) czy np. da się wysłać coś na konkrety adres MAC? Proszę o wyrozumiałosć, nigdy się nie zagłębiałem w szczegóły sieci, chciałbym tylko wiedzieć czy się da i ew. co by było potrzebne :-)

ps. dałem to do forum C++, bo mam nadzieję, że dało by się nawet to w C++ zaimplementować :-)

0

Moze cie to zdziwi ale wszystko jest przesyłane bezpośrednio na konkretny adres mac:P. Ip nie jest protokołem a jedynie adresem komputera w sieci stworzonym tylko po to aby człowiekowi było łatwiej go odnaleść tak naprawde wszystkie adresy ip są tłumaczone na MAC adresy i to MAC adresy wskazują na urządzenia w tablicach routingu.

0

wiem :] przed napisaniem tego zdawałem sobie z tego sprawę:) nie chodzi mi raczej o to czym jest MAC, ale o to jak sie do niego dobrać :]

0

Nie za bardzo rozumiem co masz na mysli mowiac "dobrac" jesli chodzi o jego zmiane to nie ma problemu wiekrzosc sterownikow kart siciowych daje taka mozliwosc z poziomu windowsa. Moesz nieco sprecyzowac o co chodzi? W piatek mam egzamin z sieci :( wiec jestem akurat na bieŻąco :)

0

Wiesz chodzi o to aby coś wysłać na konkretny adres MAC :) czyli żebym różnymi środkami mógł zwieńczyc to funkcją w c++ SendToMAC() :) chodzi mi po po prostu jak można przesyłać jakieś dane na MAC:] ew. innym protokołem, ale żeby był z niższych warstw w modeli OSI niż ta, w której jest IP :)

0

nie wiem, jak sobie to wyobrazasz. nie da sie tego zrobic

0

Nie no jasne nie ma najmniejszego problemu no moze poza recznym skladaniem poszczegulnych pakietow :) Chodzi o to ze tak naprawde cale przeslane dane sa interpretowane dopiero przez system operacyjny ( o ile jakis zbyt inteligentny router podrodze ich nie przefiltruje) ale jesli jest to siec oparta na koncentratorach to mozesz przez nia przepchnac co chcesz, mozesz nawet zapomniec o modelu OSI :P Problem jest tylko taki ze bardziej zlozone sieci działają w oparciu o juz zdefiniowane protokoły czyli np TCP, UDP i tam trzeba przestrzegać pewnych standardów. A sama karta sieciowa pośle w odchłań wszystko co jej rozkażesz tylko mowie ze jak nie będzie się trzymać standardów to na pierwszym leprzym routerze sie to zatrzyma.

0

Dobrze rozumujesz grangu :) właśnie chodzi mi o to żeby karta sieciowa to wysłała luzem:D właśnie chodziło mi o przełamanie modelu OSI :) no dobra... przynajmniej juz wiem, że jakoś by się to dało wykonać i wcale mnie nie odstrasza to, że pewnie gdzies padnie po drodze, bo mogę sobie zrobic testy na sieciach z dość prymitywnymi urządzeniami :) czyli w takim razie o ile się nie mylę... muszę poszperać w sterownikach od kart sieciowych windowsa zeby móc to jakoś zrobić? :)

0

No mozesz sprobowac zmusic karte sieciowa do wyslania konkretnych 3 bajtow i tez bedzie ok. Ale jak bedzie ruter po drodze to nie zrozumie pakietu (bo to zaden ze znanych protokolow) i 3 bajty odpadna. Ale na sieci wprost komputer-komputer powinno sie udac. Tyle, ze z drugiej strony musialbys chyba zapuscic sniffera, zeby cokolwiek zobaczyc.

0

sniffer? :) wybacz, trochę nie zrozumialem :) chodzi Ci o coś co sprawdza wszystko co jest wysyłane przez kartę sieciową, żeby móc wyłapać konkretnie to co wysłaliśmy do niego? :)

0
grangu napisał(a)

Ip nie jest protokołem a jedynie adresem komputera w sieci stworzonym tylko po to aby człowiekowi było łatwiej go odnaleść

Eeeee ależ IP to jak najbardziej protokół, a nie żaden adres ;) No i chyba pomyliłeś formułkę z opisem DNSów ;)

Pakiety i tak przekazywane są do konkretnego IP, nie do MACa, bo MACem poza siecią lokalną za wiele nie zdziałasz. Dlatego routery tu niewiele mają do rzeczy, bo sam router MACa nie przekazuje (jeśli nie robi za switch /hub), bo działa na wyższej warstwie.

Powinieneś zainteresować się biblioteką PCAP i źródłami takich projektów jak SendIP, nmap itd.

Weź także pod uwagę fakt, że z samym MACem poza sieć lokalną się nie wybijesz.

0

przez pewien czas myślałem o SS7, ale w sumie nie o to chodzi :) Dzięki za info o tych bibliotekach i projektach :) ale zastanawiałem się też o protokole PPP... jego chyba już prędzej użyć, skoro MAC padnie poza lokalną siecia? :)

0

Co Ty właściwie chcesz zrobić ? :> Z Twojego opisu wynika, że chcesz wysłać dane oparte na swoim protokole do konkretnej karty sieciowej. Jeżeli tak, to żadne PPP, ani SS7 tu nie pomoże. Routery przekazują tylko i wyłącznie te protokoły, które się im każe przekazać, bo innych przekazać nie potrafią. Owszem możesz nawet nauczyć swój domowy router co ma robić z Twoimi danymi, ale zważ, że w sieci są jeszcze inne węzły, które z Twoją metodą nie będą zaznajomione.

Jedyne co możesz w tej sytuacji robić to wysłać dowolne dane do karty sieciowej, z którą jesteś "fizycznie" połączony, czyli do takiej, która jest z Tobą podłączona kablem albo która podłączona jest do tego samego koncentratora sieciowego.

0

@Fifkaz: tak, chodzi mi o sniffer - cos co pokazuje co karta wysyla/dostaje. Chodzi o to, ze nawet jak wyslesz te pare bajtow do innej karty podlaczonej do Twojej tak jak opisal CyberKid to musisz na drugim kompie uruchomic cos, co pozwoli Ci stwierdzic, ze owe pare bajtow dotarlo. A karta/sterownik/system gotowe te pare bajtow olac, bo nie znaja tego protokolu.

0
Fifkaz napisał(a)

sniffer? :) wybacz, trochę nie zrozumialem :) chodzi Ci o coś co sprawdza wszystko co jest wysyłane przez kartę sieciową, żeby móc wyłapać konkretnie to co wysłaliśmy do niego? :)

Prawie dokladnie tak z tym ze taki snifferek wylapie wszystko co sie pojawilo na wejsciu nie koniecznie do niego, a skoro taki sniffer to potrafi to z cala pewnoscia mozna napisac aplikacje ktora to zrobi i w dodatku zinterpretuje i odpowiednio zadziala w zaleznosci od tego co odbierze :) Wydaje mi sie jednak ze enkapsulacja i deankapsulacja zachodzi na poziomie windowsa a nie sterownikow karty sieciowej.

CyberKid napisał(a)

Eeeee ależ IP to jak najbardziej protokół, a nie żaden adres ;) No i chyba pomyliłeś formułkę z opisem DNSów ;)

A kolega to chyba pomylil IP z IPX od Novela ktory to zeczywiscie jest protokolem warstwy 3 :P

A co do fomulki to polecam ksiazke "Akademia sieci Cisco" strona 40. Tam jest ladnie opisane czym jest MAC oczywiscie jak nie ma w warstwie 3 adresu Ip odiorcy to router sie zagubi ale w sieciach opartych o koncetratory czy tez takich gdzie jest topologia ringu czy szyny adres ip jest calkowicie zbedny.

0
grangu napisał(a)

W piatek mam egzamin z sieci :( wiec jestem akurat na bieŻąco :)

grangu, suche teoretyczne podejście ;) Oczywiśćie bez urazy :)

IP jak najbardziej jest protokołem i wcale go nie pomyliłem z IPX :) Zresztą cóż ów tajemniczy skrót oznacza jak nie Internet Protocol :)
http://pl.wikipedia.org/wiki/IP

Ty natomiast piszesz o adresie IP http://pl.wikipedia.org/wiki/Adres_IP

grangu napisał(a)

Prawie dokladnie tak z tym ze taki snifferek wylapie wszystko co sie pojawilo na wejsciu nie koniecznie do niego, a skoro taki sniffer to potrafi to z cala pewnoscia mozna napisac aplikacje ktora to zrobi i w dodatku zinterpretuje i odpowiednio zadziala w zaleznosci od tego co odbierze :) Wydaje mi sie jednak ze enkapsulacja i deankapsulacja zachodzi na poziomie windowsa a nie sterownikow karty sieciowej.

(De)enkapsulacja jest na poziomie winsocka, dlatego dobrym posunięciem jest użycie PCAP, a w tym wypadku WinPCAP. Zrobienie takiego "sniffera" wcale nie jest złe. Aby dowiedzieć się czy nasz pakiet dotarł trzeba przejrzeć wszystkie z nich, albo ... napisać engine sieciowy od nowa, ale temu mało kto podoła.

grangu napisał(a)

polecam ksiazke "Akademia sieci Cisco" strona 40. Tam jest ladnie opisane czym jest MAC oczywiscie jak nie ma w warstwie 3 adresu Ip odiorcy to router sie zagubi ale w sieciach opartych o koncetratory czy tez takich gdzie jest topologia ringu czy szyny adres ip jest calkowicie zbedny.

Racja, ale z tego co ja zrozumiałem, to autorowi chodzi o routowanie pakietów, albo przynajmniej rozważa on taką możliwość. W tym wypadku oczywiste jest, że IP musi być, bo nie wiadomo by było czy pakiet ma być przesłany do routera, czy posłany w świat :)

0
CyberKid napisał(a)

Racja, ale z tego co ja zrozumiałem, to autorowi chodzi o routowanie pakietów, albo przynajmniej rozważa on taką możliwość. W tym wypadku oczywiste jest, że IP musi być, bo nie wiadomo by było czy pakiet ma być przesłany do routera, czy posłany w świat :)

Zadne routowanie co do tego nie ma watpliwosci ze jesli wystapi po drodze router operujacy na warstwie 3 w ktorej nie ma MACa a jest adres IP taka ramka nieposiadajaca adresu IP odbircy po prostu zostanie zignorowana. Tutaj chodzi o zwyczajny most ktory nawet nie patrzy na warstwe sieci a jedynie odczytuje adres MAc z warstwy lacza i na jego podstawie przekazuje pakiet albo ignoruje. A prypomne tylko ze swiche zbudowane sa z przelaczalnych mostow wiec nie ma potrzeby korzystania ze zbednego zaprzatania sobie glowy adresami IP jesli w sieci nie ma routerow. Problem pojawia sie w sieciach bardziej zlozonych jak np. Internet gdzie jest duzo hostow i jakby kazdy router mial w tablicy wszystkie adresy MAC komputerow do niej podlaczonych to pomijajac problem pamieci routera, wyszukanie w samej tablicy odpowiedniego odbiorcy bylby nielada wzwaniem. Dlatego tez wprowadzono chierarchiczny model adresowania IP. Siec podsiec Host. Router nie wysyla danych do hosta tylko do podsieci dopiero w ramach podsieci sa one rozsylane do konkretnych komputerow po adresie MAC a nie IP. Oczywiście są przełączniki warstwy 3 ktore w "dupie" mają MAC i przełaczają po adresie IP jednak dosyc zadko jeszcze stosowane szczegulnie w malych sieciach. Wracajac jednak do temtu, jezeli bedzie swich lub inny most mozna zrezygnowac z wartst od 3-7 ale 2 musi wystapic bo tam jest adres MAC, jezeli bedzie koncentrator lub polaczenie komputer-komputer nie ma problemu wszystko trafi do kazdego nie wazne jakie smieci i dopiero odbiorca decyduje czy przetrawic co dostal czy olac. Jednak jak bedzie router jest problem bo tutaj musi juz byc adres IP bez niego nie da rady.

A co do wikipedi to wybacz ale nie jest to zrudlo wiedzy ktoremu zwyklem ufac :P

A "engine" sieciowy przeciez zostal juz napisany i to nie jeden, wiec dlaczego ktos jeszcze mialby tego nie zrobic? Nie mowimy tu jakims skomplikowanym nie wiadomo co a o przesylaniu kilku bitow z jednego komputera do drugiego.

0

no dobra, ściągnąłem sobie programik WinPCAP 4.0 :) i wyczytałem, że ogółem jest to używane do robienia snifferów :) Routery pewnie nie przetrawią czegoś takiego, ale do tego też pewnie dojdę, że będę musiał się w tym babrać :D a może los się uśmiechnie i będzie coś co i te routery pokona :) w każdym razie nie wiem za bardzo jak można sobie zrobić własnnego sniffera, potrzebne są chyba jakieś biblioteki, nagłowki etc, tak?:) Byłbym wdzieczny za linki, bo nie mogę znaleŹć tych bibliotek :/ możliwe, że coś ominąłem, w końcu też jestem tylko człowiekiem :) dotarłem do tego http://www.stearns.org/doc/pcap-apps.html , ale to chyba tylko aplikacje bazujące na pcap :) ale też sie na pewno przyda :)

0

Ahhh no przecież wiem jak działa routing ;) Routuje się po IP, bo MAC to adres fizyczny karty, a nie adres interfejsu sieciowego przez co dochodziłoby do wielu nieporozumień. W teorii MACa zmienić nie można czego nie można powiedzieć o IP :)

grangu napisał(a)

A "engine" sieciowy przeciez zostal juz napisany i to nie jeden, wiec dlaczego ktos jeszcze mialby tego nie zrobic? Nie mowimy tu jakims skomplikowanym nie wiadomo co a o przesylaniu kilku bitow z jednego komputera do drugiego.

Fakt, niejeden został napisany, ale nie wiem czy zdajesz sobie sprawę z tego co tak na prawdę znaczy napisanie interfejsu sieciowego :) To nie jest prosta robota i szkoda by wyważać otwarte drzwi. Oczywiście zakładamy, że ów interfejs prócz naszego protokołu będzie musiał obsłużyć wszystkie inne. W tym wypadku zrobienie takiego "sniffera" wcale nie jest złym rozwiązaniem, bo jak sam napisałeś rozmawiamy o przesyłaniu kilku bitów ;)

grangu napisał(a)

A co do wikipedi to wybacz ale nie jest to zrudlo wiedzy ktoremu zwyklem ufac :P

Tu się zgodzę, bo Wiki to doskonałe źródło informacji. Zresztą nie ma nic lepszego niż baza wiedzy, do której każdy może wnieść coś od siebie :)
Na dodatek o IP możesz poczytać w RFC http://www.faqs.org/rfcs/rfc791.html

[updated]

Fifkaz napisał(a)

no dobra, ściągnąłem sobie programik WinPCAP 4.0 :)
...
potrzebne są chyba jakieś biblioteki, nagłowki etc, tak?:)

PCAP to właśnie te biblioteki, a nie programik :)

0
Fifkaz napisał(a)

Routery pewnie nie przetrawią czegoś takiego, ale do tego też pewnie dojdę, że będę musiał się w tym babrać :D a może los się uśmiechnie i będzie coś co i te routery pokona :)

Zapomnij - każde urządzenie, które nie zna twojego protokołu (a żadne przecież znać nie będzie), odrzuci pakiet jako uszkodzony. W Windows musiałbyś napisać własny sterownik NDIS (na tym forum już kilku próbowało he he) i podmienić oryginalny, wbudowany w system. Przykładem takiego rozwiązania są (płatne) biblioteki NTKernel Winpk Filter

grangu napisał(a)

Wydaje mi sie jednak ze enkapsulacja i deankapsulacja zachodzi na poziomie windowsa a nie sterownikow karty sieciowej.

Enkapsulacja może zachodzić: sprzętowo w procesorze karty sieciowej, w sterownikach NDIS (lub ODI) pracujących w trybie jądra systemu, w sterownikach karty sieciowej. Windows korzysta z NDIS, Macintosh z ODI, stare wersje Windows (9x) korzystały ze sterowników karty sieciowej, a na przykład przemysłowe systemy (zbudowane często w oparciu o PC104) często korzystają z enkapsulacji sprzętowej.

Przyszło Ci do głowy, że pewne rozwiązania (jak stos TCP/IP) przyjęły się nie dlatego, że są lepsze, ale dlatego, że zostały globalnie zaakceptowane? W tym kontekście pisanie własnego protokołu jest jak pisanie tylko dla siebie komunikatora z obsługą wyłącznie własnej sieci.

Dopisane: Jak nie zniechęciłem wystarczająco, pozostaje siąść do MSDN i zacząć szukać. Polecam rozpocząć od hasła: Registering as an NDIS Protocol Driver.

0

no właśnie szukam tych bibliotek i nie mogę znaleŹć :/ No pewnie nie zrozumieją, ale we wlasnej większej sieci można to zastosować :) a dziś akurat próbowalem przepatrzeć NDIS :) nie chce pisać własnego engina sieciowego, raczej mało skomplikowany protokół, którego sniffer odbierze :) a PCAP daje narzędzia tylko do siffowania, czy też do wysyłania etc?

[edit]
Wielkie dzięki Szczawik za linka :)

0

Podstawowe pytanie: po co? Czemu nie możesz skorzystać ze starego dobrego TCP/IP albo UDP?

0

możliwe, że jest to sama sztuka dla sztuki, ale chciałbym poznać sieć i jej możliwości od środka :) a przy okazji spróbować zrobić program do komunikacji w zamkniętej sieci, którry opierał by się na tym moim protokole :)

0

To trochę, jakbyś zaplanował zbudować fabrykę samochodów, by nauczyć się jeździć rowerem. Od takich rzeczy są książki i dokumentacje. No, ale jak tam sobie chcesz..

0
CyberKid napisał(a)

Tu się zgodzę, bo Wiki to doskonałe źródło informacji. Zresztą nie ma nic lepszego niż baza wiedzy, do której każdy może wnieść coś od siebie :)
Na dodatek o IP możesz poczytać w RFC http://www.faqs.org/rfcs/rfc791.html

Ok zwracam honor moj blad. Ale po dacie wnosze ze ten protokul istanial zanim sie urodzilem i teraz zostal zastapiony przez TCP i UDP

Szczawik napisał(a)

Podstawowe pytanie: po co? Czemu nie możesz skorzystać ze starego dobrego TCP/IP albo UDP?

Szczawik nie wnikaj widzisz ze chlopak ma zapal moze zrobi cos z czego bedziemy wszystcy kiedys korzystac jakis nowy standard :) Nie wolno tlumic takich inicjatyw :)

0
grangu napisał(a)

Ale po dacie wnosze ze ten protokul istanial zanim sie urodzilem i teraz zostal zastapiony przez TCP i UDP

TCP i UDP to z kolei protokoły dziedziczące po IP ;)

0
Szczawik napisał(a)

Podstawowe pytanie: po co? Czemu nie możesz skorzystać ze starego dobrego TCP/IP albo UDP?

Po co? A po co Ci, którzy zaczynają programować robią programy typu Hello World? :) po to aby się nauczyć, a najlepszą nauką jest praktyka, bo nawet jeśli będę znał wszystkei dokumentacje na pamięć i przeczytam mnóstwo książęk na ten temat to przecież jeśli nie będę potrafił tego wykorzystać w praktyce to na nic mi się to zda :) chociaż się czegoś nauczę jeśli to co stworze nie będzie ogółem używane. W sumie nie wierzę, że Ty nigdy nie siedziesz przy kompilatorze i nie masz chęci zrobić czegos nowego innowacyjnego. :) Mogę się mylić oczywiście :)

Wiadomo, zę TCP/UDP odpadają, bo są oparte na IP :) a teraz byłbym wdzięczny za linki o PCAP :) sam oczywiście też będę szukał :)

[edit]
dobrze trafiłem? :) http://www.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/packet-capture/winpcap/devel.htm czy macie jeszcze coś? :)

0

Jak rozumiem biblioteke juz masz :) No to jak znasz angielski to powodzenia

http://www.tcpdump.org/pcap.htm

0

Siedzę przy kompilatorze nieustannie, bo to czego się uczę ma wykorzystanie w praktyce.

Pisanie sterownika protokołu sieciowego, by poznać działanie protokołów sieciowych, jest bez sensu. Nawet, jak osiągniesz jakiś rezultat (załóżmy, że stworzyłeś w pełni działający, bezproblemowo zaimplementowany protokół).. to co wtedy? Nic, pliki nadają się do kosza (lub na pamiątkę), bo nikt nie odważy się postawić na tym protokole żadnego rozwiązania, bo nie jest ono przyjętym standardem. Co się nauczyłeś, to oczywiście Twoje, ale nie jest to wiedza przydatna do czegokolwiek.

Dlaczego?

  • jeśli jesteś programistą aplikacji, zawsze będziesz opierał się na istniejących protokołach, bo są wspierane przez absolutnie cały dostępny na świecie sprzęt sieciowy danej klasy,
  • jeśli jesteś administratorem sieci, zawsze będziesz opierał się na istniejących protokołach, bo będziesz miał styk tylko ze sprzętem takie wspierającym.

Ja, pisząc od tych kilkunastu lat programy, mam całą masę gotowych bibliotek i aplikacji z przydatnym fragmentem kodu, które już nieraz znalazły zastosowanie nawet w komercyjnych programach. Ty, poza wiedzą, którą znajdziesz w książkach na kilkudziesięciu stronach do przeczytania w godzinkę, nie będziesz miał nic.

0

Ja Cie rozumiem i szanuję :) ale to wiedzę też musiałeś jakoś nabyć :) no ja mam trochę mniejsze doświadczenie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1