Tips Home | ||||
Sambar Server Tips en Trucs ! |
IP, een korte basis cursus internet .Inleiding. Per onderdeel dat in de opvolgende hoofdstukken beschreven wordt, zijn komplete boeken geschreven. Het is dan ook niet de bedoeling alle facetten te belichten, maar een basis idee te geven hoe IP werkt en wat je er mee kunt. Dit zal wellicht ook een beter idee geven over waarom iets niet werkt. Het OSI model.Kijken we naar de basis, dan vinden we een aantal lagen terug in de manier waarop applicaties over netwerken (maar ook binnen computers) met elkaar communiceren. Dit noemen we het OSI (Open Systems Interconnect) model. Hierbij onderscheiden we de volgende lagen:
Laag 1, het laagste nivo, kunnen we ons het best voorstellen als de fysieke hardware, met de electrische signalen, die er voor zorgen dat we hardware aan elkaar kunnen knopen. Denk hierbij bijvoorbeeld aan ethernet, tokenring, FDDI, PPP dialup verbindingen, etc.... . Als je een tokenring adapter op een ethernet netwerk probeert aan te sluiten werkt dat gewoon niet, en een ethernetkaart kun je ook niet als modem gebruiken. Laag 2 is de Media Access Control laag, met andere woorden de laag die ervoor zorgt dat je PC maar ook bijvoorbeeld een UNIX computer via je netwerk kaart met andere stations op het netwerk kan praten. Op laag 3 komen we het IP protocol tegen en op laag 4 de subset TCP . De overige lagen laten we hier even buiten beschouwing. In de volgende hoofdstukken gaan we uit van een ethernet netwerk, om de
systematiek en de werking van het IP protocol uit te leggen. Het leuke van
het IP protocol is echter dat er voor dit protocol op alle mogelijke
platformen en netwerken drivers (stukjes programma's die de communicatie
mogelijk maken) te vinden zijn. IP, adressering en netwerk klassen.Bij de uitgifte van adressen is de basis gelegd van een drietal typen netwerken, de zgn klasse A, B en C netwerken. De netwerktypen uitgeschreven op bit niveau 1 2 3 4 Bits 12345678 90123456 78901234 56789012 Klasse A 0nnnnnnn hhhhhhhh hhhhhhhh hhhhhhhh Klasse B 10nnnnnn nnnnnnnn hhhhhhhh hhhhhhhh Klasse C 110nnnnn nnnnnnnn nnnnnnnn hhhhhhhh Klasse D 1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx Klasse E 11110yyy yyyyyyyy yyyyyyyy yyyyyyyy nnn = het toegewezen netwerk deel van het nummer hhh = het vrij te gebruiken host deel xxx = speciale adressen t.b.v. multicasting yyy = gereserveerde experimental adressen Een paar voorbeelden van IP adressen 10.1.1.1 00001010 00000001 00000001 00000001 = Klasse A 145.82.5.254 10010001 01010010 00000101 11111110 = Klasse B Uit het bovenstaande schema kun je aflezen dat het adres 10.1.1.1 een klasse A adres is, immers het begint binair met een nul en dat adres 145.82.5.254 een klasse B adres is omdat het met 10 begint. Het kennen van deze adresranges is belangrijk omdat routers (hierover later meer) met deze grenzen rekening houden in hun route tabellen. Hoe komen we aan zo'n IP adres? Als we onze werkstation of onze server aan willen sluiten op een
bestaand netwerk, dan is het eenvoudig. We kunnen dan een adres vragen aan
de beheerder van het netwerk waarop we willen aansluiten. Tegenwoordig
worden dergelijke adressen veelal automatisch toegewezen. Sluiten we onze
pc bijvoorbeeld via een provider aan op het internet, dan zorgt het ppp
protocol bij het aanloggen op het provider netwerk dat we automatisch een
adres toegewezen krijgen.
De lagen 1 en 2.Schematische weergave versturen data over ethernetWat gebeurt er nu als station A met de server C op IP niveau wil communiceren? Op ethernet niveau hebben heeft de driversoftware, waar de pakketjes als eerste doorheen moeten, geen notie van IP adressen. Hier worden mac-adressen gebruikt. Mac-adressen zijn adressen die op ethernet bestaan uit 6 bytes, die voor de afwisseling hexidecimaal uitgeschreven worden. 00.0f.12.34.aa.bb is bijvoorbeeld een adres. Deze adressen zijn gecodeerd in de hardware en in principe wereldwijd uniek (er zijn tegenwoordig helaas fabrikanten die nummers hergebruiken). Stations zijn hierdoor op een eenduidige wijze te identificeren. Op broadcast netwerken (pakketjes op het segment worden naar alle adapters gestuurd) worden deze adressen gebruikt door de adapters om te herkennen met welk pakktje ze wel iets moeten doen en welke pakketjes genegeerd kunnen worden. Wil station A nu pakketjes gaan sturen naar de server C, dan moet hij zien te achterhalen wat het mac-adres is van server C. Dit doen ze met het zgn. ARP (Adres Resolution Protocol) protocol. Station A zal hiertoe een pakketje sturen, met een speciaal destination (=bestemmings) mac-adres "ff.ff.ff.ff.ff.ff" en als source (zijn eigen) mac-adres het eigen adapter adres. Tevens wordt het gezochte IP adres meegestuurd. Alle stations dienen dergelijke requests te bekijken en te vergelijken met het eigen IP adres. Server C zal dit adres herkennen en een zgn ARP-response frame sturen met zijn eigen mac-adres en ip-adres. Station A zal deze data lokaal in zijn eigen ARP tabel opslaan, zodat hij die informatie in het vervolg niet meer hoeft op te zoeken. Vervolgens kan station data naar server C gaan sturen. Normaalgesproken beschikt C reeds over en ARP entry in de ARP tabel en kan deze een response direkt adresseren Hieronder vindt je een voorbeeld van een ARP request en response frame ARP: Request, Target IP: 172.31.249.249 FRAME: Base frame properties FRAME: Time of capture = Jun 14, 2000 15:25:50.44 FRAME: Time delta from previous physical frame: 224 milliseconds FRAME: Frame number: 63 FRAME: Total frame length: 60 bytes FRAME: Capture frame length: 60 bytes FRAME: Frame data: Number of data bytes remaining = 60 (0x003C) ETHERNET: ETYPE = 0x0806 : Protocol = ARP: Address Resolution Protocol ETHERNET: Destination address : FFFFFFFFFFFF ETHERNET: .......1 = Group address ETHERNET: ......1. = Locally administered address ETHERNET: Source address : 00600848E10F ETHERNET: .......0 = No routing information present ETHERNET: ......0. = Universally administered address ETHERNET: Frame Length : 60 (0x003C) ETHERNET: Ethernet Type : 0x0806 (ARP: Address Resolution Protocol) ETHERNET: Ethernet Data: Number of data bytes remaining = 46 (0x002E) ARP_RARP: ARP: Request, Target IP: 172.31.249.249 ARP_RARP: Hardware Address Space = 1 (0x1) ARP_RARP: Protocol Address Space = 2048 (0x800) ARP_RARP: Hardware Address Length = 6 (0x6) ARP_RARP: Protocol Address Length = 4 (0x4) ARP_RARP: Opcode = 1 (0x1) ARP_RARP: Sender's Hardware Address = 00600848E10F ARP_RARP: Sender's Protocol Address = 172.31.0.36 ARP_RARP: Target's Hardware Address = 000000000000 ARP_RARP: Target's Protocol Address = 172.31.249.249 ARP_RARP: Frame Padding ARP: Reply, Target IP: 172.31.0.36 Target Hdwr Addr: 00600848E10F FRAME: Base frame properties FRAME: Time of capture = Jun 14, 2000 15:25:50.46 FRAME: Time delta from previous physical frame: 2 milliseconds FRAME: Frame number: 64 FRAME: Total frame length: 60 bytes FRAME: Capture frame length: 60 bytes FRAME: Frame data: Number of data bytes remaining = 60 (0x003C) ETHERNET: ETYPE = 0x0806 : Protocol = ARP: Address Resolution Protocol ETHERNET: Destination address : 00600848E10F ETHERNET: .......0 = Individual address ETHERNET: ......0. = Universally administered address ETHERNET: Source address : 003080F27F76 ETHERNET: .......0 = No routing information present ETHERNET: ......0. = Universally administered address ETHERNET: Frame Length : 60 (0x003C) ETHERNET: Ethernet Type : 0x0806 (ARP: Address Resolution Protocol) ETHERNET: Ethernet Data: Number of data bytes remaining = 46 (0x002E) ARP_RARP: ARP: Reply, Target IP: 172.31.0.36 Target Hdwr Addr: 00600848E10F ARP_RARP: Hardware Address Space = 1 (0x1) ARP_RARP: Protocol Address Space = 2048 (0x800) ARP_RARP: Hardware Address Length = 6 (0x6) ARP_RARP: Protocol Address Length = 4 (0x4) ARP_RARP: Opcode = 2 (0x2) ARP_RARP: Sender's Hardware Address = 003080F27F76 ARP_RARP: Sender's Protocol Address = 172.31.249.249 ARP_RARP: Target's Hardware Address = 00600848E10F ARP_RARP: Target's Protocol Address = 172.31.0.36 ARP_RARP: Frame Padding De entries in een ARP tabel worden normaal gesproken 900 seconden bewaard, waarna indien de communicatie nog steeds actief is er weer een ARP uitgevoerd moet worden. Routering, hoe werkt datHoe kan een station een server vinden die zich achter een router bevindt? Om deze vraag te beantwoorden, moeten we begrijpen hoe het samenspel
tussen routers en werkstations en servers verloopt. Een van de functies
van een router is er voor zorgen dat de broadcasts (o.a. voor ARP requests)
zich niet door het hele netwerk kunnen verspreiden. Je kunt je voorstellen
dat je PC geen tijd meer over zou houden voor normale zaken indien hij de
ARP requests van alle stations op het hele internet (miljoenen pc's dus)
voor zijn kiezen zou krijgen. Zo werkt het gelukkig ook niet bij een
routeerbaar protocol. Schematische weergave routering tussen 2 ethernet segmentenJe begrijpt nu waarom je een default gateway nodig hebt om bijvoorbeeld bij de www.netwerkinformatie.com server te kunnen komen. Hoe weet een station nu of zijn partner zich lokaal op zijn segment bevindt?Hiervoor dient er op het station naast zijn IP-adres een netwerkmasker (een betere naam is subnetmasker) geconfigureerd te worden. Hoe werkt dit nu?Stel we hebben te maken met werkstation 145.82.13.254, die opzoek is naar server 145.82.15.23. Bevinden deze zich op het zelfde segment? Schematische weergave routering tussen 2 ethernet segmentenOok het subnetmasker bestaan net als het IP-adres uit een reeks binaire eenen en nullen. De positie (hoeveelheid) van de eenen bepalen het netwerk deel van het adres en het stuk van het IP-adres dat nog overblijft, de nullen laten zien welke ruimte er voor hosts (=stations) beschikbaar is op dat deel van het netwerk, verder subnet genoemd. Nu gaan we bepalen of de bovengenoemde adressen zich op het zelfde subnet bevinden. Hiertoe dienen we de adressen en het masker binair uit te schrijven (de IP-stack vergelijkt dit immers ook op IP niveau). Subnetmasker 255.255.255.0 11111111 11111111 11111111 00000000 De ip adressen Station A 145.82.13.254 10010001 01010010 00001101 11111110 Station B 145.82.15.23 10010001 01010010 00001111 00010111 Het bepalen van de subnetten waarop de stations zich bevinden Station A 145.82.13.254 10010001 01010010 00001101 00000000 Station B 145.82.15.23 10010001 01010010 00001111 00000000 Terug gerekend naar een decimale notering ip-adres netwerk subnet Station A 145.82.13.254 145.82.0.0 145.82.13.0 Station B 145.82.15.23 145.82.0.0 145.82.15.0We zien dus dat de beide stations zich wel op het zelfde (klasse B) netwerk bevinden, maar ook dat de beide stations zich op verschillende subnetten bevinden. Station A moet dus verkeer via zijn default gateway naar station B sturen. Het bovenstaande voorbeeld was op het blote oog ook nog wel te herleiden, aangezien het hostdeel precies op de punt begon. Stel dat het masker 255.255.248.0 zou zijn? Liggen de beide stations dan op het zelfde subnet. We gaan de zaak weer uitschrijven. Subnetmasker 255.255.248.0 11111111 11111111 11111000 00000000 De ip adressen Station A 145.82.13.254 10010001 01010010 00001101 11111110 Station B 145.82.15.23 10010001 01010010 00001111 00010111 Het bepalen van de subnetten waarop de stations zich bevinden Station A 145.82.13.254 10010001 01010010 00001000 00000000 Station B 145.82.15.23 10010001 01010010 00001000 00000000 Het bepalen van het laatste adres, het zgn. local broadcast adres Station A 145.82.13.254 10010001 01010010 00001111 11111111 Station B 145.82.15.23 10010001 01010010 00001111 11111111 Terug gerekend naar een decimale notering ip-adres netwerk subnet broadcast addr Station A 145.82.13.254 145.82.0.0 145.82.8.0 145.82.15.255 Station B 145.82.15.23 145.82.0.0 145.82.8.0 145.82.15.255Nu liggen de beide werkstations wel op het zelfde subnet. Je ziet nu ook duidelijker het nut van het binair uitschrijven van adressen om bijvoorbeeld het netwerk te bepalen en het laatste adres in dat netwerk, het broadcast adres. Het broadcast adres wordt gebruikt om bijvoorbeeld testframes, zgn. ping pakketjes, naar alle stations op dat subnet te sturen. Voor werkstations kunnen de adressen 145.82.8.1 tot en met 145.82.15.254 gebruikt worden, ruim 2000 adressen. Het volgende subnet (als we het zelfde masker zouden gebruiken, loopt van 145.82.16.0 tot en met 145.82.31.255 Hoe weet de defaultgateway (de router) nu waar hij de pakketjes van station A voor station B naar toe moet sturen?In tegenstelling tot de overige IP-stations, beschikt een router over tabellen (de router tabellen), waar per (sub)netwerk staat opgenomen waar hij de data voor dat specifieke (sub)netwerk naar toe moet sturen (naar welk ip-adres). We gaan in de het volgende voorbeeld weer uit van het eerst gekozen subnetmasker 255.255.255.0.
Router A zal de data naar router B sturen, die de data weer doorstuurt naar router D. Router C krijgt het pakketje normaal gesproken nooit te zien, immers dan zou het pakketje een omweg maken. Herroutering en de opbouw van route tabellen.Stel nu dat de verbinding tussen router B en D uitvalt. Indien routes met de hand gedefinieerd zouden zijn, ziet router B dat hij het pakketje niet verder kan sturen richting D, hij weet echter niet dat er een alternatieve verbinding bestaat via router C. Dat is hem immers nooit vertelt.Dit probleem is op te lossen door de routers "dynamisch" route informatie te laten uitwisselen d.m.v. een routing protocol. Dit heeft als bijkomend voordeel dat op het moment dat er een netwerk (lees interface met een ip-add en masker) aan een router wordt toegevoegd, dit niet meer op alle individuele routers gedefinieerd hoeft te worden. Afhankelijk van het gebruikte protocol kunnen vaste (overal de zelfde (bijv RIP)) of variabele (met per subnet verschillende hoeveelheden hosts (bijv OSPF)) gedefinieerd worden. Het gebruik van DNS.Stel station B zou in werkelijkheid de www.netwerkinformatie.com server zijn. Ik heb er geen idee van wie er allemaal een bookmark naar mijn site gemaakt hebben, dus ik kan ze ook niet informeren. Om dit probleem te voorkomen is het Domain Name System (= DNS) opgezet, waarbij een vertaalslag gemaakt wordt van namen naar IP-adressen. Hoe werkt dit?Aan de werkstation kant is het verhaal tamelijk eenvoudig. Door het opnemen van het IP-adres van een of meerdere dns servers, zal het werkstation automatisch het betreffende IP-adres bij de naam gaan zoeken, eerst bij de eerste DNS server en als deze niet reageert bij de tweede, totdat hij alle geconfigureerde DNS servers heeft gehad. Wil je dus gebruik maken van het World Wide Web (WWW), dan moet je een DNS server geconfigureerd hebben.Hosts, werkstations en services.
Hoe werkt dat nu?We introduceren hier weer even het oude concept van server en werkstation. De server is de gene die de service aanbiedt, het werkstation de gene die de service wil afnemen. Dit is even tamelijk zwart-wit gesteld, in de praktijk is de scheidslijn lang niet altijd zo duidelijk te trekken. Stel ik wil een webserver en ftp server beschikbaar stellen (zodat mensen bij mij kunnen surfen en files kunnen downloaden). Hoe kan mijn "server" nou weten of iemand iets wil downloaden via FTP of komt browsen via WWW?Protocol nummersKijken we naar het IP protocol, dan komen we een aantal lagen tegen. Het eerste wat je tegen komt is een source en destination IP adres. Het destination adres wordt gebruikt om het pakket te routeren, het source adres wordt door de andere partij gebruikt om het pakket weer terug te kunnen sturen. Vervolgens komen we het protocol nummer tegen.Binnen het IP protocol zijn een aantal specifieke protocollen gedefinieerd, waarvan de protocollen tcp(6), udp(17) en icmp(1) de bekendsten zijn. (kijk op http://www.iana.org/numbers.htm voor een uptodate overzicht. De veschillende protocollen hebben zo hun eigen eigenschappen. Zo is het ICMP protocol een puur lowlevel protocol, bedoeld voor het troubleshooten en opvragen van netwerk parameters. TCP en UDP zijn de protocollen waar we hier iets dieper opin zullen gaan. We beginnen met UDP. Dit is het eenvoudigste protocol, omdat het een
zogenaamde connectionless service levert. Connectionless wil zeggen dat
het protocol geen idee heeft of het eerste, dan wel het laatste pakketje
van een sessie verstuurd wordt en ook niet hoeft bij te houden of alle
pakketjes wel goed bij de ontvangende kant aangekomen zijn. Dit laat het
protocol allemaal over aan de hoger liggende lagen (denk nog eens terug
aan het OSI model). Willen applicaties dus zeker weten of alle pakketjes
netjes aangekomen zijn, dan moeten ze dit zelf controleren (vragen aan de
partner aan de andere kant). Typisch toepassingen voor dit protocol zijn
het uploaden van configuratie files naar devices die mogelijk onvoldoende
resources hebben voor een TCP implementatie, het sturen van systeem
berichten (TCP zou in dergelijke gevallen te traag dan wel te veel
overhead opleveren als er slechts 1 pakketje verstuurt hoeft te worden) en
een nieuwe toepassing is het gebruik bij telefonie over IP (hier heeft
hertransmissie immers geen zin, dan maar een kraakje). Poortnummers.Vervolgens worden binnen de protocollen poortnummers op de verschillende services adresseerbaar ge maakt. Deze poortnummers (ook wel sockets genoemd) worden gebruikt door de protocolstack om te bepalen naar welk programma de data gerouteerd moet worden. Programma's die luisteren op dergelijke poorten (deze worden ook wel deamons genoemd) moeten aan de TCP stack vertellen dat zij de data die op bijvoorbeeld poort 80 (= www) binnen komt doorgestuurd moet worden naar de webserver. Poort 21 daarentegen is in principe gereserveerd voor FTP verkeer. Deze poorten kun je in principe als beheerder vrij kiezen, echter voor de meeste protocolen zijn er in principe poorten gereserveerd. De cliëntapplicaties zullen deze poorten gebruiken als er verder niets anders opgegeven wordt. Kijk voor een lijst van deze poortnummers ophttp://www.iana.org/assignments/port-numbers Aan de cliëntkant wordt tijdens het opzetten van een sessie een dynamische poort geopend (geregistreerd in de TCP stack), waarop voor die specifiek gestarte sessie (in combinatie met het service poortnummer) geluisterd wordt. Met de hulp van de IP adressen, protocol nummers en poort nummers zullen per sessie unieke combinaties ontstaan, waardoor het gelijktijdig starten van eventueel meerdere sessie naar verschillende services mogelijk is. Schematische weergave van een aantal gelijktijdige TCP sessiesBridges, switches, routers en hubs.Hebben we echter zoals we in de volgende tekening kunnen zien een netwerk met meerdere gebruikers en enkele servers, dan kunnen we ons voorstellen dat er meerdere werkstations zijn die gelijk tijdig data van verschillende servers proberen op te halen. Dit noemen we colission domains. Een voorbeeld van een zgn collision domain.Een schematische weergave van de bridge en de router functie.Tegenwoordig zijn er echter kastjes te koop, switches noemen ze dat, die per poort een bridge functie vervullen. Door een dergelijk device in het hart van je netwerk te plaatsen, kunnen gebruikers eenvoudiger over de segmenten (collision domeinen) verdeeld worden en kan iedere server zijn eigen dedicated poort krijgen, waardoor een betere performance gehaald kan worden. In de onderstaande tekening zie je een eenvoudig netwerk met een viertal servers en enkele tientallen werkstations. Een voorbeeld van een zgn switched ethernet.Tot slot. Binnen de huidige markt vinden we meer en meer zogenaamde level 3 switches, die feitelijk geen bridging functie vervullen maar routeren. Afhankelijk van de invulling van de leverancier komen we hier echter ook halve routers tegen, die i.p.v. mac adressen bij IP de IP adressen cachen. Tot zover de inleidende cursus IP. |