Sziasztok!
A következő kérdésem lenne: hogyan lehet broadcast UDP csomagot küldeni úgy, hogy az adott eth0 interface-nek még nincs beállítva a címe. Az érdekelne, hogy a DHCP kliens ezt hogyan csinálja, hogy tud úgy csomagot küldeni, hogy nincs IP-je.
- 2134 megtekintés
Hozzászólások
Sehogy. Az UDP fejléc szerves része a küldő és a címzett IP címe, mivel az UDP IP alapon működik. A DHCP nem UDP csomagokat küld (hiszen még nincs IP-je az interface-nek), hanem DHCP-{DISCOVER|OFFER|ACK|NACK|INFO|RELEASE|stb} üzenetekkel kommunikál a szerver és a kliens. A DHCP szintjén MAC alapján továbbítódnak a csomagok (Layer 2 és Layer 3 közötti protokollról van szó).
Az UDP működése megköveteli a Layer3 meglétét.
Nézz utána az ISO/OSI rétegeknek.
--
Minden a legnagyobb rendben csúszik ki a kezeim közül.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
nem akarlak bantani, de nem egeszen ugy van, ahogy leirtad
amugy a megoldas 255.255.255.255 src ip-vel megy ki a csomag, de nezd meg tcpdump -pal, szepen latszik
- A hozzászóláshoz be kell jelentkezni
Orbitális tévedés.
A DHCP már az első pillanattól fogva IP csomagokat küld/fogad.
RFC2131: "DHCP uses UDP as its transport protocol. DHCP messages from a client
to a server are sent to the 'DHCP server' port (67), and DHCP
messages from a server to a client are sent to the 'DHCP client' port
(68). A server with multiple network address (e.g., a multi-homed
host) MAY use any of its network addresses in outgoing DHCP messages."
Egyszerűen rootként te magad állíthatsz össze teljes IP csomagokat. Az első körben a kérés (REQUEST) és válasz (OFFER) broadcast megy (csupa egyes áll az IP címek helyén), utána már általában mehet unicast (incl. relay) a kommunikáció szerver és kliens között.
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Rootként bármelyik hálózati interfészen tudsz raw módban I/O-t bonyolítani, azaz olyan bitsorozatot teszel fel hálóra, amit nem szégyellesz. ld. man packet
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Amit a dhcp küld, az mac broadcast. ff:ff:ff:ff:ff:ff
1. Kliens broadcastra dhcp discover
2. Kap egy vagy több konkrátan neki, az ő mac címére címzett offert.
3. Ebből egyet kiválaszt, és visszaküld egy dhcp request-et a szervernek (általába még ezt is broadcast-ba, azért hogy több dhcp esetén a többi dhcp szerver is értelsüljön, hogy nem az ő ajánlata van elfogadva)
4. A szerver visszaigazol, dhcp ack
5. A kliens a kapott címét alkalmazza
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
Köszönöm a gyors válaszokat, közben megoldottam a problémát. A kulcsszó a broadcast MAC volt, plusz a SOCK_PACKET. Kísérletezéssel azt is el tudtam érni, hogy speckó progi segítségével az IP nélküli gép válaszoljon a PING parancsra. Persze ehhez fel kellett venni egy kamu IP-t, azonos alhálóval az ARP cache-be hozzá pedig a cél gép MAC-jét. Amúgy a sima broadcast IP nem elég a DHCP-nek, ugyanis ha IP nélküli gépről akarsz SOCK_DGRAM+IPPROTO_UDP csomagot küldeni, akkor a sendto fv-nél lehal Network is unreachable hibával.
- A hozzászóláshoz be kell jelentkezni