Nettverk og kommunikasjon
feltet for nettverk og kommunikasjon inkluderer analyse, design, implementering og bruk av lokale, brede og mobile nettverk som knytter datamaskiner sammen. Internett i seg selv er et nettverk som gjør det mulig for nesten alle datamaskiner i verden å kommunisere.
et datanettverk kobler datamaskiner sammen via en kombinasjon av infrarøde lyssignaler, radiobølgeoverføringer, telefonlinjer, tv-kabler og satellittkoblinger. Utfordringen for datavitenskapere har vært å utvikle protokoller (standardiserte regler for format og utveksling av meldinger) som gjør at prosesser som kjører på vertsdatamaskiner, kan tolke signalene de mottar og engasjere seg i meningsfulle “samtaler” for å utføre oppgaver på vegne av brukere. Nettverksprotokoller inkluderer også flytkontroll, som holder en dataavsender fra å svømme en mottaker med meldinger som den ikke har tid til å behandle eller plass til å lagre, og feilkontroll, som innebærer overføringsfeildeteksjon og automatisk videresending av meldinger for å rette opp slike feil. (For noen av de tekniske detaljene for feildeteksjon og korreksjon, se informasjonsteori.)
standardisering av protokoller er en internasjonal innsats. Siden det ellers ville være umulig for forskjellige typer maskiner og operativsystemer å kommunisere med hverandre, har nøkkelproblemet vært at systemkomponenter (datamaskiner) er “åpne”.”Denne terminologien kommer fra open systems interconnection (OSI) kommunikasjonsstandarder, etablert av International Organization For Standardization. OSI-referansemodellen angir nettverksprotokollstandarder i syv lag. Hvert lag er definert av funksjonene det er avhengig av fra laget under det og av tjenestene det gir til laget over det.
på bunnen av protokollen ligger det fysiske laget, som inneholder regler for transport av biter over en fysisk lenke. Datalinklaget håndterer “pakker” i standardstørrelse med data og legger til pålitelighet i form av feildeteksjon og strømningskontrollbiter. Nettverks-og transportlagene bryter meldinger inn i pakker med standardstørrelse og ruter dem til bestemmelsesstedet. Øktlaget støtter interaksjoner mellom applikasjoner på to kommunikasjonsmaskiner. For eksempel gir den en mekanisme for å sette inn kontrollpunkter (lagre gjeldende status for en oppgave) i en lang filoverføring, slik at i tilfelle feil må bare dataene etter det siste kontrollpunktet sendes på nytt. Presentasjonslaget er opptatt av funksjoner som koder data, slik at heterogene systemer kan engasjere seg i meningsfull kommunikasjon. På høyeste nivå er protokoller som støtter bestemte applikasjoner. Et eksempel på et slikt program er file transfer protocol (FTP), som styrer overføring av filer fra en vert til en annen.
utviklingen av nettverk og kommunikasjonsprotokoller har også skapt distribuerte systemer, hvor datamaskiner koblet i et nettverk deler data og prosesseringsoppgaver. Et distribuert databasesystem har for eksempel en database spredt mellom (eller replikert på) forskjellige nettverkssider. Data replikeres på “speilsteder”, og replikering kan forbedre tilgjengeligheten og påliteligheten. En distribuert DBMS administrerer en database med komponenter som er fordelt på flere datamaskiner på et nettverk.
et klient-servernettverk er et distribuert system der databasen ligger på en datamaskin (serveren) og brukerne kobler til denne datamaskinen via nettverket fra sine egne datamaskiner (klientene). Serveren gir data og svarer på forespørsler fra hver klient, mens hver klient får tilgang til dataene på serveren på en måte som er uavhengig og uvitende om tilstedeværelsen av andre klienter som får tilgang til samme database. Klient-server-systemer krever at individuelle handlinger fra flere klienter til samme del av serverens database synkroniseres, slik at konflikter løses på en rimelig måte. For eksempel implementeres flyselskapsbestillinger ved hjelp av en klient-servermodell. Serveren inneholder alle data om kommende flyreiser, for eksempel nåværende bestillinger og setetildelinger. Hver klient ønsker å få tilgang til disse dataene med det formål å bestille en flytur, få et seteoppdrag og betale for flyet. Under denne prosessen er det sannsynlig at to eller flere klientforespørsler vil ha tilgang til samme fly, og at det bare er ett sete igjen som skal tildeles. Programvaren må synkronisere disse to forespørslene slik at det gjenværende setet tildeles på en rasjonell måte (vanligvis til personen som gjorde forespørselen først).
en annen populær type distribuert system er peer-to-peer-nettverket. I motsetning til klient-server-nettverk antar et peer-to-peer-nettverk at hver datamaskin (bruker) som er koblet til den, kan fungere både som en klient og som en server; dermed er alle på nettverket en peer. Denne strategien er fornuftig for grupper som deler lydsamlinger på Internett og for å organisere sosiale nettverk som LinkedIn og Facebook. Hver person som er koblet til et slikt nettverk, mottar både informasjon fra andre og deler sin egen informasjon med andre.