Teoria 3

Teoria 3 osion osaamistavoitteina on ymmärtää luotettavaan tiedonsiirtoon, reititykseen sekä kanavan jakamiseen liittyvät haasteet sekä niiden toteutukseen valitut ratkaisut Internetin eri kerrosten protokollissa.

# video2019Luento11
2019 - Luento 11 kokonaisuudessaan Luento 11 (1h19m29s)
# video2018Luento11
2018 - Luento 11 kokonaisuudessaan Luento 11 (1h32m40s)

Kuljetuskerros

# v2018L11_1
2018 - Kuljetuskerros Luento 11 (2m16s)
  • TCP yhteyden muodostus ja lopetus
  • ymmärtää tilakaavion suhde protokollan toimintaan
  • Luotettava tiedonsiirto
  • Tehokas luotettava tiedonsiirto
  • TCP Vuonvalvonta
  • TCP ruuhkanhallinta

TCP tilakaavio

https://upload.wikimedia.org/wikipedia/en/5/57/Tcp_state_diagram.png

# v2018L11_2
2018 - TCP toiminta ja tilat Luento 11 (35m52s)
# t1a
# t1b
# t1c
# t3d

TCP yhteyden muodostus, lopetus sekä tilat

# videoTeoria3_1
2017 - TCP yhteyden muodostus ja lopetus Luento 11 (36m27s)

Luotettava tiedonsiirto

# v2018L11_3
2018 - Luotettavan tiedonsiirron toteutus Luento 11 (51m50s)

Luotettavan tiedonsiirtoprotokollan pitää ratkaista

# video2019Luento12
2019 - Luento 12 kokonaisuudessaan Luento 12 (1h27m33s)
# v2018L11_4
2018 - Luotettavan tiedonsiirron periaatteet Luento 11 (2m42s)
  • Kuinka toivutaan virheellisestä datapaketista?
    • Lisätään tarkistussumma
      • jotta havaitaan virheitä
    • Lisätään kontrolliviesti(t)
      • annetaan palautetta virheistä tai virheettömyydestä
  • Kuinka toivutaan virheellisestä kuittauspaketista?
    • Lähetetään paketti uudestaan
      • mutta mitä jos onkin duplikaatti?
    • Lisätään sekvenssinumerointi
      • jotta tunnistetaan duplikaattipaketit
  • Kuinka toivutaan kadonneesta data- tai kuittauspaketista?
    • Lisätään datan lähettäjälle ajastin
      • Ajastin laukeaa jos ei saada kuittausta
      • → lähetetään datapaketti uudestaan
    • Jos datapaketti oli kadonnut
      • on ongelma korjattu
    • Jos kuittauspaketti oli kadonnut
      • vastaanottaja saa duplikaatin
      • josta selvitään sekvenssinumeroinnilla
  • Kuinka toivutaan viivästyneestä kuittauspaketista?
    • Jos viive on suurempi kuin ajastimen arvo
      • tulee turha datapaketin uudelleenlähetys
    • Lähettäjä vastaanottaa duplikaattikuittauksen
      • ja luulee että data paketti on kadonnut
    • Koska kuittauspakettien duplikaatteja ei voi tunnistaa
      • lähetetään varulta datapaketti uudestaan
    • Sekvenssinumeroilla tunnistetaan datapakettien duplikaatit
    • Viive voi vaihdella paljonkin
      • tarvitaan menetelmä viiveen arvioimiseen
      • ja ajastimen arvon päivittämiseen
  • rdt 3.0 on toimiva luotettava tiedonsiirtoprotokolla, mutta hidas!!!
# videoTeoria3_2
2017 - Luotettavan tiedonsiirron perusteet Luento 11 (50m31s)

Go Back N vs. Selective repeat

# video2018Luento12
2018 - Luento 12 kokonaisuudessaan Luento 12 (1h30m8s)
# v2018L12_1
2018 - Go Back N vs. Selective repeat Luento 12 (38m50s)
# videoTeoria3_3
2017 - Go Back N vs. Selective repeat Luento 12 (42m19s)

TCP Vuonvalvonta - Flow control

# v2018L12_2
2018 - TCP vuonvalvonta Luento 12 (21m54s)
  • Vastaanottajan toimenpide
  • Vastaanottaja estää lähettäjää lähettämästä liian nopeasti
  • Mainostetaan (päivitetään) vastaanottoikkunan kokoa lähettäjälle
  • Visualizing the tcp flow control
  • TCP vuonvalvonta on eri asia kuin TCP ruuhkanhallinta - Congestion control
  • Ruuhkanhallinta on lähettäjän toimenpide, käsitellään ruuhkanhallintaa seuraavaksi
# videoTeoria3_4
2017 - TCP vuonvalvonta Luento 12 (20m10s)
# videoTeoria3_9
2017 - Vuonvalvonnan vastaanottoikkuna vs. Selective repeatin vastaanottoikkuna Luento 12 (3m31s)

TCP Ruuhkanhallinta - Slow Start

# v2018L12_3
2018 - TCP Slow Start Luento 12 (15m44s)
  • Slow Start
    • Aloitetaan lähetys hitaasti
    • Kasvatetaan nopeutta eksponentiaalisesti
    • Jos paketti katoaa (timeout)
      • lähetetään uudelleen kuittaamaton paketti
      • aloitetaan Slow Start vaiheen alusta
      • lähetysikkunan koko asetetaan alkuarvoon
        • eli tiedonsiirtonopeus pudotetaan minimiin
      • asetetaan raja-arvo puoleen saavutetusta nopeudesta
    • Jos saavutetaan raja-arvo, siirrytään Congestion Avoidance vaiheeseen
# videoTeoria3_5
2017 - TCP Slow Start Luento 12 (10m8s)

TCP Ruuhkanhallinta - Congestion Avoidance

# v2018L12_4
2018 - TCP Congestion avoidance - Ruuhkan välttäminen Luento 12 (4m0s)
  • Congestion Avoidance
    • Kasvatetaan nopeutta lineaarisesti
    • Jos paketti katoaa (timeout)
      • lähetetään uudelleen kuittaamaton paketti
      • aloitetaan Slow Start vaiheen alusta
      • lähetysikkunan koko asetetaan alkuarvoon
        • eli tiedonsiirtonopeus pudotetaan minimiin
      • asetetaan raja-arvo puoleen saavutetusta nopeudesta
# videoTeoria3_6
2017 - TCP Congestion avoidance - Ruuhkan välttäminen Luento 12 (6m0s)

TCP Ruuhkanhallinta - Fast Retransmit (TCP Tahoe)

# v2018L12_5
2018 - TCP Fast Retransmit Luento 12 (2m10s)
  • Fast Retransmit
    • Jos paketti katoaa (timeout)
      • lähetetään uudelleen kuittaamaton paketti
      • aloitetaan Slow Start vaiheen alusta
      • lähetysikkunan koko asetetaan alkuarvoon
        • eli tiedonsiirtonopeus pudotetaan minimiin
      • asetetaan raja-arvo puoleen saavutetusta nopeudesta
    • Uutta:
      • Jos vastaanotetaan 3 kpl duplikaattikuittauksia →
      • paketti oletetaan kadonneeksi →
      • toimitaan kuten paketti olisi kadonnut
        • ei tarvitse odottaa ajastinta
# videoTeoria3_7
2017 - TCP Fast Retransmit Luento 12 (7m46s)

TCP Ruuhkanhallinta - Fast Recovery (TCP Reno)

# v2018L12_6
2018 - TCP Fast Recovery ja esimerkki TCP:n ruuhkanhallinan toiminnasta Luento 12 (7m27s)
  • Fast Recovery
    • Jos paketti katoaa (timeout)
      • lähetetään uudelleen kuittaamaton paketti
      • aloitetaan Slow Start vaiheen alusta
      • lähetysikkunan koko asetetaan alkuarvoon
        • eli tiedonsiirtonopeus pudotetaan minimiin
      • asetetaan raja-arvo puoleen saavutetusta nopeudesta
    • Jos paketti oletetaan kadonneeksi (3 kpl duplikaatti ACK)
      • uudelleen lähetetään kuittaamaton paketti
      • asetetaan raja-arvo puoleen saavutetusta nopeudesta
      • Uutta:
        • aloitetaan Congestion Avoidance vaiheen alusta
        • eli tiedonsiirtonopeus puolitetaan saavutetusta nopeudesta
# videoTeoria3_8
2017 - TCP Fast Recovery Luento 12 (4m4s)

Verkkokerros (Teoria 3)

# video2019Luento13
2019 - Luento 13 kokonaisuudessaan Luento 13 (1h30m15s)
# video2018Luento13
2018 - Luento 13 kokonaisuudessaan Luento 13 (1h30m2s)
  • DHCP (Dynamic Host Configuration Protocol)
  • NAT (Network Address Translation)
  • Mobile IP vs. liikkuva kännykkä
  • Reititysprotokollat

DHCP toiminta

# v2018L13_1
2018 - DHCP:n toiminta Luento 13 (17m18s)
  • DHCP kommunikaatio, oletuksena kaikki viestit lähetetään yleislähetysosoitteeseen 255.255.255.255
    • Asiakas - DHCP palvelimen etsintä (DHCP Discover)
    • Palvelimet - IP osoitteen 'vuokra'-tarjouksia (DHCP offer)
    • Asiakas - IP osoitteen pyytäminen (DHCP request)
    • Palvelin - IP osoitteen kuittaus (DHCP acknowledgement)
  • Asiakas voi pyytää vastauksen täsmälähetyksenä, palvelimen asetuksista riippuu tuetaanko täsmälähetyksiä
  • DHCP ja DHCPv6
    • DHCP portit: 67 (palvelin), 68 (asiakas), 546 (IPv6 asiakas), 547 (IPv6 palvelin)
    • IPv6 asiakkaat luo itse IP osoitteen käyttämällä Tilatonta autokonfiguraatiota
    • DHCPv6 protokollaa voidaan (tarvittaessa) käyttää Tilattoman autokonfiguraation parametrien välittämiseen
# videoTeoria3_10a
2017 - DHCP:n toiminta Luento 13 (14m41s)
# t3a

Tehtäviä tulee myöhemmin lisää, tavoite on että kaikissa olisi (j) kohtaan asti. Aikataulusta en osaa sanoa mitään. Kaikkia kohtia ei todennäköisesti tule vuoden 2020 aikana.

22 May 20

DHCP viestit

# v2018L13_2
2018 -DHCP:n eri toimintavat visualisoituna Luento 13 (13m49s)
# videoTeoria3_10b
2017 - DHCP:n eri toimintavat visualisoituna Luento 13 (14m11s)

NAT (Network Address Translation)

# v2018L13_3
2018 - NAT:n toiminta Luento 13 (24m2s)
  • NAT (Network Address Translation) - Basic NAT
    • Reititin muuttaa lähtevien pakettien lähettäjän IP osoitteen
    • Jokainen privaatti IP:tä käyttävä laite saa oman julkisen IP osoitteen
    • Vaatii paljon IP osoitteita (ostetaan ISP:ltä)
  • Network Address and Port Translation (NAPT) - Dynamic NAT
    • Reititin muuttaa myös lähettäjän porttinumeron
    • Tällöin riittää vain yksi julkinen IP osoite
    • Yleisin versio, ja nykyään NAT-termillä yleisesti tarkoitetaan juuri NAPT:tä
  • Port Forwarding - Static NAT
    • Reititin tallentaa pysyvästi porttimuunnoksen (sallii ulkopuoliset yhteydet porttiin)
    • Käytetään kun kommunikaatio vaatii NAT:n takana olevan porttinumeron tuntemusta
# videoTeoria3_11
2017 - NAT:n toiminta Luento 13 (21m8s)
# t4a
# t4b

Ei tullut 0.1 pistettä eikä seuraavasta.

21 May 20

Silloin reititystaulussa on jotain väärin, tarkastele vielä tarkemmin pakettien osoitetietoja

22 May 20
# t4c

NAT:n hyödyt ja haitat

# v2018L13_4
2018 - NAT:n hyödyt ja haitat Luento 13 (7m15s)
  • Hyödyt
    • Säästää julkisia IPv4 osoitteita
    • Parantaa tietoturvaa
    • Sisäverkon konfiguraatiota ja osoitteita voi vapaasti muuttaa
    • Pienentää reitityksen tarvetta
  • Haitat
    • Kaikki protokollat ja sovellukset eivät toimi NAT:in läpi ilman erillisiä määrityksiä
    • NAT viivästää omalta osaltaan IPv6:een siirtymistä
    • NAT rikkoo kerrosarkkitehtuurin periaatetta
      • reitittimien ei tulisi koskea kuljetuskerrokseen
    • NAT:ista aiheutuu viivettä, prosessori- ja muistikuormaa reitittimessä
      • jokaisesta paketista pitää muuttaa osoitteita ja laskea tarkistussummia uudestaan
# videoTeoria3_12
2017 - NAT:n hyödyt ja haitat Luento 13 (8m26s)

Mobile IP

  • Termejä
    • Kotiosoite - pysyvä osoite (permanent address)
    • Kotiagentti (Home Agent, HA)
    • Vierasosoite - (Care-of-Address, CoA)
    • Vierasagentti (Foreign Agent, FA)
    • Kotisolmu - (Home Node, HN)
    • Kommunikaatiokumppani - (Correspondant Node, CN)
    • Kolmioreititys - epäsuora reititys
    • Suora reititys
# videoTeoria3_13
2017 - Mobile IP toiminta vs. matkapuhelimen liikkuvuus Luento 13 (31m57s)

Mobile IP vs. GSM puhelun reititys

# v2018L13_5
2018 - Mobile IP toiminta vs. matkapuhelimen liikkuvuus Luento 13 (26m39s)
# t5a
# t5b

Reititysalgoritmit - vertailu

# video2019Luento14
2019 - Luento 14 kokonaisuudessaan Luento 14 (1h31m19s)
# video2018Luento14
2018 - Luento 14 kokonaisuudessaan Luento 14 (1h31m36s)
# v2018L14_1
2018 - Reititysalgoritmit Luento 14 (28m51s)
Yhteystila Etäisyysvektori Polkuvektori
Algoritmi Dijkstra Bellman–Ford Ei etsitä lyhintä reittiä
Esimerkki OSPF RIP BGP
Topologia Tunnetaan koko verkon topologia Tiedetään minkä naapurin kautta kohteet saavutetaan Tiedetään polku kohdeverkkoon (ei välttämättä lyhin)
Kommunikoi kaikkien reitittimien kanssa naapuri- reitittimien kanssa naapuri-AS:n reitittimien kanssa
Päivitykset Muutosten aiheuttamat (muuttunut tieto) Periodiset (koko reititystaulu) Muutokset polussa (uusi mainos)
Käyttökohde suuri, hierarkinen verkko pieni, ei-hierarkinen verkko AS:ien välinen reititys
Laskenta-aika on kriittinen parametri Ei ole kriittinen parametri Ei ole kriittinen parametri
Ylläpito Vaati laajempaa verkkotietämystä Ei vaadi paljoa verkkotietämystä Tarvitaan tietämystä myös ISP-sopimuksista
# videoTeoria3_14
2017 - Reititysalgoritmit Luento 14 (25m8s)
# t6a
# t6b
# t6c

BGP reititystaulu

# v2018L14_2
2018 - BGP reititystaulu Luento 14 (10m50s)
  • Tietoja CIDR raportissa
  • Internetin Globaalin reititystaulun koko
    • toukokuussa 2016 on noin 600000 reittiä
    • toukokuussa 2017 on noin 650000 reittiä
    • toukokuussa 2018 on noin 720000 reittiä
    • toukokuussa 2019 on noin 780000 reittiä
      • joista reilu puolet on yhdistetty mainoksissa
  • Eli reittejä joita AS:t BGP protokollalla mainostavat toisille AS:lle
  • Reitit ovat reittejä joko IPv4 tai IPv6 verkkoihin
  • AS:n reunareitittimet ylläpitävät BGP reititystaulua
    • mainostavat naapureilleen tuntemiaan reittejä
    • päivittävät oman taulunsa naapureiden mainosten ja oman politiikkansa mukaan
  • AS:n muut reitittimet hoitavat AS:n sisäistä reititystä
# videoTeoria3_15
2017 - BGP reititys Luento 14 (5m58s)
BGP reititystaulun koko
BGP reititystaulun koko

Reititysalgoritmit

# v2018L14_3
2018 - Yhteystila-algoritmi Luento 14 (11m11s)
# v2018L14_4
2018 - Etäisyysvektorialgoritmi Luento 14 (7m58s)
# videoTeoria3_167
2017 - Dijikstran algoritmi ja toiminta Luento 14 (5m56s)

Reititysalgoritmien animaatioita

# v2018L14_5
2018 - Reititysalgoritmien visualisointia Luento 14 (12m53s)
# videoTeoria3_16
2017 - Reitityksen visualisointeja Luento 14 (26m24s)

Linkkikerros (Teoria 3)

# video2019Luento15
2019 - Luento 15 kokonaisuudessaan Luento 15 (1h31m54s)
  • Keskitin vs. kytkin vs. reititin
  • ARP ja MAC osoitteet
  • Ethernet CSMA/CD ja WLAN CSMA/CA
  • Virheen havaitseminen ja korjaus

Ethernet keskitin (tai eng. hub)

# v2018L14_6
2018 - Keskitin on fyysisen kerroksen laite Luento 14 (3m50s)

Luennolla on käytetty CORE reititys emulaattoria. Opettaja esimerkkinä käyttämä verkko:

  • Keskitin on Fyysisen kerroksen laite
    • Käytetään yhdistämään useampia laitteita reitittimeen
    • Läpinäkyvä - tietokoneet tai reitittimet eivät näe keskitintä
    • forwardoi Ethernet kehyksiä, kaikkiin liityntöihin
    • Laitteet sijaitsevat samassa törmäysalueessa
  • Myös Toistin (eng. repeater) on fyysisen kerroksen laite
    • Käytetään pidentämään laitteiden välistä etäisyyttä
    • Läpinäkyvä - tietokoneet tai reitittimet eivät näe toistinta
    • Vahvistaa heikentynyttä signaalia pitkillä kaapeliväleillä (tai myös langattomasti)
  • Sekä keskitin että toistin ovat pääosin poistuneet käytöstä ja IEEE:n Ethernet standardi on määritellyt ne vanhentuneeksi verkkosegmenttien yhdistämiseen
    • Keskittimelle on vielä muutama käyttökohde, esimerkiksi pakettien kaappaaminen saman verkon laitteista
# videoTeoria3_18
2017 - Keskittimen toiminta Luento 14 (4m41s)

Ethernet kytkin

# v2018L14_7
2018 - Kytkin on linkkikerroksen laite Luento 14 (6m24s)
  • Linkkikerroksen laite
    • Käytetään yhdistämään useampia laitteita reitittimeen
    • Läpinäkyvä - tietokoneet tai reitittimet eivät näe kytkintä
    • tallentaa ja forwardoi Ethernet kehyksiä
    • Tutkii saapuvan paketin MAC osoitteita
    • Kytkimet oppivat itse MAC osoitteiden sijainnin
    • Laitteet sijaitsevat eri törmäysalueissa
      • sen jälkeen kun kytkin on oppinut laitteiden sijainnin
    • Viisaampi laite kuin keskitin
# videoTeoria3_19
2017 - Kytkimen toiminta Luento 14 (2m49s)

Reititin vs. kytkin vs. keskitin

# v2018L14_8
2018 - Verkkolaitteiden vertailua Luento 14 (3m12s)
  • Reititin - Router
    • Verkkokerroksen laite
    • Välittää paketteja verkkokerroksen osoitteen perusteella
    • Tarvitsee reititysprotokollia osoitteiden sijaintien oppimiseen, tai asetukset tehdään manuaalisesti
  • Kytkin - Switch
    • Linkkikerroksen laite
    • Välittää paketteja linkkikerroksen osoitteen perusteella
    • Oppii itse osoitteiden sijainnin lähetettyjen pakettien perusteella
    • Silta - Bridge: muuten samanlainen mutta liityntöihin kytketään kokonaisia verkkoja. Ei juurikaan käytetä enää
  • Keskitin - Hub
    • Fyysisen kerroksen laite
    • Välittää paketteja jokaiseen linkkiin (fyysiselle siirtotielle) riippumatta osoitteesta
    • Toistin - Repeater: Vahvistaa fyysisen kerroksen signaalia ja välittää sen eteenpäin
# videoTeoria3_20
2017 - Reitittimen, kytkimen ja toistimen vertailua sekä törmäysalueesta Luento 15 (13m1s)

Verkkolaitteet tänään

# video2018Luento15
2018 - Luento 15 kokonaisuudessaan Luento 15 (1h34m47s)
# v2018L15_2
2018 - Verkkolaitteet eri kerroksilla perinteisesti ja nykyään Luento 15 (8m34s)
  • Reititin - Layer 4 Router
    • NAT ja palomuuri toimii osin kuljetuskerroksella
  • Kytkin - Multilayer Switch
    • Kytkimeen on lisätty useita eri ominaisuuksia
    • Layer 3 switching, reititys toteutetaan laitteistolla (ASIC), reitittimessä ohjelmistolla
    • Layer 4-7 switching, esim. load balancing, NAT, VPN, web switch
  • Kytkin - Software-defined networking (SDN)
    • Kytkimen kontrolli- ja data-osiot erotellaan
    • Ohjelmallisesti muokataan kontrolli-osioon sääntöjä yms. sille miten ja minne data välitetään data-osion kautta
# videoTeoria3_21
2017 - Verkkolaitteet monipuolistuvat Luento 15 (6m12s)
# t6d

av: Huom: Tehtävänantoa muutettu, että kysytään vain tiettyä dokumenttia, kun tarkistin on päivitetty. Aiemmin hyväksyttiin 2 eri vaihtoehtoa, joten kaikki vanhat vastaukset eivät enää anna pisteitä

25 Feb 21

ARP ja MAC osoitteet

# v2018L15_1
2018 - ARP ja MAC osoite reitittimen läpäisevässä kommunikaatiossa Luento 15 (11m42s)
  • Address Resolution Protocol (ARP)
    • Jotta IP paketti voidaan välittää linkkikerroksella oikealle laitteelle
    • Selvittää IP osoitetta vastaavan MAC osoitteen
    • tai
    • Reitittimen MAC osoitteen, jos IP osoite on eri verkossa
# videoTeoria3_17
2017 - IP ja MAC osoite reitittimen läpi Luento 14 (17m50s)

ARP ja MAC osoitteet reitittimen kanssa

Olkoon meillä kuvan mukainen verkko, missä Laite A ja Laite B on yhdistetty reitittimen "eri puolille", eli laitteet eivät ole samassa aliverkossa. Laitteen A MAC osoite on AA-AA-AA-AA-AA-AA ja se on yhditetty reitittimen liityntään, jonka MAC osoite on BB-BB-BB-BB-BB-BB. Laitteen B MAC osoite on DD-DD-DD-DD-DD-DD ja se on yhditetty reitittimen liityntään, jonka MAC osoite on CC-CC-CC-CC-CC-CC.

ARP ja MAC osoitteet reitittimen tapauksessa
ARP ja MAC osoitteet reitittimen tapauksessa

Laitteiden reititystaulut on esitetty alla. Oletetaan että ARP-taulut ovat tyhjiä.

Laite A
Destination    Netmask        Gateway        Interface
0.0.0.0        0.0.0.0        111.111.111.111    111.111.111.222

Laite B
Destination    Netmask        Gateway        Interface
0.0.0.0        0.0.0.0        222.222.222.111    222.222.222.222

Reititin
Destination    Netmask        Gateway        Interface
111.111.111.0    255.255.255.0    On-link        111.111.111.111
222.222.222.0    255.255.255.0    On-link        222.222.222.111

Laite A lähettää ping viestin laitteelle B, mihin laite B reagoi lähettämällä vastauksen ping viestiin. Tarvittaessa MAC osoitteet selvitetään ARP protokollalla.

Halutessasi voit itse kokeilla kuvan mukaista simulaatiota, jos sinulla on Java versio 7. Simulaattori https://code.google.com/p/psimulator/ ei toimi Javan version 8 kanssa. Simulaattorin käyttöön löytyy ohjeita http://www.brianlinkletter.com/psimulator2-graphical-network-simulator/. Ohjelmasta on tehty versio, joka toimii uudempien Java versioiden kanssa Rakenna vastaava verkko itse ja kokeile toistaa opettajan videolla tekemät visualisoinnit.

# t7a

En saa tätä millään oikein

19 May 20

Tässä pitää ottaa huomioon ARP protokollan toiminta, eli ARP etsii IP osoitteen omistajan MAC osoitetta, eli paketti lähetetään kaikille verkon laitteille, vaikka tehtävänannon tapauksessa sitten reititin vastaa laitteelle A.

19 May 20
# t7b
# t7c
# t7d
# t7e
# t7f

Carrier Sense Multiple Access

# v2018L15_3
2018 - Hajasaanti-monipääsymenetelmien toiminta, kun laitteet samassa törmäysalueessa Luento 15 (22m56s)
Step Collision Detection (CD) Collision Avoidance (CA) Collision Avoidance with RTS/CTS
1 Kuunnellaan onko hiljaista Kuunnellaan onko hiljaista Kuunnellaan onko hiljaista
2 Jos ei, niin odotetaan, kunnes on hiljaista Jos ei, niin odotetaan, kunnes on hiljaista Jos ei, niin odotetaan, kunnes on hiljaista
3 Jos on, niin lähetetään Jos on, niin lähetetään Jos on, niin pyydetään lupaa lähettää
4 Kuunnellaan meneekö lähetys ilman häiriötä perille Odotetaan kuittausta datapaketille Jos pyynnöt törmäävät, odotetaan satunnainen aika ja mennään kohtaan 1
5 Jos ei, niin on tapahtunut törmäys Ei kuittausta, oletetaan törmäyksen tapahtuneen Jos saadaan lupa lähettää, lähetetään
6 Odotetaan satunnainen aika ja mennään kohtaan 1 Odotetaan satunnainen aika ja mennään kohtaan 1 Jos ei saada lupaa, odotetaan satunnainen aika ja mennään kohtaan 1
# videoTeoria3_22
2017 - Ethernet CSMA/CD vs. WLAN CSMA/CA (with RTS/CTS) Luento 15 (20m4s)

Bittivirheiden havaitseminen ja korjaus

# v2018L15_4
2018 - Virheiden havaitseminen ja korjaaminen Luento 15 (6m33s)
  • Virheiden havaitsemiseksi tai korjaamiseksi lisätään viestiin ylimääräisiä bittejä
  • Data bitit ja ylimääräiset bitit muodostavat koodisanan
  • Virheiden havaitseminen
    • Vertaamalla vastaanotettuja bittejä hyväksyttäviin koodisanoihin, voidaan havaita virheitä
    • Yksinkertaisin: pariteettibitin lisääminen
      • Valitaan kumpaa tarkastellaan: nollia vai ykkösiä
      • Valitaan pitääkö niitä olla pariton vai parillinen määrä
  • Virheiden korjaus
    • Ylimääräisisten bittien avulla voidaan tulkita, jollakin todennäköisyydellä, virheellisen viestin virheetön muoto
    • Yksinkertaisin: toistetaan lähetettävää dataa
      • Lähetetään kaksi tai useampia kopioita samasta bitistä
      • Jos vastaanottaessa kopiot poikkeavat toisistaan, oletetaan että lähetetty bitti on se jota on enemmistö kopioista
# videoTeoria3_23
2017 - Virheiden havaitseminen ja korjaus Luento 15 (6m27s)

Koodisana esimerkki

# v2018L15_5
2018 - Esimerkki koodisanasta lähetyksessä ja vastaanotossa Luento 15 (4m34s)

Muodostetaan esimerkkinä koodisana, jossa lisätään kahden bitin perään pariteettibitti, siten että muodostetussa koodisanassa on aina pariton määrä 1-bittejä. Alla on taulukoitu kaikki mahdolliset kahden bitin kombinaatiot ja niistä muodostuvat edellä olevan määritelmän mukaiset koodisanat.

Databitit Koodibitit Koodisana
00 1 001
01 0 010
10 0 100
11 1 111

Vastaanotossa tutkitaan onko vastaanotettu bittijoukko jokin koodisana. Lähettäessä kolmen bitin jono on aina jokin muodostetuista koodisanoista. Vastaanotettaessa, bittivirheiden sattuessa, voi bittijono olla myös sellainen, jota ei voi muodostua lähetyksessä koodausmenetelmän sääntöjen mukaan. Alla on taulukoitu kaikki kolmen bitin kombinaatiot ja verrattu niitä edellisen taulukon määritelmän mukaisiin koodisanoihin.

Vastaanotetut bitit Onko hyväksytty koodisana
000 000 (ei, virhe)
001 001 (on)
010 010 (on)
011 011 (ei, virhe)
100 100 (on)
101 101 (ei, virhe)
110 110 (ei, virhe)
111 111 (on)

Pariteetin tarkistus

Pariteettibitin käyttäminen on yksinkertaisin keino havaita bittivirheitä. Pariteettibittiä käytettäessä valitaan joko parillinen tai pariton pariteetti. Tällöin koodisanassa tulee olla parillinen tai pariton määrä 1-bittejä. Käytännössä pariteettibittiä käyttävät koodisanat ovat melkein aina tavun monikertoja, ja hyvin usein yhden tavun kokoisia, joten niiden bittien kokonaismäärä on parillinen. Tällöin parillinen tai pariton pariteetti on sama sekä 1- että 0-biteille. Käytännön toteutuksissa käytetään 1-bittien pariteetin asettamista parittomaksi tai parilliseksi. Lähetettäessä dataan, eli lähetettävään bittijonoon, lisätään pariteettibitti, siten että koodisanassa on valittu pariteetti. Vastaanotossa voidaan havaita pariteetin muuttuminen, jolloin viesti havaitaan virheelliseksi.

Seuraavissa tehtävissä tarvitsee selvittää 7-bittisiä ASCII merkkejä vastaava bittikuvio, eli binääriluku. ASCII taulukoita löytyy Internetistä, tai voit käyttää allaolevaa python-koodia.

# t8a

Pariteettibittiä on käytetty mm. 7-bittisten ASCII-merkkien yhteydessä. Nykyään pariteettia käytetään esimerkiksi sarjaliikenteessä ja yleensä pariteettibitillä suojataan binääristä informaatiota, siten että pariteetin lisäyksen jälkeen koodisana on tavun kokoinen tai jokin tavun monikerta. Seuraavissa tehtävissä on käytössä tämä tarkistin.

# t8b
# t8c
# t8d
# t8e

Pariteettimatriisi

Pariteettibitillä voidaan vain havaita virheen tapahtuneen, jos virheitä on ollut pariton määrä. Virheen korjaaminen vaatii lisää informaatiota ja pariteettia käytettäessä on mahdollista tutkia binäärilukuja 2-ulotteisesti, käyttämällä pariteettimatriisia. Pariteettimatriisissa lähetettävä data, esimerkiksi 7-bittiset ASCII binääriluvut, ryhmitellään isommiksi kokonaisuuksiksi. Käytännössä tämä tehdään muodostamalla matriisi, eli asettamalla binääriluvut allekkain. Sitten pariteetti lasketaan jokaiselle riville ja pariteettibitti lisätään jokaisen rivin loppuun. Lopuksi lisätään vielä yksi rivi, johon tulee pelkkiä pariteettibittejä. Tämän viimeisen rivin bitit lasketaan yläpuolella olevista riveistä sarakekohtaisesti. Alla on esimerkki, johon on asetettu binääriluvut ASCII-merkeistä ITKP104, jokainen omalla rivillään. Pariteettina on parillinen määrä 0- (tai 1-bittejä, koska sarakkeita ja rivejä on pariteettibittien lisäämisen jälkeen parillinen määrä). Rivi- ja sarakekohtaiset pariteettibitit on merkitty sinisellä, data bitit on värjätty TIM-järjestelmän oletusvärillä.

1001001 1
1010100 1
1001011 0
1010000 0
0110001 1
0110000 0
0110100 1
0110011 0

Jos bittiryhmässä tulee yksittäinen bittivirhe, aiheuttaa se sekä rivi- että sarakepariteetin muuttumisen. Näin virheellinen bitti voidaan tunnistaa, kun tiedetään millä rivillä ja millä sarakkeella virhe on tapahtunut. Menetelmä vastaa muuten yksinkertaista pariteetin tarkistusta, mutta nyt lähetetään tietyin väliajoin pariteettirivi, mikä pienentään koodin hyötysuhdetta, eli databittien suhdetta kaikkiin lähetettäviin bitteihin.

Etsi seuraavassa tehtävässä esiintyvä bittivirhe ja korjaa se. Seuraavien tehtävien matriisissa saa olla ylimääräisiä väli( )-, putki(|)- ja väliviiva(-) -merkkejä sekä rivinvaihtoja. Tabulaattoria tarkistin ei vielä tue.

# t8f

Tässä lukee ITKP1043

28 Apr 20

Pariteettimatriisissa on jokaisen rivin lopussa pariteetti bitti ja sen lisäksi viimeinen rivi on kokonaan pariteettibittejä ja sitä ei pidä tulkita informaatioksi

29 Apr 20

Seuraavissa tehtävissä muodosta harmaalla taustalla olevia ASCII-merkkejä vastaavat binääriluvut omille riveilleen ja lisää pariteettimatriisiin pariteettibitit tehtävänannossa määritellyn pariteetin mukaan.

# t8g
# t8h
# t8i
# t8j

Virheen havaitseminen ja korjaus - Hamming etäisyys

# v2018L15_6
2018 - Hamming etäisyys kertoo virhekontrolli-menetelmän kyvystä Luento 15 (3m23s)
  • Hammingin etäisyys on koodisanojen toisistaan eroavien bittien lukumäärä
  • Koodin minimi Hamming etäisyys on koodin koodisanojen välinen pienin Hamming etäisyys
  • Koodin minimi Hamming etäisyys määrittää koodin kyvyn havaita ja/tai korjata virheitä
  • Jos minimi hamming etäisyys on \(n\), niin
    • \(n-1\) bitin virheet voidaan havaita ja
    • \(\frac{n-1}{2}\) bitin virheet korjata
# videoTeoria3_24
2017 - Hamming etäisyys Luento 15 (6m27s)

Minimi Hamming etäisyys - Esimerkki

# v2018L15_7
2018 - Esimerkkejä minimi Hamming etäisyydestä ja menetelmistä virheiden kontrollointiin Luento 15 (9m8s)

Alla on taulukoitu aiemman esimerkin, pariton määrä 1-bittejä pariteetti, koodisanojen väliset erot biteissä. Koodi muodostaa tasaisen Hamming etäisyyden, eli kaikki koodisanat eroavat toisistaan kahden bitin osalta, näin koko koodin minimi Hammin etäisyys on 2. Koodi kykenee siten havaitsemaan yhden bitin virheet, mutta ei korjaamaan virheitä. Kahden tai kolmen bitin virheet jäävät havaitsematta.

Koodisanojen bittien erot
001 010 100 111
001 - 0xx x0x xx1
010 0xx - xx0 x1x
100 x0x xx0 - 1xx
111 xx1 x1x 1xx -

Jos virheitä kontrolloiva menetelmä on huono, se voi generoida koodisanoja, jotka ovat liian lähellä toisiaan. Jos menetelmä muodostaa esimerkiksi koodisanat 000, 100, 001 ja 111, niin Hamming etäisyys on suurimmillaan kolme, mutta joissain tapauksissa 2 tai jopa 1. Minimi Hamming etäisyyden ollessa 1, ei menetelmällä voi varmasti havaita edes yhden bitin virheitä.

Koodisanojen bittien erot
000 001 100 111
000 - 00x x00 xxx
001 00x - x0x xx1
100 x00 x0x - 1xx
111 xxx xx1 1xx -

Virheen havaitseminen ja korjaus - Esimerkkejä

Pariteettibitti (parillinen määrä 1 bittejä)
Databitit Koodibitit Koodisana
00 0 000
01 1 011
10 1 101
11 0 110

Minimi Hamming etäisyys = 2

Toistokoodi (1 toistobitti)
Databitit Koodibitit Koodisana
0 0 00
1 1 11

Minimi Hamming etäisyys = 2

Toistokoodi (2 toistobittiä)
Databitit Koodibitit Koodisana
0 00 000
1 11 111

Minimi Hamming etäisyys = 3

# videoTeoria3_25
2017 - Esimerkkejä yksinkertaisista virheen kontrollointikoodeista Luento 15 (8m45s)

Toistokoodi

Toistokoodi on yksinkertaisin menetelmä korjata virheitä. Ideana on että jokaisesta lähetettävästä bitistä lähetetään useita kopioita. Vastaanotossa sitten tarkastetaan onko kaikki kopiot samoja. Virheen tapahtuessa tulkitaan vastaanotettu bitti siksi, josta on vastaanotettu eniten kopioita.

Toistokoodia ei juurikaan käytetä, koska sen tehokkuus virheenkorjauksessa on huono ja informaatiobittien suhde kaikkiin lähetettyihin bitteihin on pieni. Ainoa hyvä puoli on sen toteutuksen yksinkertaisuus. Kolmen pituinen binäärinen toistokoodi on vastaava kuin (3,1) - Hamming koodi.

# t9a
# t9b

Tämä toistokoodi ei auennut, ei ilmeisesti ole käyty luennoilla läpi?

01 Jul 20

3-toisto näyttää tarkoittavan käytännössä sitä, että jos binäärikoodi on esimerkiksi: abab niin kolmen toiston jälkeen se näyttää tältä: aaabbbaaabbb

07 Jul 20

Videoilla on käyty asiaa läpi jonain vuonna, mutta en ole näköjään vielä linkittänyt tähän kohtaan aiheesta. Täytyypä etsiä ja linkittää

12 Aug 20
# t9c

Tämän c-tehtävän tarkistimessa on jotain häikkää. Ei anna pisteitä.

av: selvitämme asiaa TIM-tuen kanssa.
EDIT: vika korjattu, liittyi |-merkkiin, joka on yksi arvottavista merkeistä.

02 Dec 21 (edited 03 Dec 21)
# t9d
# t9e
# t9f
# t9g
# t9h
# t9i
# t9j

Virheiden havaitseminen Internetissä

# v2018L15_8
2018 - Virheiden havaitseminen Internetin eri kerroksilla Luento 15 (11m37s)

Virheitä havaitaan Internetissä monella kerroksella. Virheiden korjausta tehdään pääasiassa langattomissa linkkitekniikoissa, linkkikerroksella. Sovelluskerroksella käytetään joskus virheenkorjausta, kun kuljetuskerroksella on UDP, yleisempää kuitenkin on toteuttaa mekanismeja, joilla toivutaan kadonneista paketeista. Bittivirheen jääminen huomaamatta sekä linkki-, verkko- että kuljetuskerroksella on hyvin epätodennäköistä.

  • Linkkikerros
    • Ethernet kehys
      • CRC-32 tarkistussumma
      • Vastaanottajan verkkolaite hylkää väärän tarkistussumman sisältävät kehykset
    • Erilaisia eri linkkitekniikoilla
  • Verkkokerros
    • IPv4
      • IPv4 tarkistussumma suojaa otsikkokenttiä
      • Reitittimet tai vastaanottaja hylkää väärän tarkistussumman sisältävät kehykset
    • IPv6
      • Tarkistussumma poistettiin versiosta 6 reitittimien laskentakuorman minimoimiseksi
      • Oletetaan että linkkikerros ja kuljetuskerros tarjoavat riittävän suojan virheiden havaitsemiselle
  • Kuljetuskerros
    • UDP
      • UDP Tarkistussumma, joka suojaa hyötykuorman ja informaation sekä UDP että IP protokollien otsikkokentistä
      • Vapaaehtoinen IPv4:n kanssa, pakollinen IPv6:n kanssa
      • Vastaanottajan käyttöjärjestelmän verkkopino hylkää väärän tarkistussumman sisältävät paketit
    • TCP
      • TCP Tarkistussumma, joka suojaa hyötykuorman ja informaation sekä TCP että IP protokollien otsikkokentistä
      • Vastaanottajan käyttöjärjestelmän verkkopino hylkää väärän tarkistussumman sisältävät paketit
      • Uudelleen lähetykset joko ajastimen lauetessa tai kolmesta duplikaattikuittauksesta
  • Sovelluskerros
    • Jos kuljetuskerroksella käytössä UDP, niin sovelluksen tarpeiden mukaan
    • uudelleenlähetykset tai jokin muu menetelmä virheistä toipumiseen
# videoTeoria3_26
2017 - Virhekontrolli Internetin eri kerroksilla Luento 15 (6m49s)

Lopuksi - Kaikki mitä tapahtuu www- sivun pyynnössä

# v2018L15_9
2018 - Protokollat ja niiden viestit, koneen käynnistyksestä WWW-sivun hakemiseen Luento 15 (15m56s)
# videoTeoria3_27
2017 - Protokollien toiminta www-sivun lataamisessa laitteen käynnistyksen jälkeen Luento 15 (14m9s)

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.