hallo

Ik wil eens wat met de enc28j60 gaan doen.Maar nu moet je zelf alles programmeren.Dus ook een DHCP client.Nu kan ik hier een bibliotheek voor gebruiken van microchip.Maar dat vind ik niet zo leuk om te doen.Graag wil ik dit zelf schijven. Als ik over dit onderwerp google kom niet echt veel dingen tegen waar echt elke byte wordt uitgelecht.

Heeft er iemand een goede link?

Niet het meest prettige leesvoer, maar wel de officiële specificatie RFC 2131 Met alleen dat ben je er natuurlijk nog niet want je zal ook de onderliggende ethernet, IP en UDP lagen moeten implementeren.

[Bericht gewijzigd door Marcel op (34%)]

Ik zou ook even gewoon een pakkejte met "tcpdump" (o.i.d.) van de draad af plukken en kijken wat daar instaat. Een DHCP request is eigenlijk /dat/ pakketje, en verder niks. Dat is al makkelijk.

Als je de RFC niet wilt lezen, kun je denk ik het beste aan de gang gaan met een intelligente sniffer als Ethereal of Wireshark.

Ik heb even een screenshot van een DHCP request/response in Ethereal voor je geupload. De aardigheid is dat je door de structuur van het bericht heen kunt klikken als een boom (middelste stuk van het scherm), en dat Ethereal dan aangeeft in welke bytes van het ruwe bericht dat is opgeslagen (onderste stuk van het scherm).

http://img137.imageshack.us/img137/8508/etherealod9.th.jpg

Groeten,
Frans

Ik heb in het verleden ook zoiets gedaan (eerste jaar HTS nota bene). Ik heb toen heel veel gehad aan het boek "TCP/IP illustrated vol. 3".

Ethereal is onmisbaar, maar je moet je niet blind staren op de packets die je daarmee ziet. De verschillende protocollen hebben wat optionele onderdelen, die door sommige TCP/IP stacks al dan niet gebruikt worden. Ook de mogelijke waarden voor bepaalde opties, of geldige combinaties van opties kun je daar niet uit halen.

@frans77

http://www.ethereal.com/ deze webiste doet het bij mij niet.

Ik heb je screenshot beken.Maar ik kan niet echt vinden waar nu het helle packet staat.Zach onder op wel wat staan maar dat is wel lastig om daar het protocol uit op temoetne maken.

In Ethereal kun je in het middelste venster ergens op klikken, en de bijbehorende bytes worden dan in het onderste venster geselecteerd, dus je kunt het wel redelijk terug vinden.

Een goed boek, of een stukje uitleg online heb je toch echt wel nodig. De DHCP pagina op wikipedia is redelijk goed.

(Mods: geen idee of het mag volgens de richtlijnen, maar toch)

Liever dus niet, verwijderd.

[Bericht gewijzigd door Henry S. op (12%)]

http://www.ethereal.com/ deze webiste doet het bij mij niet.

Sorry, ik heb een verouderde link meegegeven. Ethereal is tegenwoordig Wireshark, en de ethereal site is opgeheven (staat nog wel in de google cache). Je moet dus het Wireshark linkje uit mijn eerste posting volgen.

Ik heb je screenshot beken.Maar ik kan niet echt vinden waar nu het helle packet staat.Zach onder op wel wat staan maar dat is wel lastig om daar het protocol uit op temoetne maken.

Tjsa, veel gemakkelijker dan dit wordt het denk ik toch niet. Sparky heeft natuurlijk gelijk dat je er echt wat documentatie bij moet raadplegen. DHCP lijkt functioneel overigens simpel (client schreeuwt rond dat 'ie een IP wil hebben, server geeft er eentje), maar als je er precies naar gaat kijken zit er behoorlijk wat complexiteit in. Als je dat zelf wilt implementeren, zul je je er toch echt in moeten verdiepen. Ik denk dat het raadzaam is om ook eens in de sourcecode van een open-source dhcp client te kijken.

Groeten,
Frans

Ik denk dat het wel meevalt in de basis: Het "ik wil een IP" pakketje kan je met wireshark vangen, en knippen-plakken naar de code voor de PIC of AVR (of wat je dan ook wilt). Het antwoord pakketje, moet je even controleren, of het inderdaad een DHCP reply is (of niet, beetje kort door de bocht, maar ja.... ), en dan op de juiste offset de IP gegevens er uit halen.

Op deze manier heet het eerder "bootp" in plaats van DHCP: DHCP biedt een aantal uitbreidingen zodat je ook netmask, gateway, nameserver, bootserver, root-filesystem en dergelijke kan doorgeven. Dat heb je allemaal niet nodig.

DHCP is dus een uitbreiding op BOOTP, in weze is het 't zelfde.

Zoek eens naar uIP. Dat is een tcp/ip stack met dhcp als voorbeeld toepassing.

http://www.circuitsonline.net/forum/faq#illegaal

En een waarschuwing wegens posten tegen beter weten in.

[Bericht gewijzigd door Henry S. op (8%)]