Tietokoneverkot
CSE-C2400 Tietokoneverkot (5 op) 2015
Sanna Suoranta
CSE-C2400 Tietokoneverkot cse-c2400@aalto.fi
Sanna Suoranta
sanna.suoranta@aalto.fi Tietokoneverkot 2015
Sisältöä adaptoitu seuraavista lähteistä: J.F. Kurose and K.W. Ross: Computer Networking: A Top-Down Approach 6th ed. -kirjan lisämateriaali, T. Lindholm, S. Tarkoma: Johdatus tietotekniikkaan-kurssin Sovelluskerros-luennon materiaali,
S. Sorvakko: Tietokoneverkot-kurssin Network Programming-luennon materiaali, M. Siekkinen Tietokoneverkot-kurssin Sovellukset (osa 2) –luennon materiaali
Tämä luento
• Käytännön asiat ja kurssin suorittaminen
• Kokonaiskuva, esimerkkinä sähköposti
• Verkko-ohjelmointi soketeilla lyhyesti
13.1.2015
“Mitä jokaisen DI:n tulee tietää verkoista”
osaat selittää
• tietoverkkojen peruskäsitteet ja termit (sekä lyhenteet)
• miten tietoverkon protokollat vuorovaikuttavat keskenään sekä miten tärkeimmät sovellusprotokollat toimivat
• kerrosmallin toiminnot ja palvelut sekä miten TCP/IP- protokollat toteuttavat mallin
• ja analysoida verkon ongelmatilanteita
osaat suunnitella ja toteuttaa verkkosovelluksen sekä arvioida sen toimintaa ja rajoituksia sekä pystyt arvioimaan
langattoman ja mobiilin tiedonsiirron vaikutuksia sovellusten toteuttamiseen ja toimintaan
tunnet ja osaat käyttää verkon analysointityökaluja paikallisverkossa (intranet) ja Internetissä
osaat suunnitella ja konfiguroida toimivan paikallisverkon sekä osaat laskea ja arvioida verkon suorituskykyä ja ehdottaa parannuksia
13.1.2015
Yleistä
• Esitiedot:
– ICS-A1120 Ohjelmointi 2 (eli pari kurssia ohjelmintia) ja – CSE-A1140 Tietorakenteet ja algoritmit
– (tai vastaavat vanhat kurssit)
• Korvaa kurssin
– T-110.2100 Johdatus tietoliikenteeseen tai
– T-110.1100 Johdatus tietoliikenteeseen ja multimediaan
• Aiemmasta poiketen sisältää myös ohjelmointia!
– C-kieli
– Koska tämä on ainoa tietoliikenteen kurssi nykyisin
13.1.2015
Käytännön asioita
• Ilmoittaudu TÄNÄÄN (13.1.2015) oodissa!
• Ajantasaisin tieto Nopassa, TARKISTA kaikki sieltä
• Sähköpostiosoite: cse-c2400@aalto.fi
– Henkilökohtaiset kysymykset tänne
• IRC: !verkot IRCnetissä
– Assarit ovat usein tavoitettavissa ircitse; assareiden vastaanotto – Vapaata keskustelua aiheesta ja aiheen vierestä
• Assaripäivystys Paniikki-luokassa (tiistaisin klo 14-16)
13.1.2015
Henkilökunta
• Vastaavat opettajat:
– TkL Sanna Suoranta
– TkT Matti Siekkinen (kaksi luentoa, ei muuta)
• Kurssin assarit:
– Kimmo Ahokas – Rasmus Eskola – Essi Jukkala – Markus Palonen – Atte Seppälä – Päivi Tynninen
• Lähetä sähköpostisi käyttäen kurssin osoitetta cse- c2400@aalto.fi, älä suoraan meistä kenellekään!
13.1.2015
Oppimateriaali
• Kurssin kirja: James F. Kurose, Keith W. Ross.
Computer Networksing, A Top-Down Approach, 6th edition, 2013
– kirjastossa myös sähköisenä
• Luennot ja luentokalvot kertovat vain osan aihealueesta
• Mahdollisesti muuta lisämateriaalia nopassa
13.1.2015
Osasuoritukset ja arvostelu
• Pakolliset osasuoritukset
– Kaksi osatenttiä, kumpikin 40% kurssin arvosanasta – Harjoitustyö, kaksi osaa, 20% kurssin arvosanasta – Kurssipalaute, pakollinen, ei lisäpisteitä
• Lisäksi
– Neljä harjoitustehtävää, kaksi kummankin puoliskon aihealueista – Kustakin harjoitustehtävästä voi saada max kolme tenttipistettä
aihealueen hyväksytysti suoritetun osatentin pisteiden päälle keväällä 2015 (huom: ei enää syksyn tentteihin, eikä 17.2.
olevan tentin toiseen osatenttiin)
– Eli hyväksytysti suoritettuun osatenttiin voi saada max 6 pistettä lisää tekemällä kaksi ko osatentin aihealueen kotitehtävää
(arvosana 1 voi nousta kahdella, ja arvosanat 2-4 yhdellä)
13.1.2015
Osasuoritukset ja arvostelu
13.1.2015
40%
1. osatentti Min 15 p Max 30 p ja hyväksyttyyn
max.
+3p kotitehtävä 1 +3p kotitehtävä 2
40%
2. osatentti Min 15 p Max 30 p
ja hyväksyyttyyn max.
+3p kotitehtävä 3 +3p kotitehtävä 4
20%
Harjoitustyö osa 1:
min 1p, max 5p osa 2:
min 1p, max 5p as= (osa1+osa2)/2 Arvosanarajat tentissä: 0-14=0, 15-17=1,
18-20=2 21-24=3, 25-27=4 ja 28-30=5
Luennot
tiistaisin 10-12 T2-salissa
pvm I osatentin alue lu- ku 13.1. Yleiskuva (Sanna) 1,2 20.1. Sovellukset 1(Sanna) 2 27.1. Sovellukset 2 (Sanna 2 3.2. Kuljetuskerros I (Matti) 3 10.2. Kuljetuskerros II (Matti) 3, 7
pvm II osatentin alue lu- ku 25.2. Internet-protokolla
(Sanna)
4 3.3. Reititys (Sanna) 4 10.3. Linkkikerros,
Ethernet,WAN (Sanna) 5 17.3. Verkon suunnittelu ja
ylläpito (J. Kotimäki)
9 24.3. Langattomat verkot
(Sanna)
6 31.3. Kokonaisuus (Sanna) 7, 8
13.1.2015
Kaksi osatenttiä
• Kullakin tenttikerralla on mahdollisuus tehdä kumpi vain tai molemmat kurssin osatentit
– Ikäänkuin välikokeet, mutta useampi suoritusmahdollisuus
• Ilmoittaudu viikkoa ennen siihen osatenttiin, johon olet ensisijaisesti tulossa (mutta voi silti tehdä molemmat tai sen toisen)
• Vanhoja tenttejä nopassa
– Neljä tehtävää, joista yksi isompi essee
• Kummastakin osatentistä saa arvosanan (mukaanlukien mahd.
kotitehtävistä saadut pisteet), joka on 40% kurssin lopullisesta arvosanasta
• Tenttialueet ilmoitetaan Nopassa
• Peru tentti-ilmo oodissa/sähköpostitse, jos et tule!
– Kolme nollaa johtaa lisätehtävään, joka pitää tehdä ennen seuraavaa tenttimisyritystä
13.1.2015
Kotitehtävät
• Vapaaehtoisia, mutta saa lisäpisteitä tenttiin keväällä 2015 (ei enää syksyllä, ei ekaan 2. osatenttiin)
– Kustakin kotitehtävästä max 3 tenttipistettä
• Määräajat nopassa, samoin julkaisupäivät
• Pohjautuvat kirjan tehtäviin
– Laskutehtäviä
– Työkalutehtäviä, esim Wireshark – Sanallisia tehtäviä
13.1.2015
Harjoitustyö
• Harjoitustyössä on kaksi osaa ja esitehtävä
– Uusittu viime vuodesta – C-kielellä, tarjolla pohja
• Määräajat kellonaikoineen ja julkaisuajat nopassa
– Kolmivaiheinen esitehtävä, 1. dl pe 16.1. klo 12:00 (keskipäivä) – 9.2. klo 12:00 (keskipäivä) ensimmäinen osa
– 30.3. klo 12:00 (keskipäivä) toinen osa
13.1.2015
Harjoitustyö – kolmivaiheinen esitehtävä
13.1.2015
opiskelija henkilökunta
16.1. 12:00 kysely+aalto-tunnus
16.1. iltapäivä Niksulan luvat luodaan
ack
20.1. 12:00 log in git, lomake (kts tehtävänanto)
20.1. iltapäivä
oikeudet repoihin Noppaan: ack
23.1. 12:00 git-harjoitus-tehtävät
Versionhallinta GIT
13.1.2015
CSE-C2400 Tietokoneverkot, kevät 2015
Versionhallinta lyhyesti
• Versionhallinta on järjestelmä, joka ajan kuluessa tallentaa muutoksia tiedostoon tai joukkoon tiedostoja, jotta sinä voit palata tiettyihin versioihin myöhemmin.
• Muutokset helposti peruttavissa
• Koko historia selailtavissa
• Erittäin yleinen työkalu varsinkin ohjelmoinnissa
• Hajautettu työskentely
• Loputon määrä kilpailevia työkaluja:
• GIT, CVS, SVN, Mercurial(hg), Bazaar, Perforce….
1/13/15 17
GIT
• Ehkäpä yleisin nykyisin käytössä oleva versionhallintajärjestelmä
• Linus Torvalds kehitti ensimmäisen git-version 2005 käytettäväksi Linux-kernelin kehityksessä
• Hajautettu: Ei yhtä palvelinta jossa muutokset sijaitsevat, vaan kaikilla käyttäjillä on (lähes)täydellinen kopio koko tietovarastosta (repository)
• Erittäin monipuolinen ja moneen käyttöön sopiva työkalu
• Peruskäyttö helppoa…
• … mutta edistyneemmät operaatiot vaikeita
• Huom! Git != GitHub
1/13/15 18
Gitin peruskomennot
• git clone – Kopioi git-repo omalle koneelle
• git status – tarkasta versionhallinnan tila
• git add – lisää tiedostoja versionhallintaan
• git commit – tallenna uusi versio
• git branch – luo uusi kehityshaara (branch)
• git checkout – siirry työskentelemään toiseen haaraan tai tiettyyn versioon
• git push – työnnä muutokset palvelimelle
• git pull – hae muutokset palvelimelta
• git merge – yhdistele versioita
1/13/15 19
Gitin kolme tilaa
1/13/15 20
Perustyöskentely
1/13/15 21
Haarat (branch)
1/13/15 22
Hajautettu työskentely (yksinkertaisimmillaan)
1/13/15 23
Perustyöskentely käytännössä
1. Kopioi valmis repo itsellesi: git clone
2. Luo uusi haara omille muutoksillesi: git branch 3. Tee muutoksia
4. Lisää muutokset versionhallintaan: git add 5. Luo muutoksista uusi versio: git commit
6. Toista vaiheet 3-5 kunnes ominaisuus valmis 7. Siirry takaisin master-haaraan : git checkout 8. Yhdistä uuden haaran muutokset: git merge 9. Tarkista muutokset palvelimelta: git pull
10. Lähetä omat muutokset palvelimelle: git push 11. Toista vaiheet 2-10 seuraaville muutoksille
1/13/15 24
Git tällä kurssilla
• Ei erillistä tehtävien palautusta
• Assarit katsovat koodisi kurssin git-palvelimelta deadlinen jälkeen
• Suositeltavaa tallentaa myös keskeneräiset versiot gittiin, ei vain viimeistä versiota
• Tarkempi ohjeistus tulossa myöhemmin
• Kokeilkaa kirjautua GitLabiin osoitteessa https://git.niksula.hut.fi/
• Ei hätää vaikkei onnistuisi, tunnukset luodaan kaikille lähiaikoina
1/13/15 25
Hyödyllisiä linkkejä
• Hanki git: http://git-scm.com/downloads
• Virallinen git-kirja suomeksi: http://git-scm.com/book/fi/v1
• Ja englanniksi vähän laajemmin: http://git-scm.com/book/en/v2
• GitHubin loistava dokumentaatio: https://help.github.com/
• Interaktiivinen git-tutoriaali: https://try.github.io
• Toinen: http://gitimmersion.com/
• Interaktiivinen tutoriaali git brancheista:
http://pcottle.github.io/learnGitBranching/
• Gui-clienttejä: http://git-scm.com/downloads/guis
• Henkilökohtainen suosikki: http://www.sourcetreeapp.com/
1/13/15 26
1/13/15 27
Kysyttävää järjeste-
lyistä?
13.1.2015
Tehtävä: Piirrä Internet (tai kirjoita)
• Mitä ikinä sinulle tulee mieleen tietokoneverkosta ja Internetistä?
13.1.2015
Mikä on Internet?
• Internet on globaali verkko, jossa on tarjolla monenlaisia hajautettuja palveluita, joita voi käyttää etänä verkon yli
– Sähköposti, www, P2P, videoiden katselu (Internet-tv), tiedostojen jako, pelit, jne käyttäjälle suunnatut palvelut
– Nimipalvelu, reititys, verkonhallinta jne verkon infrastruktuurin palvelut, jotka helpottavat muiden palveluiden ja käyttäjien toimintaa
– Palveluita voi kuka tahansa kehittää lisää käyttäen hyväksi sovellusrajapintaa (engl. application programming interface, API)
• Internet-verkko on verkko, joka muodostuu useista eri tahojen operoimista verkoista
13.1.2015
Internet
do what I mean
• Alice haluaa lähettää sähköpostiviestin Bobille
13.1.2015
• Liityntäverkko on verkko, johon päätelaitteet kytkeytyvät
– Kotona, yrityksessä, kahvilassa..
• Lähiverkko (local area network, LAN) on reitittimen “takana” oleva yhtä
tekniikkaa käyttävä verkko
– Useita mahdollisia teknologioita, suosituinpia Ethernet ja WiFi
• Laitteita lähiverkossa
– Päätelaite (host, end system), palvelin – Langaton tukiasema (access point) – Kytkin (switch)
– DSL- (digital subscriber line) tai kaapelimodeemi (cable modem)
Liityntäverkko (access network)
DSL
Internet
13.1.2015
• tarjoaa yhteyttä Internetiin
– Keskuksessa asiakkaiden liikenne erotetaan toisista asiakkaista (digital subscriber line access multiplexer, DSLAM)
– Laitteen IP-osoite joko staattinen tai dynaaminen (tai piilotettu NATin taa)
• ja palveluita
– Nimipalvelu (domain name service, DNS)
– Sähköpostipalvelin – Levytilaa
Internet-palveluntarjoaja (Internet service provider, ISP)
DSL
DSLAM
Internet ISP
13.1.2015
Liityntäverkon ja lähiverkon teknologioita
• Laajakaistayhteys (broadband connection) käyttää hyväkseen olemassaolevia aikanaan lankapuhelimia varten tehtyjä kaapelointeja (kierretty pari -kaapeli)
• Kaapelimodeemiyhteys (cable modem) käyttä
hyväkseen kaapelitelevisioverkkoa (koaksiaalikaapeli)
• Lähiverkko on erikseen tietoliikennettä varten järjestetty
– Langaton lähiverkko käyttää radiotaajuuksia
– Yleisin kaapelointi on suojaamaton kierretty parikaapeli
(unshielded twisted pair, UTP) tai vastaavaa suojattu (STP) kaapeli
– Myös valokuitu (fiber optics) valtaa alaa
13.1.2015
Käsitteitä: Palvelu, protokolla ja rajapinta
• Palvelu toteuttaa jonkin (hyvin määritellyn) tehtävän
– Osa standardoitu (request for comments, RFC) IETF:ssä
• Palvelut viestivät asiakasohjelmiensa kanssa protokollan avulla
– Viesteillä on tarkkaan määritelty formaatti,
– Viestissä otsikko-osa ja varsinainen data erotetaan toisistaan – Viesteillä on käsittelyjärjestys: tiettyyn viestiin vastataan tietyllä
viestillä
• Palvelut käyttävät toisia palveluita hyväkseen rajapinnan avulla
– Sähköpostipalvelu (SMTP) käyttää hyväkseen mm. nimipalvelua (DNS) ja verkon tiedonsiirtopalvelua (TCP/IP)
– Päätelaite saa osoitteen osoitteenjakopalvelulta (DHCP)
13.1.2015
1. Alicen kone on hakenut itselleen IP-osoitteen (DHCP)
2. Sähköpostiohjelma ottaa yhteyttä sähköpostipalvelimeen ja
lähettää viestin sille (SMTP) 3. Sähköpostipalvelin selvittää
vastaanottajan osoitteen
loppuosan perusteella (DNS) vastaanottajan
sähköpostipalvelimen sijainnin (IP-osoite).
Sähköpostin lähettäminen
DSL
DSLAM
Internet
13.1.2015
SMTP DHCP
DNS
do what I mean
Kotiverkko
(reunaverkko)
Tier-3:
Asiakkaan ISP
Tier-2:
Alueellinen tai kansallinen ISP
Tier-1 ISP Internet
13.1.2015
Yliopiston verkko (reunaverkko)
…
Internet-verkko koostuu useista, yhteentoimivista verkoista
• Runkoverkko, Tier-1-operaattorit
– Välittävät toistensa liikennettä ilmaiseksi (esim valtamerten ali)
• Internet-palveluntarjoaja (internet service provider, ISP)
– Tier-2: Alueellisia/kansallisia ja
– Tier-3: asiakkaille yhteyttä myyviä ISP:tä
– Maksavat ylemmän tason operaattoreille verkkoyhteydestä – Voivat sopia keskenään liikenteen välittämisestä ilmaiseksi
• Internet exchange point, IXP
– Liikenteenvälittäjä eri verkkojen välillä (operaattoririippuvuuden purkamiseksi)
• Reunaverkko: kotiverkko, yritysverkko, langaton verkko…
– Palvelu ostetaan ISP:tä, verkon läpi ei välitetä muiden liikennettä
13.1.2015
do what I mean
Sähköpostin matka verkossa
Internet
SMTP- palvelin
SMTP
SMTP
IMAP-
protokolla
13.1.2015
Sähköposti jatkaa matkaansa verkossa
4. Viesti välitetään ISP:n sähköpostipalvelimelle SMTP- protokollaa käyttäen
5. Sähköpostipalvelin välittää viestin eteenpäin seuraavalle sähköpostipalvelimelle (SMTP)
• Kun viesti saavuttaa vastaanottajan sähköpostipalvelimen, se tallennetaan osoitteen alkuosan perusteella vastaanottajan postilaatikkoon
• Lähettäjäpalvelin tuhoaa viestin saatuaan sen eteenpäin
6. Sähköposti jää odottamaan postilaatikkoon
7. Vastaanottaja hakee viestin postilaatikostaan IMAP- protokollaa käyttäen ja lukee sen
13.1.2015
Mitä voi mennä pieleen?
13.1.2015
Häiriöt viestin kulkiessa verkossa
• Verkon laitteet aiheuttavat viipeitä
• Verkko voi ruuhkautua
• Viestit voivat kadota ja muuttua
• Pahantahtoiset tahot voivat aiheuttaa ongelmia
– Joku voi lukea viestin matkalla (sniffing)
– Joku voi naamioitua luotetuksi osapuoleksi (man-in-the-middle, MitM, tai spoofing)
– Joku voi tukkia palvelimen (denial-of-service, DoS)
– Joku voi käyttää konetta hyväkseen haittaohjelman (malware) avulla esim lähettämään spämmiä tai toimimaan osana
hajautetussa palvelunestohyökkäyksessä (DDoS)
13.1.2015
Viipeet reitittimessä ja verkossa
• Prosessointiviive: paketin otsikon tutkiminen ja päätös, mihin reitittimen rajapintaan se seuraavaksi välitetään
• Jonotusviive: paketti odottaa jonossa lähetystä (tai vastaanottoa) – jonotusviive voi vaihdella suuresti
• Lähetysviive: paketin lähettäminen linkille (paketin pituus / linkin nopeus)
• Etenemisviive: paketin matka-aika linkillä djono + dprosessi (+ djono)+ dlähetys
deteneminen
13.1.2015
Viestit voivat kadota matkalla
• Viestit matkaavat erilaisille häiriöille alttiissa verkoissa
– Muut laitteet voivat häiritä tiedonsiirtoa, kaivinkone katkoo piuhan
• Viestit voivat kadota tai muuttua linkillä (verkossa)
– Reitittimen käsittelyjonoon ei mahdu määrättömästi viestejä
– Siirtotie voi aiheuttaa virheitä – virheenkorjauksen sijaan käytetään virheiden havaitsemista ja hajonneet viestit hävitetään
• Miten epäluotettavan siirtotien varaan voi rakentaa luotettavan tiedonsiirron?
– Lisää myöhemmillä luennoilla: mm. kuittaukset ja uudelleenlähetys (kuljetuskerros), vaihtoehtoiset reitit (verkkokerros) jne
– Kullakin protokollalla on oma tehtävänsä kokonaisuudessa
13.1.2015
• Sähköpostiohjelma paketoi viestin SMTP-protokollan avulla
– Otsikko ja itse viesti erikseen
• Viesti annetaan käyttöjärjestelmän tietoliikennepinolle, joka
– avaa luotettavan tiedonsiirtoyhteyden verkon yli SMTP-palvelimelle
– kapseloi viestin TCP-tietosähkeeseen, joka puolestaan kapseloidaan IP-pakettiin, joka kapseloidaan Ethernet-kehykseen, joka
• Välitetään verkkokortin kautta piuhan toisessa päässä olevalle laitteelle
– Joka yleensä lähettää sen eteenpäin jne
Sähköpostin lähettäminen (taas)
Internet
13.1.2015
Internetin
protokollapino
Fyysinen kerros (physical) Linkkikerros (link layer) Verkkokerros (network) Kuljetuskerros (transport) Sovelluskerros (application)
Sovellukset
(viesti, message)
Päätepiste – mille sovel- lukselle päätelaitteessa?
(segmentti, segment) Päätelaite – minne Internet-verkossa?
(tietosähke, datagram) Päätelaite – mille laitteelle lähiverkossa?
(kehys, frame) Bitit piuhaan/ilmaan (fyysisenä signaalina)
13.1.2015
do what I mean
SMTP TCP
IP
Ethernet fyysinen
Ethernet F1 F2
IP
Eth Eth F2 F3
IMAP TCP
IP
Ethernet fyysinen kytkin
reititin
verkko1 verkko2
13.1.2015
SMTP IMAP TCP
IP
Ethernet fyysinen
sähköposti- palvelin
• Protokollan avulla samalla kerroksella olevat “vastinoliot”
keskustelevat keskenään
• Ohjelmistoissa/laitteissa viesti kulkee oikeastaan kaikkien kerrosten läpi, se pakataan aina alemman
kerroksen viestin sisään ja vastaanotettaessa jokainen kerros purkaa pois omat otsikkotietonsa
– Rajapinta on kerrosten välillä
• Kaikissa verkon laitteissa ei käytetä koko protokollapinoa
– (paitsi hallintarajapinnalle toki tarvitaan koko pino ;)
– Kytkimet ovat linkkikerroksen laitteita: linkeillä sama tekniikka (linkki=paikallinen verkko)
– Reitittimet ovat verkkokerroksen laitteita: linkin tekniikan voi vaihtaa verkkojen välillä
13.1.2015
Muutama sana historiasta
• 1960-luvulla kehitettiin pakettikytkentäinen tekniikka, jossa viestit lähetetään paketteina verkkoon ilman varausta
– Puheliverkot käyttävät piirikytkentäistä tekniikkaa, jossa siirtotie varataan päästä päähän yhteyttä varten (aika- tai taajuusjako)
• 1970-luvulla oli yksittäisiä erillisiä verkkoja
– TCP/IP-protokollien kehitys alkoi
• 1980-luvulla verkkoja kytkettiin yhteen
– TCP/IP valmis, sähköposti, FTP, DNS ja muita palveluita
• 1990-luvulla netin käyttö räjähti WWW:n myötä
• 2000-luvulla videot, liikkuvat päätelaitteet ja sosiaalinen media sekä pilvipalvelut ovat muuttaneet käyttöä
13.1.2015
Verkko-ohjelmointi soketeilla
• Soketti/pistoke: “ovi” sovellusprosessin ja
kuljetuskerroksen protokollan (TCP tai UDP) välissä
– Tavoite tällä kurssia on oppia ohjelmoimaan asiakas-palvelin- sovelluksia, jotka viestivät käyttäen soketteja
13.1.2015
do what I mean
sovellus prosessi kuljetus
verkko linkki fyysinen
soketti
Internet
sovellus prosessi kuljetus
verkko linkki fyysinen
sovellus- kehittäjän kontrollissa käyttö-
järjestelmä hallitsee
Sokettirajapinta (socket API)
• Sokettirajapinta eli socket API (application programming interface) on käyttöjärjestelmän tarjoama rajapinta IP- verkkoon
• Yleisin rajapinta nimeltä Berkeley sockets
– Alunperin BSD-Unixissa v. 1983
– Nykyään käytössä kaikissa käyttöjärjestelmissä
• Sisältää keskeiset funktiot, joiden avulla
sovelluskehittäjä voi toteuttaa verkon yli viestivän sovelluksen TCP:n tai UDP:n päälle
– UDP: epäluotettava datagrammipalvelu – TCP: luotettava bittivirtapalvelu
13.1.2015
Sokettiohjelmointi TCP:llä
• Asiakas ottaa yhteyttä palvelimeen
– Palvelinprosessi pitää olla valmiiksi käynnissä
– Palvelin on luonut soketin, joka vastaanottaa uuden asiakkaan
• Asiakkaan soketti muodostaa TCP yhteyden
– Sovelluskoodi spesifioi palvelimen IP-osoitteen ja TCP-porttin
• Palvelin luo yhteydenmuodostuksen aikana uuden soketin prosessille, joka palvelee kyseistä asiakasta
– Mahdollistaa usean samanaikaisen asiakkaan
– Lähettäjän IP-osoite ja porttinro erottaa asiakkaat toisistaan
• Sovelluksen näkökulmasta TCP soketti on luotettava bittivirran siirtopalvelu
2-52
Asiakas/palvelin TCP-soketit
odota saapuvaa asiakasta
connectionSocket = serverSocket.accept() luo soketti,
portti=x, saapuville asiakkaille:
serverSocket = socket()
luo soketti,
muodosta yhteys: osoite=hostid, portti=x clientSocket = socket()
palvelin (osoite
hostid)asiakas
lähetä kysely sokettiin clientSocket
lue kysely soketista connectionSocket
kirjoita vastaus sokettiin connectionSocket
TCP
yhteyden muodostus
sulje
connectionSocket
lue vastaus soketista clientSocket
sulje
clientSocket
Esimerkkisovellus: TCP-asiakas
from socket import *
serverName = ’servername’
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM) clientSocket.connect((serverName,serverPort)) sentence = raw_input(‘Input lowercase sentence:’) clientSocket.send(sentence)
modifiedSentence = clientSocket.recv(1024) print ‘From Server:’, modifiedSentence
clientSocket.close()
Python TCPClient
luo TCP soketti,
palvelimen portti 12000
Ei tarvita palvelimen nimeä/osoitetta/porttia
from socket import * serverPort = 12000
serverSocket = socket(AF_INET,SOCK_STREAM) serverSocket.bind((‘’,serverPort))
serverSocket.listen(1)
print ‘The server is ready to receive’
while 1:
connectionSocket, addr = serverSocket.accept() sentence = connectionSocket.recv(1024)
capitalizedSentence = sentence.upper()
connectionSocket.send(capitalizedSentence) connectionSocket.close()
Python TCPServer
luo TCP soketti uuden asiakkaan
vastaanottamiseksi palvelin alkaa kuunnella saapuvia TCP asiakkaita
ikuinen luuppi
palvelin blokkaa accept() funktiossa kunnes uusi
asiakas saapuu, luodaan uusi soketti palautusarvona
lue tavut soketista (muttei läh. osoitetta kuten UDP soketin kanssa)
sulje asiakkaan soketti (ei vastaanottosokettia)
Esimerkkisovellus: TCP-palvelin
Ensi viikolla: sovelluskerros
• Sovellusten tarvitsemat kuljetuskerroksen palvelut
• Käyttäjän sovellukset:
– Sähköposti: SMTP, IMAP – Web ja HTTP-protokolla
• Verkko-ohjelmien teko (lisää)
• Kahden viikon päästä
• Verkon toiminnan kannalta olennaiset sovellukset:
– Nimipalvelu DNS
• Sovellusarkkitehtuurit
13.1.2015
Lähteitä
• Kurose, Ross: Computer Networking, 2013, luku 1
• RFC:t (http://www.rfc-editor.org/rfc-index.html)
– J. Postel, Internet protocol (IP), RFC791, 1981
– J. Postel, Transmission Control Protocol (TCP), RFC793, 1981 – D.Clark et al. Towards the Future Internet Architelcure,
RFC1287, 1991
– P.V. Mockapetris. Domain names - concepts and facilities, RFC1034, 1987 ja Domain names - implementation and specification, RFC 1035, 1987
13.1.2015
Tärkeitä lyhenteitä
• IP internet protocol
• TCP transmission control protocol
• UDP user datagram protocol
• RFC request for comments
• API application programming interface
• DSL digital subscriber line
• ISP internet service provider
• LAN local area network
• FDM frequency-division multiplexing
• TDM time-division multiplexing
• IXP Internet exchange point
• SMTP simple mail transfer protocol
• DNS domain name system
• DHCP dynamic host configuration protocol
• DoS denial of service
13.1.2015
Tärkeitä termejä ja konsepteja
• Internet, palvelu (service), protokolla (protocol), rajapinta (interface), päätelaite (host, end system), palvelin (server), linkki (communication link), verkko (network), kytkin (switch), reititin (router), paketti (packet), protokolla (protocol), sovellus (application), rajapinta (interface), asiakasohjelma (client), asiakas (customer), tuottaja (provider), tier-1 ja tier-2, monikotinen (multi-home)
• Liitäntäverkko (access network), lähiverkko (LAN), laajakaistaverkko (broadband-), kaapeliverkko, fyysinen media (physical medium), pakettikytkentäinen (packet switching), piirikytkentäinen (circuit switching), aika- tai taajuusjakoinen multipleksaus (time- or frequence-division multiplexing), talleta-ja- lähetä (store and forward), Ethernet, WiFi (tai WLAN),
• Jono (queue), puskuri (buffer), viive (delay), kaistanleveys (bandwidth), katoaminen (loss), läpäisy/
suoritusteho (throughput), tiputtaminen (drop), pullonkaula (bottleneck)
• Kerrosarkkitehtuuri (layered architecture), referenssimalli (reference modell), kerros (layer), protokollapino (protocol stack), sovelluskerros (application layer), kuljetuskerros (transport layer), verkkokerros (network layer), linkkikerros (link layer), fyysinen kerros (physical layer), esitystapakerros (presentation layer), istuntokerros (session layer), kapsulointi (encapsuation), viesti (message),
sekmentti (segment), tietosähke (datagram), kehys (frame)
• Haittaohjelma (malware), palvelunestohyökkäys (denial-of-service attack), pakettien salakuuntelu (eavesdropping, packet sniffing), naamioituminen (masquerade), tunnistus (authentication)
• Historiaa ja standardeja: ARPAnet, Aloha, DARPA, IETF, ISO:n OSI-malli (ISO OSI reference model),
13.1.2015