Internet , TCP/IP met de Atom , deel 3 door Kees van Oss. Inleiding: In het vorige artikel heb ik een aantal testen beschreven en hoe de status van het project op dit moment is. Ik heb nu de PPP State-loop werkende en wil hieronder beschrijven hoe het nu exact werkt. Daarna wil ik de volgende fase in het project bespreken, de Atomic Network ROM (AN-ROM) waarin de TCP/IP stack zit en een aantal commando's om TCP/IP communicatie op te zetten en te kunnen gebruiken (Sockets). PPP State-loop: De State-loop is nu definitief en werkt redelijk universeel. Dit betekent dat de Atom reageert op aanvragen van de PC en deze zodanig beantwoord dat de verbinding eenduidig vastgelegd wordt. Ik heb dit nog niet kunnen testen op een ander systeem, maar onder Windows werkt het goed. Om te kunnen begrijpen hoe de State-loop werkt zal ik eerst een blokschema laten zien van hoe de PPP-communicatie verloopt vanaf PPP-State=0 (geen verbinding): In het programma is de State-loop een routine welke aangeroepen wordt met PPP-State=0 als men opstart en zonder PPP-State als er iets ontvangen moet worden. Verder zijn de belangrijkste routines de protocol afhandelings routines voor LCP, PAP en IPCP. Wanneer ik dit vertaal naar een flow diagram, dan ziet de State-loop er als volgt uit: Wanneer je het verhaal verder leest zul je merken dat de IP-handle module verder niet besproken wordt. Dit komt omdat ik eerst een goede manier moet vinden om de data van de driver door te sturen, via de IP-handle module, naar de AN-ROM waarin de TCP/IP stack zit. Deze volgt nog in een later stadium. LCP-handle module: Om een PPP verbinding te maken wordt eerst op LCP nivo de verbinding 'besproken'. Op LCP nivo wordt bv. vastgelegd hoe groot de te versturen packet grootte moet zijn (Config Option 1 MRU), of hoe de control karakters (ASCII 0-31) verstuurd moeten worden (Config Option 2 ACCM), of dat er Password controle moet zijn (Config Option 3 PAP/CHAP). PAP-handle module: De PAP module doet op zich niet veel. De PAP Request wordt door de Atom verstuurd en het enigste waarop gereageerd wordt is een Acknowledge van de PC ten teken dat de Userid en het Password geaccepteerd zijn. De afhandeling van een ontvangen PAP packet verloopt als volgt: IPCP-handle module: Wanneer een PAP Acknowledge door de PC verzonden is wordt automatisch overgegaan naar de IPCP fase. Eigenlijk is dit de NCP (Netwerk Control Protocol) fase omdat in deze fase meerdere protocollen kunnen communiceren maar omdat de Atom alleen maar IPCP accepteerd, noem ik deze fase IPCP fase. AN-ROM: De driver is nu gereed, op de IP-handle module na, en zal misschien nog wat aangepast moeten worden zodat de driver routines gemakkelijk aan te roepen zijn. Nu moet ik beginnen met het schrijven van commando's voor het definiëren van Sockets. Volgende commando's zullen worden gedefineerd in de AN-ROM:
Er zijn in principe 2 manieren op de TCP/IP stack te gebruiken, als server of als client. Wanneer er een server geïnstalleerd is, zal deze wachten tot zich een client aanmeld en zal daarna een nieuwe verbinding tot stand brengen (bij TCP) en dan data uitwisselen. Een client zal een server aanroepen en hiermee verbinding maken om data uit te wisselen. Hieronder staan een aantal typische voorbeelden voor het gebruik van de TCP/IP stack als server en als client.
Status: Het verbinden via een PPP verbinding gaat nu goed en ik ga als volgende fase de commando's voor de ANROM programmeren. Het TCP/IP stuk in de ANROM met de Sockets is nog een gedachte die uitontwikkeld moet worden en kan dus nog veranderen tijdens uitvoer. Al met al moet het nog blijken of de juiste commando's zijn gekozen. Tot zo ver weer het Atomic Netwerk verhaal. |