Tehtävä oli
yleisesti ottaen osattu hyvin ja kaikki jätetyt ratkaisut on
hyväksytty
olkoonkin, että joissakin ratkaisuissa oli vain kopioitu prujun
tekstiä
sellaisenaan ilman yhtään omaa ajatusta.
Varmista, että
olet ymmärtänyt oikein toisaalta
-
missä
järjestyksessä sovellusohjelma, sovellustason protokolla, TCP
ja IP
käsittelevät lähetettävää
(vastaanotettavaa) tietoa ja toisaalta
-
missä
järjestyksessä protokollakehykset ovat sisäkkäin,
kun ne loppujen lopuksi
lähetetään matkaan jonkin Internetin pohjana olevan
konkreettisen verkon (esim.
puhelinverkon) välityksellä.
Virheistä lähes
kaikki olivat muistaneet mainita ainakin yksittäiset bittivirheet
ja ymmärtäneet
tarkistussumman käytön niiden havaitsemiseksi. TCPhän ei
oikeastaan korjaa
virheitä, se vain hylkää ja jättää
kuittaamatta virheelliset kehykset. Kehykset
lähetetään sitten aikanaan uudestaan
pääsääntöisesti sillä perusteella,
että
kuittausta ei tule kohtuullisessa ajassa (aikaraja vaihtelee
tapauksesta
toiseen, koska TCPtä käytetään monenlaisiin
tehtäviin). On tietenkin myös mahdollista,
että itse viesti saapuu kyllä oikein perille, mutta kuittaus
häviää matkalla. Mitä tällöin
tapahtuu?
TCPssä
lähettäjä
pitää kirjaa siitä, minkä numeroinen tavu on
viimeksi lähetetty ja sekä
lähettäjä että vastaanottaja siitä, minkä
numeroinen tavu on viimeksi kuitattu.
Jos seuraavan tavun numero ei ole oikea, paketti
pääsääntöisesti hylätään.
Jokin TCPn versio saattaa kuitenkin osata järjestellä
paketteja oikeaan
järjestykseen.
Eräs mahdollinen
virhetilanne on, että lähetetään tietoa nopeammin,
kuin vastaanottaja kykenee
sulattamaan. Tätä varten TCPssä on ns.
lähetysikkuna, joka ilmoittaa, paljonko vataanottajan
puskurissa on tilaa.
Kansainvälisen
tietoliikenneverkon kaltaisessa monimutkaisessa
järjestelmässä voidaan olla
varmoja, etteivät verkon eri osat koskaan toimi kaikki
samanaikaisesti oikein
vaan tiedon on kuljettava virheistä huolimatta. Tämä ei
koske vain tiedon
siirtoteitä vaan myös tietoliikenneohjelmia.
Tähän liittyy vielä eräs
virhetyyppi, josta tähän mennessä ei ole paljon puhuttu.
Protokollavirhe voi esiintyä millä tahansa
protokollahierarkian
tasolla ja tarkoittaa, että toinen osapuoli ei toimi
sääntöjen mukaisesti vaan
esim. alkaa lähettää suoraan dataa
lähettämättä ensin avausviestiä.
Tähän
vastataan lähettämällä virheilmoitus ja
lopettamalla yhteys, TCPssä tätä
tarkoitusta palvelee RST-lippu.
Ohjelmoijan
kannalta TCP on joukko valmiina saatavia aliohjelmia, Javan osalta
ks. esim. java.sun.com