Viktige nettverksprotokoller.

Written by vidarlo on 20080426 in Norsk and software and tutorials with 2 comments.

Som ein liten fortsettelse pÃ¥ Intro om nettverk kjem det her ein liten intro om det eg meiner er viktige protokoller… Om folk er einige eller ikkje bryr ikkje meg 😉

DHCP

Transportprotkoll: UDP.
Standard port: 67 for server, 68 for klient.

DHCP er ein protokoll for automagisk konfigurasjon av IP-adresser, nettmaske, gateway og ein del andre parametrar i eit nettverk. DHCP består av ein DHCP-server, og klienter. DHCP er ein ikkje-rutbar protokoll, så om ein vil ha ein DHCP-server felles for fleire nett må ein i tillegg ha ein spesiell type DHCP-server, såkalla DHCP relays.

DHCP er ein relativt enkel protokoll, som ikkje går over IP (naturleg nok, sidan IP krever ei IP-adresse). Når ein host vil ha info via DHCP sender den ut ein DHCP Discovery-pakke, som broadcast. Det vil sei at alle maskiner på nettet vil motta den, men kun DHCP-servarar vil svare på den. Alle DHCP-servarar som mottek den vil sende eit svar. Dette går også som broadcast. Imidlertid vil kun den serveren som sendte svar først bli brukt, resten av svara vil bli forkasta av klienten. For nøyaktig beskrivelse av discovery-prosessen er wikipedia om DHCP anbefalt lesning.

DHCP-serveren vil typisk gi klienten nettverksadresse, IP-adresse, broadcast, nettmaske og DNS-server. I tillegg kan den gi info om boot-tenarar, nytta for tynnklienter, dato, wins-tenarar m.m. For full oversikt over DHCP-options er IANA sin dokumentasjon gull verdt.

HTTP / WWW

Transportprotkoll: TCP.
Standard port: 80

HTTP er kanskje ein av dei fÃ¥ protokollane folk faktisk har eit forhold til, ettersom folk flest ser http://… i adressefeltet i nettlesaren dagleg. Men kor mange tenkjer over kva det faktisk er… HTTP, Hyper Text Transfer Protocol, er ein svært enkel, tilstandslaus protokoll. Med tilstandslaus meiner en at protokollen i seg sjølv ikkje tar vare pÃ¥ informasjon om kva som har skjedd tidlegare frÃ¥ samme klient.

HTTP nyttar rein ASCII for requests, og ein typisk HTTP-request ser slik ut:

GET / HTTP/1.1
Host: www.bitsex.net

HTTP/1.1 200 OK
Date: Sat, 26 Apr 2008 15:31:22 GMT
Server: Apache/2.2.8 (Unix) PHP/5.2.5 mod_perl/2.0.4 Perl/v5.8.8
X-Powered-By: PHP/5.2.5
X-Pingback: http://bitsex.net/xmlrpc.php
Transfer-Encoding: chunked
Content-Type: text/html; charset=
X-Pad: avoid browser bug

297b

Først sender klienten sin request, som kan vere ein av dei typane som er lagde fram i RFC2616. Dei to mest brukte er GET og POST. Get er for å hente innhald frå tenaren, post for å sende innhald til tenaren. Etter at klienten har sendt sin request, og alle sine headers, sender den ei blank linje. Blank linje vil sei at serveren skal begynne å behandle requesten. Tenaren sender så protokollinfo og statuskode, HTTP/1.1 200 OK, som forklarer at den vil svare med protokollen HTTP/1.1, og statuskoden 200 OK, som faktisk bare betyr OK. Deretter kjem div. headers, som har varierande meining. X-* headers er ikkje offisielle HTTP-headers, og blir nytta til meir eller mindre tilfeldige føremål. Etter headers kjem ei blank linje, og deretter kjem innhaldet av fila, /, vi etterspurte.

Som du ser er HTTP rimelig enkel protokoll, som er lett å nytte seg av. Om du vil prøve, kan du nytte telnetklienten som er i dei fleste OS, eller laste ned netcat og nytte det. Opprett tilkopling mot port 80 på den sida du vil teste mot, og skriv noko liknande det i eksempelet. Bytt gjerne ut / med eit anna filnamn.

FTP

Transportprotkoll: TCP.
Standard port: 21

FTP er en eldgammel, arkaisk, protokoll fra tidlig 80-tal. Protokollen var laga for grunnleggande filoverføringer, og er i motsetning til HTTP ikkje tilstandslaus. Den støttar også enkel autentisering, haken der er at passordet går i klartekst, og kan sniffast av alle som har tilgang til nettverkseiningar langs path.

FTP har ein kontrollkanal, og ein eller fleire datakaneler. Kontrollkanalen blir brukt til å formidle kommandoar og statusrapport mellom klient og tenar, og blir oppretta når klienten koplar seg til port 21 på FTP-tenaren. Datakanalane blir brukt til å transportere filer og kataloglister mellom server og klient, og blir oppretta ved behov. Det finst to FTP-modusar: Aktiv og passiv modus. I aktiv modus opprettar klienten ein socket på ein dynamisk port, formidlar portnummer via kontrollkanalen, og venter på at tenaren skal kople seg til den porten. Etterkvart som fleire og fleire eininger vart plassert bak NAT og brannmurar fungerte dette dårlig, og ein kom opp med passiv FTP, der klienten er passiv. I passiv FTP opprettar serveren ein socket på ein dynamisk port, og gir beskjed til klienten om kva port den lyttar på.

DNS

Transportprotkoll: UDP og TCP.
Standard port: 53

DNS er protokollen som utfører oppslag av domenenamn. Når du taster inn www.bitsex.net i nettlesaren din, så slår nettlesaren opp kva IP www.bitsex.net har. Den får så et svar som inneheld IPen. DNS er en av dei få hierkaiske systema på Internet, og grunnen er enkel: det må ha ei sentral styring for å unngå vill-vesttilstander på nettet. Det er ikkje et hieraki nedfelt i lov, men i praksis. Øvst har ein 13 rot-DNS-tenarar, plassert rundt om i verden. Dei held styr på kven som har namnetenarar for dei ulike TLD i verden. Om du spør etter www.bitsex.net, vil forespørselen først bli sendt til ein av dei 13 rot-tenarane. Dei vil så svare at .net har den navneserveren. Din lokale DNS-server vil så spørje den nye serveren den fikk beskjed om, og slik vil det fortsettje inntil den har funne ein som svarer autorativt på at www.bitsex.net har IPen 83.149.117.6.

DNS blir transportert over både UDP og TCP, men UDP er den dominerande protokollen for DNS. DNS er ein av dei viktigaste protokollane, samtidig som det er ein protokoll svært få tenkjer på . Ein av dei mest brukte tenarane for DNS er Berkley Internet Name Daemon, BIND.

SSH / SCP / SFTP

Transportprotkoll: TCP.
Standard port: 22 for alle delar av suita.

SSH er ein protokoll som var designa for å gi eit sikkert alternativ til den aldrande rsh-protokollsuita, ei protokollsuite for fjerninnlogging mot UNIX-maskiner over internett. ssh er meir eller mindre drop in replacement for rsh, og scp for rcp. ssh-suita nyttar sterk kryptografi for å transportere passord trygt via åpne nett, og støttar ulike autentiseringsløysinger. Ei av dei meir populære er kryptografiske nøkler, som gjev passordlaus fjerninnlogging, som like fullt er trygg. ssh er i hovudsak nytta i UNIX/Linux-verda, sidan windows ikkje har lagt mykje vekt på eit godt shell. Om du som windowsbrukar støyter på dette, er putty ein av dei betre ssh-klientar for windows. På Mac og *nix er ssh stortsett alltid installert, så det er nok å fyre opp ein terminal og skrive ssh user@host.

SCP og SFTP er to andre protokollar i ssh-suita, som også bruker sterk kryptografi for autentisering. Medan ssh er laga for fjerninnlogging er scp laga for sikker kopiering av filer mellom ulike maskiner, og sftp som eit sikkert alternativ til FTP. For windows er ein av dei meir kjende sftp/scp-klientane WinSCP, som er gratis.

2 Responses to “Viktige nettverksprotokoller.

  1. Bra remse. 🙂

    Kan vanskelig si meg uenig i at disse, pÃ¥ ulike nivÃ¥, er viktige. – Ev. kritikk mÃ¥tte vel i sÃ¥-fall komme fra en kommentator som baserer sine tilbakemeldinger enten pÃ¥ “to-Yoghurtbeger-og-et-snøre” protokollen, eller ev. “Dueprotokollen,” (..sistnevnte er muligens en ‘legitim’ protokoll, [RFC 1149,] og hvem det mÃ¥tte være mÃ¥tte vel derfor bøye seg i støvet, da den sikkert er inbefattet av din liste og derfor nødvendig for Ã¥ i det hele tatt kunne legge inn en kommentar..)