In dit hoofdstuk komen de beginselen van netwerken en TCP/IP aan bod. Omdat enige kennis van TCP/IP onontbeerlijk is om een aantal concepten in Linux te begrijpen en ook omdat het gewoon erg handig om inzicht te hebben in het hoe en waarom van netwerkcommunicatie, wordt hier kort ingegaan op het gebruik van TCP/IP. Het is belangrijk om hierin enig inzicht te hebben om een beter begrip te krijgen van enkele onderwerpen die later aan bod komen in deze cursus, zoals hoe je een webserver en bestandsdeling in Linux kunt gebruiken. Veel zaken in Linux hangen erg nauw samen met dit netwerkprotocol. Het legt uit wat nodig is om een computer met andere computers te laten praten in een netwerk, en hoe je de netwerkkaart in Linux goed instelt.
Computers communiceren tegenwoordig allemaal met elkaar. Het TCP/IP netwerkprotocol is een afspraak volgens welke verschillende typen computers met elkaar communiceren en het is de defacto standaard voor communicatie met het internet. De grote kracht van TCP/IP en de reden waarom TCP/IP een defacto standaard is geworden, is dat het merk en typeonafhankelijk is. Dit is dan ook een groot voordeel van het TCP/IP protocol. Het maakt het mogelijk dat totaal verschillende typen computers met diverse processors en met totaal verschillende besturingssystemen toch met elkaar kunnen communiceren. Bijna alle computers tegenwoordig gebruiken TCP/IP om een verbinding te leggen met andere computers, op het internet of in het lokale netwerk.
Bijna alle communicatie van een computer met andere computers is op te vatten als een client-serververbinding. Hierbij wordt de client gedefinieerd als de vragende computer, en de server als de antwoordende computer. Een simpel voorbeeld is de webserver, die aanvragen voor een webpagina van een client ontvangt en een antwoord hierop terugstuurt.
Het netwerk kun je opvatten als een verzameling computers die met elkaar kunnen praten. Wat nodig is om twee of meer computers met elkaar te laten communiceren is:
De unieke identificatie van elke computer bestaat uit een nummer: dit is het IP-adres. Doordat elke computer een uniek nummer heeft, weet de client hoe het een pakket stuurt dat is geadresseert aan de server.
Een ip-adres volgens de oorspronkelijke definitie is altijd 32 bits groot. (Ik bespreek hier alleen IPv4 en laat de opvolger van hiervan, IPv6 voor het gemak buiten beschouwing). Omdat het niet erg handig is om adressen in binaire vorm te noteren, gebruikt met een decimale schrijfwijze, waarbij het adres wordt opgesplitst in 4 groepjes van 8 bits , octetten genaamd. Met noteert een punt tussen de octetten. Zo komt met op een schrijfwijze zoals bijvoorbeeld 172.18.0.94 . Elk octet staat voor 8 bits, en kan daarom nooit hoger zijn dan 2^8 = 256. De adressen tellen vanaf 0 en de hoogste waarde is daarom 255.
| ip-adres |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 0 | =10.0.0.80 |
Een ip-adres is op te delen in twee delen:
Welk deel van die 32 bits het netwerkadres vormt en welk deel het nodeadres, wordt nu aangegeven met de netmask. Dit is een getal in dezelfde vorm als het ip-adres, maar dit geeft met hoge bits aan welk deel het netwerkadres vorm. In principe kan het netwerkadres elk aantal bits tussen 0 en 32 bevatten, maar vaak komen 255.255.255.0 en 255.255.0.0 voor. In de bijgaande tabel is
| ip-adres |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 0 | =10.0.0.80 |
| netmask |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | 0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
=255.255.0.0 |
Een computer kan alleen praten met een andere computer in een netwerk wanneer aan twee voorwaarden is voldaan:
In het algemeen gaat het instellen van Linux voor een internetverbinding heel makkelijk met het Mandrake Configuratiecentrum. Als er een ADSL-modem of iets dergelijk aanwezig is dat via een ethernetkabel is verbonden, dan is meestal het enige dat nodig is de netwerkadapter in DHCP mode te zetten en dan wordt alles vanzelf goed ingesteld. Het wordt iets anders wanneer er een kabelmodem of ADSL-modem aanwezig is, met een USB-verbinding. In dit geval is het zaak om het modem in te stellen, alsof het een randapparaat is, en heb je eigenlijk direct toegang tot het internet. In het laatste geval heb je eigenlijk niet een netwerkverbinding maar een modemverbinding. Hoe dat moet is voor elk modem anders en daarvoor is geen eenduidige beschrijving te geven hoe dat moet. Dat laat ik daarom buiten beschouwing.
Voor een netwerkadapter zijn 3 gegevens nodig om de computer aan een netwerk aan te sluiten:
In de configuratie van de netwerkadapter is te kiezen hoe de netwerkadapter moet worden ingesteld, bijvoorbeeld in Gconf of Drakx:
In de meeste gevallen is DHCP aan te raden voor gewone computers, want dit is erg makkelijk. Nadeel is dat je van te voren nooit weet welk adres een computer krijgt en bovendien kan het adres ook wel wijzigen. Wanneer je een server hebt, dan moet die daarom altijd op een statisch adres worden ingesteld.
Wanneer een netwerkkaart goed ingesteld is, is het mogelijk om je computer te laten praten met andere computers op hetzelfde netwerk. Wanneer je nog niet weet op welke manier je de computer wilt laten praten, dan kun je eenvoudig de verbinding testen. De manier om dit te doen is door het commando ping te gebruiken. Ping controleert de verbinding door een iets naar een adres te sturen en te kijken of er een antwoord wordt ontvangen. Door daarbij een ip-adres van een andere computer te geven, kun je controleren of jouw computer op een heel basaal niveau kan communiceren met een andere computer. Zo kun je erachter komen of de instelling van de netwerkkaart, ip-adres, en netmask goed zijn. Ook is dit een goede manier om te controleren of het fysieke netwerk functioneel is, en dat er niet bijvoorbeeld een stekker ingeplugd is en de kabel verbonden. Ping kun je uitsluitend als root doen.
Door te pingen naar het localhost adres kun je controleren of de netwerkprotocollen goed werken. Dit is de eerste stap. Het localhost adres ofwel 127.0.0.1 is een gereserveerd adres, dat de eigen netwerkkaart aanduidt. Door te pingen naar dit adres , kun je controleren dat de verbinding tot aan jouw netwerkadapter goed werkt. Je test eigenlijk alles totaan het stekkertje van de kabel maar niet verder.
# ping 127.0.0.1
Als alles goed werkt, dan geeft ping elke seconde een boodschap dat er een antwoord wordt ontvangen. Druk op Ctrl-C om dit te onderbreken.
(NOOT: dit werkt niet op laptop Mandrake 10.1 ?? hangt waarschijnlijk samen met security instellingen: d.w.z. computer is ingesteld om niet te antwoorden op pings, ook niet vanaf eigen machine)
Je kunt de verbinding verder testen, door te kijken of je antwoord ontvangt van een andere computer. Gebruik het adres van een andere computer of van de gateway.
# ping 10.0.0.138
PING 10.0.0.138 (10.0.0.138) 56(84) bytes of data.
64 bytes from 10.0.0.138: icmp_seq=1 ttl=64 time=0.356 ms
64 bytes from 10.0.0.138: icmp_seq=2 ttl=64 time=0.321 ms
64 bytes from 10.0.0.138: icmp_seq=3 ttl=64 time=0.301 ms
64 bytes from 10.0.0.138: icmp_seq=4 ttl=64 time=0.312 ms
64 bytes from 10.0.0.138: icmp_seq=5 ttl=64 time=0.305 ms
Terwijl er elke seconden een pakketje gezonden wordt naar het opgegeven adres, wordt ook een pakketje ontvangen en de tijd dat er gewacht werd op het antwoord wordt afgedrukt op het scherm. Dit gaat eindeloos door totdat je het commando afbreekt met de toetscombinatie Ctrl-C . Hierna geeft ping nog een samenvatting.
--- 10.0.0.138 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.301/0.319/0.356/0.019 ms
Zoals hierboven staat aangegeven is voor elk van de uitgezonden packets ook een packet ontvangen. Bovendien is aangegeven dat er 0% loss is. Hieruit mag je veilig concluderen dat er een verbinding kan worden opgebouwd met het apparaat, en dat aan alle voorwaarden is voldaan om communicatie te laten plaatsvinden.
Het instellen van netwerkinstellingen gaat het makkelijk met de grafische tools. Dit kun je doen door het Configuratiecentrum te starten en dan naar het tabblad Netwerk.

Dubbelklik op icoon Verbindingen beheren. Hierin kun je instellingen wijzigen voor de netwerkkaart.
Om zelf een netwerkadres met de hand in te stellen, ga als volgt te werk.
kies Protocol statisch. Hierna krijg je de mogelijkheid om zelf IP-adres , netmasker en gateway adres in te stellen.

Let wel op. De hier getoonde waarden hoeven niet correct te zijn in het netwerk.

# ifconfig
geeft informatie over netwerkadapters en ip-adressen.
# ifconfig --help
geeft informatie over hoe het commando kan worden gebruikt.
# ifconfig eth0
geeft informatie over of definieert instellingen van de eerste ethernetadapter /dev/eth0
Usage:
ifconfig [-a] [-i] [-v] [-s] <interface> [[<AF>] <address>]
[add <address>[/<prefixlen>]]
[del <address>[/<prefixlen>]]
[[-]broadcast [<address>]] [[-]pointopoint [<address>]]
[netmask <address>] [dstaddr <address>] [tunnel <address>]
[outfill <NN>] [keepalive <NN>]
[hw <HW> <address>] [metric <NN>] [mtu <NN>]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc]
[mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]
[txqueuelen <NN>]
[[-]dynamic]
[up|down] ...
<HW>=Hardware Type.
List of possible hardware types:
loop (Local Loopback) slip (Serial Line IP) cslip (VJ Serial Line IP)
slip6 (6-bit Serial Line IP) cslip6 (VJ 6-bit Serial Line IP) adaptive (Adaptive Serial Line IP)
strip (Metricom Starmode IP) ash (Ash) ether (Ethernet)
tr (16/4 Mbps Token Ring) tr (16/4 Mbps Token Ring (New)) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) rose (AMPR ROSE) tunnel (IPIP Tunnel)
ppp (Point-to-Point Protocol) hdlc ((Cisco)-HDLC) lapb (LAPB)
arcnet (ARCnet) dlci (Frame Relay DLCI) frad (Frame Relay Access Device)
sit (IPv6-in-IPv4) fddi (Fiber Distributed Data Interface) hippi (HIPPI)
irda (IrLAP) ec (Econet) x25 (generic X.25)
<AF>=Address family. Default: inet
List of possible address families:
unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6)
ax25 (AMPR AX.25) netrom (AMPR NET/ROM) rose (AMPR ROSE)
ipx (Novell IPX) ddp (Appletalk DDP) ec (Econet)
ash (Ash) x25 (CCITT X.25)
dus
# ifconfig eth0 10.0.0.90 netmask 255.255.0.0 broadcast 10.0.255.255
stelt eth0 in op adres 10.0.0.90 met netmask 255.255.0.0 en juiste
broadcast adres. Dit broadcast adres moet worden gegeven, anders is het
mogelijk
verkeerd.
Gebruik ping om te testen of er een netwerkverbinding mogelijk is met
een andere computer of apparaat.
# ping 10.0.0.138
route add -net 10.0.0.0/16 gw 10.0.0.138