» »

Vzpostavitev Ethernet povezave v C-ju

Vzpostavitev Ethernet povezave v C-ju

St753 ::

V C-ju bi rad spisal program, ki bo vzpostavil ethernet povezavo in bral podatke, ki pridejo na port. Ethernet povezava bo direktna med dvemi računalniki, preverjanje/popravljanje napak, preverjanje ali je sporočilo zame in dekodiranje sporočila bom sprogramiral sam, ker imam določeno, kakšna bo kodiranje in dolžina sporočil. Zanima me, kako lahko vzpostavim povezavo in berem podatke, ki prihajajo (na internetu sem našel nekaj funkcij kot so socket(), connect(),...).
Komunikacija bo enosmerna. Ne potrebujem že spisanega programa, rad bi samo vedel, kje si lahko več preberem o tem in točno katere funkcije naj si pogledam, če hočem rešiti problem vzpostavitve povezave in branja podatkov.

Invictus ::

socket(), connect() in ostale funkcije delajo preko TCP/IP.

Ethernet tukaj nima nobene veze.

Nauči se najprej OSI nivoje da boš vedel na katerem nivoju delaš in vzpostavljaš povezavo.
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

Zgodovina sprememb…

  • spremenil: Invictus ()

St753 ::

Povezavo vpostavljam na fizičnem nivoju. Dal sem samo primer, kaj mi je google vrgel vn, ko sem vpisal, da bi rad v c-ju napisal program, ki vpostavi povezavo :D. OSI nivoje pa poznam...

St753 ::

Dodatek: Protokol, ki ga moram spisati, bo za osnovo prenosa uporabljal protokol TCP/IP, pri izvedbi protokola pa moram upoštevati, kot da TCP/IP skrbi samo za pretvorbo iz logičnih vrednosti v fizične.

Invictus ::

Na drugi strani potrebuješ "listener". Nekam se pač moraš povezati.

Za enosmeren prenos podatkov je najlažje uporabiti FTP protokol. Ali pa SFTP, če je šef obseden z varnostjo.

Drugače pa samo zapakiraš svoje podatke v "payload" v TCP paketek, notri so pa lahko vse tvoje zadeve, ki jih rabiš.

BTW. TCP/IP ne skrbi za nobeno pretvorbo logičnih vrednosti v fizične ...

Še 1x preberi OSI nivoje;).
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

imagodei ::

> "Še 1x preberi OSI nivoje"

OP, tole. Iz tvojih postov veje ena zmedenost.
- Hoc est qui sumus -

St753 ::

Na drugi strani bo "oddajnik", ki mi bo pošiljal sporočila.

Tega se nisem spomnil sam, tako sem dobil nalogo...

Kako ne skrbi? TCP/IP je protokol, ki se uporablja v praksi (OSI je samo teoretični model) in ne vem, kako fizični nivo protokola TCP/IP pošiljla podatke, če jih prej ne pretvori v fizični signal?

imagodei ::

Če ne boš pisal firmware za mrežno kartico, ne vem zakaj se ukvarjaš s pretvorbo v fizične nivoje? TCP/IP ali ISO OSI sta z namenom zasnovana plastno.

Da se ne lotevaš stvari s premalo teoretične podlage?
- Hoc est qui sumus -

black ice ::

Za pretvorbo poskrbi hardware, ni potrebe po ročnem ustvarjanju fizičnega signala. Kako misliš, da bi to izgledalo?

St753 ::

Se mi zdi, da smo malo zašli... Sej ne bom sam pretvarjal v fizične nivoje, ravno to je napisano zgoraj ("protokol, ki ga moram spisati, bo za osnovo prenosa uporabljal protokol TCP/IP"). Vse kar rabim je par funkcij v c-ju, ki vzpostavi komunikacijo z vnaprej podanim IP naslovom in portom in branje podatkov iz tega porta.

St753 ::

Kar se pa teoretičnega znanja tiče, ga pa zagotovo nimam dovolj (zato pa sprašujem za pomoč, kje si lahko kaj o tem preberem, katere funckije potrebujem,...).
Sicer je programsko okolje za izvedbo naloge poljubno, vendar sem se odločil, da to naredim v C-ju (čeprav bi bilo najbrž v kakšnem Matlab-u, LabView-u lažje...).

Senitel ::

No torej je debata o tem kako uporabljat TCP/IP sockete, kar si si že sam v prvem postu odgovoril in ne o vzpostavljanju Ethernet povezave med dvema napravama.
Skratka najprej še enkrat ponovi OSI model in obnovi znanje kje je Ethernet in kje sta TCP in IP. Potem pa pojdi gledat naprej socket, connect().

b3D_950 ::

Senitel ::

Eko to je sedaj že en tipičen primer overkill-a, ki nastane iz te zmede, ko dejansko še op sam ne ve, kaj sploh hoče.

Invictus ::

On bi rad samo pošiljal podatke. Sumim pa da tudi šef ne ve kaj hoče.

Sem pa napisal v prejšnjem postu kaj je za naredit ... Skratka ni neka NASA znanost.
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

St753 ::

Da se ne bom preveč trudil razlagat, kaj rabim narest (in pomotoma kaj narobe povedal), bom nalepil kar link: Seminarska

St753 ::

S tem ethernetom sem pa samo mislil, da bo povezava prek bakra (pa sem vse narobe povedal).

AndrejO ::

St753 je izjavil:

Da se ne bom preveč trudil razlagat, kaj rabim narest (in pomotoma kaj narobe povedal), bom nalepil kar link: Seminarska


St753 je izjavil:

S tem ethernetom sem pa samo mislil, da bo povezava prek bakra (pa sem vse narobe povedal).


Odprem in glej ga zlomka: "Na zicnem nivoju mora vmesnik uporabljati komunikacijo po internetu (ethernet prikljucek RJ45 ali pa brezzicno komunikacijo)."
Če so že navodila v seminarski tako zblojena, potem ni čudno, da pridejo ven takšna vprašanja.

Zgodovina sprememb…

  • spremenil: AndrejO ()

St753 ::

Upam, da je zdej končno jasno kaj bi rad :D

Še eno vprašanje za zraven. Kako je možno, da je okvir manjši od paketa? Glede na to, da se po procesu enkapsulacije na vsakem nivoju dodajo neke informacije, in se že same podatke razdeli/segmentira, bi pričakoval, da je okvir večji. Sicer ne vem, kako je to dejansko potem sprogramirano, vendar mi je profesor zatrdil, da se to lahko naredi na več načinov (kar verjamem) in da je lahko okvir (v našem primeru 8 bitov) manjši od paketa (v našem primeru 120 bitov) (kar se mi zdi za realne aplikacije manj verjetno).

Edit: Torej naj naštudiram socket() in connect()?

Zgodovina sprememb…

  • spremenilo: St753 ()

Invictus ::

St753 je izjavil:

Da se ne bom preveč trudil razlagat, kaj rabim narest (in pomotoma kaj narobe povedal), bom nalepil kar link: Seminarska

Svašta ...

Že cel kup napak samo v uvodu. In kaj naj bi bil okvir? Niso seznanjen z najnovejšim bluzenju pri prevajanju angleških pojmov v slovenščino ...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

St753 ::

Segment: layer 4 - transportni sloj
Paket: layer 3 - internetni/omrežni sloj
Okvir: layer 2 - povezavni (data link) sloj

Mavrik ::

Invictus je izjavil:


Svašta ...

Že cel kup napak samo v uvodu. In kaj naj bi bil okvir? Niso seznanjen z najnovejšim bluzenju pri prevajanju angleških pojmov v slovenščino ...


Okvir je zelo lep prevod besede "frame".
The truth is rarely pure and never simple.

black ice ::

Okvir si jaz razlagam kot datagram na Layerju 2.
S temi prevodi je vedno križ, če nočeš nesporazumov je za vsak primer priporočljivo dopisati pojme v angleščini. Vsaj kar se omrežij tiče.

Edit: Sta me že dva prehitela.

Zgodovina sprememb…

  • spremenilo: black ice ()

sas084 ::

Verjetno boš mogu delat z raw socketi. Evo še par primerov: link, link.

St753 ::

Hvala vsem za pomoč. Se opravičujem za nesporazume :)

MrStein ::

St753 je izjavil:

Se mi zdi, da smo malo zašli... Sej ne bom sam pretvarjal v fizične nivoje, ravno to je napisano zgoraj ("protokol, ki ga moram spisati, bo za osnovo prenosa uporabljal protokol TCP/IP"). Vse kar rabim je par funkcij v c-ju, ki vzpostavi komunikacijo z vnaprej podanim IP naslovom in portom in branje podatkov iz tega porta.

socket();
/*bind();*/
connect();

raw socketi nimajo številko porta, pardon "vrat".
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

St753 ::

Potem raw socket ja ali ne? Rečeno je bilo, da dobimo IP naslov IN št. porta...

Kako pa je z branjem oz. prejemanjem podatkov? Funkcija recv(); mogoče?

MrStein ::

Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

Zgodovina sprememb…

  • spremenil: MrStein ()

St753 ::

Kje pa dobim file pointer, ki ga dam funkciji read()? Od connect()?

Edit: sem videl, da je stvar opisana v podanem linku. Si bom prebral.

Zgodovina sprememb…

  • spremenilo: St753 ()

MrStein ::

Imaš delujoč primer tam: client.c
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

razlika med OSI in TCP/P modeloma

Oddelek: Omrežja in internet
134851 (738) enxtip
»

Podatkovna dioda

Oddelek: Informacijska varnost
234464 (3840) vostok_1
»

16. Kakšna je razlika med lokalnim omrežjem in internetom?

Oddelek: Šola
151986 (1476) Invictus
»

Ne razumem teh naslovov IP :)

Oddelek: Omrežja in internet
4210973 (9641) SasoS
»

MAC - IP

Oddelek: Omrežja in internet
294857 (4572) korenje_ver2

Več podobnih tem