Internet Ik liep al langer met het idee rond om eens te kijken of het mogelijk is om via de Atom data op te halen van internet. Je kunt dan bv. HTML pagina’s van het internet halen en dan een soort simpele browser te maken in combinatie met Atomic Windows. Voordat ik verder in ga op hoe je de Atom in een netwerk kunt plaatsen wil ik eerst even een algemeen verhaaltje houden over internet. Wat is internet eigenlijk en hoe werkt het? Internet wordt beschreven als een of meerdere netwerken waarover computers met elkaar kunnen communiceren. Deze computers communiceren met elkaar volgens bepaalde regels. Deze regels zijn vastgelegd in zogenaamde protocollen en worden RFC’s (Request for Comments) genoemd. Deze zijn vrij down te loaden van het internet. Hieronder staat een voorbeeld van een netwerk.Lagenstructuur: Wanneer je de structuur van internet software op een computer bekijkt, blijkt dat deze opgebouwd is uit zogenaamde lagen. Deze lagen hebben elk een eigen functie en kunnen alleen met de onder- en bovenliggende laag communiceren. De internetstructuur is in principe terug te brengen tot 4 hoofdlagen, nl de link-, netwerk-, transport- en applicatielaag. Ook wordt wel eens gesproken van het OSI (Open Systems Interconnection) model. Dit is in principe dezelfde structuur maar dan verdeeld in 7 lagen. De applicatielaag is dan verder onderverdeeld in 3- en de linklaag in 2 extra sublagen. Het principe van beide structuren is gelijk Wanneer je een computer in een netwerk plaatst, zal deze via bovengenoemde internetstructuur moeten werken om te kunnen communiceren. De internetstructuur ziet er dus als volgt uit: Elke computer zit via de linklaag met het netwerk verbonden. Het is ook mogelijk dat er meerdere link lagen met een netwerklaag verbonden zijn. De netwerklaag bepaald dan naar welk netwerk de data gestuurd moet worden. Deze laag is verantwoordelijk voor het ontvangen en verzenden van data. De data wordt als pakketje verstuurd met een kop waarin informatie staat van welke computer de data af komt en naar welke computer de data toe moet. Aan elk pakketje wordt ook een checksum toegevoegd om juiste dataoverdracht te kunnen controleren. Indien er meerdere netwerken op een computer aangesloten zijn, zorgt de netwerklaag ervoor dat de data naar het juiste netwerk gestuurd wordt. Het zogenaamde IP protocol (Internet Protocol) is hiervoor verantwoordelijk. Het IP protocol houdt zelf een tabel bij waarin de route informatie opgeslagen wordt zodat de computer weet welk IP adres op welk netwerk aangesloten zit. Het IP protocol voegt ook een kop toe met extra informatie voor de transportlaag.Ook kan de netwerklaag als zogenaamde router functioneren. Deze zorgt ervoor dat de data van het ene netwerk naar het andere netwerk verstuurd wordt. De data komt dan via de netwerkkabel binnen in een linklaag. Deze linklaag stuurt de data door naar bovenliggende netwerklaag. De netwerklaag kijkt dan voor welke computer de data bedoeld is en stuurt de data dan door naar de linklaag waarop deze computer aangesloten zit (of naar de volgende router). Deze linklaag stuurt de data dan weer via een netwerkkabel weg. Transport laag:In deze laag wordt gekeken via welk protocol de communicatie gewenst is, bv TCP protocol (Transport Control Protocol) of UDP protocol (User Datagram Protocol). Het TCP protocol is erg betrouwbaar omdat er eerst een verbinding opgebouwd moet worden en elke dataoverdracht door de ontvanger bevestigd moet worden. UDP daar en tegen hoeft niet eerst een verbinding op te bouwen en de dataoverdracht hoeft ook niet bevestigd te worden. Daarom is UDP dataoverdracht sneller dan TCP. Het is aan de programmeur welk protocol hij gebruikt. In deze laag worden de servers geïnstalleerd welk op een computer gewenst zijn. De server die wil communiceren met een andere server stuurt eerst een aanvraag weg. Deze aanvraag wordt dan via de transportlaag en de netwerklaag naar de linklaag getransporteerd waarna het pakketje het netwerk op gestuurd wordt. De desbetreffende netwerkkaart ontvangt het pakketje en stuurt deze via de netwerklaag en transportlaag naar de juiste server van de ontvangende computer. Deze bevestigt al dan niet de aanvraag of stuurt de gevraagde data in omgekeerde route terug. Enkele voorbeelden van servers zijn:
Hoe verloopt nu de communicatie tussen 2 computers in een netwerk? Als eerste zal er een verbinding gemaakt moeten worden met het netwerk. Dit kan dmv bv een ethernet kaart of een modem met een aanlog/inbel protocol. Wanneer de verbinding tot stand gebracht is, zoekt de aanvragende server contact met de ontvangende server. Wanneer er contact gemaakt wordt met 2 gelijke servers spreekt men ook wel van peer-to-peer communicatie. Als het contact van weerszijden bevestigd is, is er heen en weer gecommuniceerd via welk protocol er gecommuniceerd moet worden, welke blockgrootte er overgestuurd moet worden en nog meerdere opties afhankelijk van het protocol. Daarna zal er data verstuurd worden. Je moet beginnen met de bodem en dat is dit geval de link laag. Het is mogelijk om op verschillende manieren een netwerk verbinding maken maar ik wil me beperken tot een netwerkverbinding via de seriële poort. Je hebt dan een aantal zaken nodig, zoals een hardware interface, een driver en een aanlog protocol: Hardware interface:Om de hoeveelheid werk te reduceren en compatible te zijn met de Atom emulator van Wouter Ras, heb ik gekozen om een ISA-slot te maken welke aan een originele Atom geknoopt is. De I/O adressen van de PC (#000-#3FF) worden geprojecteerd op de Atom adressen #B400-#B7FF. Het voordeel is dan ook dat er in de toekomst eventueel andere PC-kaarten ingeprikt kunnen worden om aangestuurd te worden via de Atom. De adreslijnen A0-A9 en datalijnen D0-D9 worden op het ISA-slot aangesloten. Verder heb ik een externe decodering voor de Atom adressen #B400-B7FF op het printje van het ISA-slot geplaatst, welke er voor zorgt dat het ISA-slot enabled wordt. Ook heb ik in mijn Atom een PC-voeding geplaatst en de voedingsspanningen –5V, +5V, -12V, +12V en GND rechtstreeks aangesloten op het ISA-slot. Het principe schema ziet er als volgt uit: Principeschema ISA sloten Schema (voor het originele Schema ) Driver: De driver verzorgt het versturen en ontvangen van seriële data. Er worden een aantal flags gezet afhankelijk van de gebeurtenis zoals bv. Verbinding ok, Data ontvangen, Klaar voor data versturen en Timeout error. Het TCP protocol is een programma lus waarin constant gekeken wordt of er een data pakketje binnengekomen is. Wanneer dit het geval is (Flag Data ontvangen is gezet) zal het pakketje ontdaan worden van alle Link laag informatie. Dan wordt het pakketje doorgegeven aan het IP protocol welke zijn informatie verwijdert. Het IP protocol geeft het pakketje door aan de transportlaag welke kijkt of het een TCP- dan wel UDP pakketje is. Het desbetreffende protocol verwijdert de TCP-/UDP informatie en kijkt voor welke poort het pakketje bestemd is. Het data pakketje zal dan door de juiste server afgehandeld worden. Aanlog protocolDe Atom wordt via zijn seriële kaart met een nullmodem kabel verbonden met de seriële poort van de PC. Op de PC moet dan een server geïnstalleerd worden welke data-communicatie via de seriële poort verzorgt. Wanneer dit gebeurd is, kan de Atom volgens een aanlog protocol in het netwerk inloggen. Ik gebruik het PPP protocol (Point-to-Point Protocol) voor het aanloggen in mijn PC-netwerk. Het PPP protocol werkt volgens onderstaand schema:
PPP Protocol Atomic Netwerk laag: Dit is een eenvoudig stuk binnen de Atom. Omdat er maar 1 netwerk verbinding is, hoeft het IP protocol alleen maar een kop en een checksum toe te voegen. Normaal gesproken houdt het IP protocol een route tabel bij waarin staat welk IP adres naar welke netwerk kaart gestuurd moet worden maar dat is hier niet van toepassing. Atomic Transport laag:Dit is het moeilijkste stukje software omdat dit de spil is waarop het TCP/IP netwerk draait. Wanneer de Atom als server dient zal de software in een programmalus draaien waarin constant gekeken wordt of er een data pakketje binnen gekomen is. Indien dit het geval is zal het pakketje ontdaan worden van de linklaag header en daarna de netwerklaag header. In de transportlaag header staat welk protocol gebruikt gaat worden, TCP of UDP. Ook is er in de header vermeld voor welk poortnummer de data bestemd is. Wanneer het protocol TCP is, zal er eerst verbinding gemaakt moeten worden met de aanvragende computer op TCP nivo. Wanneer deze verbinding tot stand is gebracht, zal de verder binnenkomende data aan het juiste TCP-poortnummer doorgegeven worden. Wanneer het protocol UDP is, zal de data rechtstreeks aan het juiste UDP-poortnummer doorgegeven worden zonder eerst een verbinding opgebouwd te hebben.Atomic Applicatie laag: Hier kan het experimenteren beginnen, er zijn talloze servers welke geïnstalleerd kunnen worden. Ik wil eenvoudig beginnen en een Ping-server schrijven zodat ik op mijn PC de Atom aan kan roepen via een ping aanvraag. Indien dit lukt werken er al diverse protocollen en kan ik verder gaan met testen. De volgende stap is dan om via FTP, data overdracht mogelijk te maken. Er kunnen dan files overgestuurd worden van en naar de PC. Ook wil ik eens experimenteren om bij mijn internet provider in te loggen met het PPP protocol om zo via TCP-poort 80 het internet op te kunnen. Je moet dan een aanvraag doen bij een site en krijgt dan de file index.html terug. Dit is de algemene startpagina van een site.Andere projecten op internet: Wanneer je op internet surft en zoekt naar internet verbindingen met 8-bits microcomputers, dan kom je een heleboel interessante sites tegen. Er is namelijk al heel veel geëxperimenteerd op dit gebied. Enkele projecten zijn bv.:
|