net tcp -protokolla. TCP-tiedonvaihdon toteutuksen piirteet. Esimerkki tiedonsiirrosta IP-verkon yli

Vuorovaikutus tietokoneiden välillä Internetissä tapahtuu kautta verkkoprotokollat, jotka ovat sovittuja erityissääntöjä, joiden mukaan erilaisia ​​laitteita tiedonsiirrot vaihtavat tietoja. On protokollia virheenhallintaformaateille ja muun tyyppisille protokollille. Globaalisti verkkotyöskentely useimmin käytetty TCP-IP-protokolla.

Millaista tekniikkaa tämä on? Nimi TCP-IP tulee kahdesta verkkoprotokollasta: TCP ja IP. Verkkojen rakentaminen ei tietenkään rajoitu näihin kahteen protokollaan, vaan tiedonsiirron organisoinnin kannalta ne ovat perustavanlaatuisia. Itse asiassa TCP-IP on joukko protokollia, jotka mahdollistavat yksittäisten verkkojen muodostamisen

TCP-IP-protokolla, jota ei voi kuvata vain IP:n ja TCP:n määritelmillä, sisältää myös protokollat ​​UDP, SMTP, ICMP, FTP, telnet ja paljon muuta. Nämä ja muut TCP-IP-protokollat ​​tarjoavat eniten kokopäivätyö Internet-verkot.

Alla annamme yksityiskohtaisen kuvauksen jokaisesta protokollaan sisältyvästä protokollasta yleinen käsite TCP-IP.

. Internet-protokolla(IP) vastaa tiedon suorasta välittämisestä verkossa. Tiedot jaetaan osiin (toisin sanoen paketteihin) ja lähetetään vastaanottajalle lähettäjältä. Tarkkaa osoitetta varten sinun on määritettävä vastaanottajan tarkka osoite tai koordinaatit. Tällaiset osoitteet koostuvat neljästä tavusta, jotka on erotettu toisistaan ​​pisteillä. Jokaisen tietokoneen osoite on yksilöllinen.

Pelkkä IP-protokollan käyttö ei kuitenkaan välttämättä riitä oikeaan tiedonsiirtoon, koska suurimman osan siirrettävästä tiedosta on yli 1500 merkkiä, mikä ei enää mahdu yhteen pakettiin ja osa paketeista saattaa kadota lähetyksen aikana tai lähteä väärä järjestys, mitä tarvitaan.

. Lähetyksen ohjausprotokolla(TCP) käytetään useampaan korkeatasoinen kuin edellinen. Perustuen IP-protokollan kykyyn siirtää tietoa isännästä toiseen, TCP-protokolla mahdollistaa suurten tietomäärien lähettämisen. TCP vastaa myös erottamisesta lähetettyä tietoa erillisiin osiin - pakkauksiin - ja kunnollinen palautuminen tiedot lähetyksen jälkeen vastaanotetuista paketeista. Tässä tapauksessa tämä protokolla toistaa automaattisesti virheitä sisältävien pakettien lähetyksen.

Suurten määrien tiedonsiirron organisoinnin hallinta voidaan suorittaa useilla erityisillä protokollilla toiminnallinen tarkoitus. Erityisesti on olemassa seuraavan tyyppisiä TCP-protokollia.

1. FTP (Tiedostonsiirto Protocol) järjestää tiedostojen siirron ja sitä käytetään tiedon siirtämiseen kahden Internet-solmun välillä käyttämällä TCP-yhteyksiä binääri- tai yksinkertaisessa muodossa. tekstitiedosto, nimettynä alueena tietokoneen muistissa. Tässä tapauksessa ei ole väliä missä nämä solmut sijaitsevat ja miten ne on kytketty toisiinsa.

2. User Datagram Protocol, tai User Datagram Protocol, on yhteydestä riippumaton ja lähettää dataa UDP-datagrammeiksi kutsuttuina paketteina. Tämä protokolla ei kuitenkaan ole yhtä luotettava kuin TCP, koska lähettäjä ei tiedä, onko paketti todella vastaanotettu.

3. ICMP(Internet Control Message Protocol) on olemassa Internetin tiedonvaihdon aikana ilmenevien virhesanomien lähettämiseen. ICMP-protokolla raportoi kuitenkin vain virheistä, mutta ei poista virheisiin johtaneita syitä.

4. Telnet- jota käytetään toteutukseen tekstikäyttöliittymä verkossa TCP-siirtoa käyttämällä.

5. SMTP(Yksinkertainen posti Siirtoprotokolla) on erityinen sähkopostilla, joka määrittää viestien muodon, jotka lähetetään yhdestä tietokoneesta, jota kutsutaan SMTP-asiakkaaksi, toiseen tietokoneeseen, jossa on SMTP-palvelin. Tällöin siirtoa voi viivästyä jonkin aikaa, kunnes sekä asiakkaan että palvelimen työ on aktivoitu.

Tiedonsiirtomalli TCP-IP-protokollan kautta

1. TCP-protokolla jakaa koko datamäärän paketeiksi ja numeroi ne pakaten ne TCP-kuoriin, jolloin voit palauttaa tiedon osien vastaanottojärjestyksen. Kun data sijoitetaan tällaiseen kirjekuoreen, lasketaan tarkistussumma, joka kirjoitetaan sitten TCP-otsikkoon.

3. TCP tarkistaa sitten, onko kaikki paketit vastaanotettu. Jos vastikään laskettu ei vastaanoton aikana ole sama kuin kirjekuoressa ilmoitettu, tämä osoittaa, että osa tiedoista on kadonnut tai vääristynyt lähetyksen aikana, TCP-IP-protokolla pyytää uudelleen tämän paketin edelleenlähetystä. Tietojen vastaanottamisesta vaaditaan myös vahvistus vastaanottajalta.

4. Vahvistettuaan kaikkien pakettien vastaanottamisen TCP-protokolla järjestää ne vastaavasti ja kokoaa ne yhdeksi kokonaisuudeksi.

TCP-protokolla käyttää toistuvia tiedonsiirtoja ja odotusaikoja (tai aikakatkaisuja) varmistaakseen tiedon luotettavan toimituksen. Paketteja voidaan lähettää kahteen suuntaan samanaikaisesti.

Siten TCP-IP eliminoi uudelleenlähetysten tarpeen ja odottaa sovellusprosesseja (kuten Telnet ja FTP).

Kuljetuskerroksen protokollat ​​on suunniteltu tarjoamaan suoraa tiedonvaihtoa kahden välillä käyttäjän prosesseja. Kuljetuskerroksen protokollia on kahta tyyppiä: jakoprotokollat ​​ja jakamattomat datagrammien toimitusprotokollat.

Segmentointi kuljetuskerroksen protokollat, osio Alkuperäinen viesti siirtokerroksen tietolohkoihin - segmentteihin.

Datagrammin toimitusprotokollat ​​eivät segmentoi viestiä ja lähetä sitä yhtenä kappaleena, jota kutsutaan "datagrammiksi". Tässä tapauksessa yhteyksien muodostamis- ja katkaisutoimintoja sekä virtauksen ohjausta ei tarvita. Datagrammien toimitusprotokollat ​​ovat yksinkertaisia ​​toteuttaa, mutta ne eivät kuitenkaan tarjoa taattua ja luotettavaa viestien toimitusta.

Kahta protokollaa voidaan käyttää siirtokerroksen protokollana Internetissä:

  • UDP User Datagram Protocol
  • TCP Transmission Control Protocol

Prosessien tunnistaminen kuljetuskerroksessa

Organisaatiota varten tiedon vuorovaikutusta päällä kuljetuskerros on täsmennettävä verkko-osoite tilaaja- ja prosessiportin numero. SISÄÄN tässä tapauksessa portti on virtuaalinen siirtokerroksen rajapinta. Käyttäjäprosessien vuorovaikutus porttien kanssa voidaan suorittaa erilaisten järjestelmien mukaisesti:

  • Prosessin synkronointi
  • Saapuvien tietojen puskurointi

Ensimmäistä mallia käytettäessä tiedot tulevat osoitteesta ulkoinen järjestelmä porttiin aiheuttaa vastaavan prosessin suorittamisen keskeytyksen. Tallennus- ja edelleenlähetyspuskureiden käyttö jokaiselle portille mahdollistaa asynkronisen viestinnän portin kanssa.

Luettelo osoitetuista porttinumeroista on kohdassa IETF STD 2

Kuljetusprotokolla UDP

UDP-protokollan periaatteiden kuvaus on annettu RFC 768:ssa. IP-paketteja käytetään UDP-sanomien lähettämiseen. UDP-viestit sijoitetaan tässä tapauksessa niitä kuljettavan paketin tietokenttään.

UDP-viestin muoto

UDP-datagrammeilla on vaihteleva pituus ja koostuu UDP-otsikkoviestin otsikosta ja itse UDP-dataviestistä. Kuvassa on esitetty UDP-sanoman otsikon rakenne.

UDP DESTINATION PORT -kenttä

Tämän kentän tulee sisältää sen prosessin portin numero, jolle tämä viesti on tarkoitettu.

UDP SOURCE PORT -kenttä

Tämä kenttä voi sisältää lähteenä olevan prosessin porttinumeron tästä viestistä. Tämä kenttä muodostuu, jos informaatiovuorovaikutuksen luonne sisältää vastauksen muodostuksen.

UDP-VIESTIN PITUUS -kenttä

UDP MRSSAGE LENGTH -kenttä sisältää UDP-viestin pituuden tavuina. Viestin vähimmäispituus on 8 tavua ja se koostuu yhdestä otsikosta.

UDP-LÄHDEPORTTI UDP DESTINATION PORT
UDP-VIESTIN PITUUS UDP-TARKISTUSSUMA
TIEDOT

UDP TARKISTUSsumma -kenttä

Tämä kenttä voi sisältää tarkistussumma viestejä. Jos tarkistussumma luodaan, se on laskettava ottaen huomioon UDP-pseudootsikko, joka ei ole osa datagrammia, vaan osa IP-paketista ja sisältää osoitteita. verkkokerros lähde ja kohdeasema.

UDP-protokollan käyttäminen

UDP-protokolla tarjoaa takaamattoman viestien toimituksen Internetissä. Tätä protokollaa voidaan käyttää sovelluksissa, jotka joko eivät tarvitse tätä laatua tai tarjoavat taatun toimituksen muilla tavoilla. Esimerkkejä käyttävistä sovelluksista UDP-protokolla, ovat TELNET ja TFTP.

Transport Protocol TCP

TCP-protokollaa käytetään luotettavan tiedonvaihdon tarjoamiseen siirtokerroksessa sisään Internet-verkot. Protokollan ensimmäinen kuvaus on RFC 793:ssa.

TCP-tiedonvaihdon toteutuksen piirteet

On olemassa useita syitä, jotka voivat estää verkossa lähetettävää pakettia saavuttamasta onnistuneesti kohdeasemaansa. Siten, ellei erityisiä menetelmiä käytetä taatun toimituksen varmistamiseksi, vastaanotettu viesti voi poiketa merkittävästi lähetetystä viestistä.

Luotettava tiedonvaihto sisältää seuraavat mahdollisuudet:

  • Suoratoiston vaihto
  • Virtuaaliyhteyksien käyttö
  • Puskuroitu tiedonsiirto
  • Strukturoimaton virtaus
  • Täysi kaksipuolinen viestintä

Suoratoiston vaihto

Luotettava siirtoyhteys mahdollistaa tällaisen tiedon vuorovaikutuksen muodon, kun vastaanottaja vastaanottaa täysin saman tavusarjan kuin lähettäjä on lähettänyt.

Virtuaaliyhteyksien käyttö

Luotettava tiedonvaihto kuljetuskerroksessa voidaan tulkita virtuaalisen loogisen yhteyden avulla. Alkuvaiheessa toinen kommunikoivista osapuolista aloittaa yhteyden muodostamisen käyttäen tarvittaessa todennusmenettelyjä. Muodostetun yhteyden kautta tapahtuvassa tiedonvaihdossa molemmat osapuolet valvovat sen laatua ja jos tiedonsiirrossa ilmenee ongelmia, käynnistävät yhteyden katkaisun ja generoivat asianmukaisia ​​viestejä ylemmän tason protokollille.

Puskuroitu tiedonsiirto

Puskurien käyttö mahdollistaa tiedonsiirron nopeuden koordinoimisen tiedonsiirtokanavassa käyttäjäsovelluksen tiedonsiirtonopeuden kanssa.

Vastatakseen aikaviiveille herkän liikenteen toimitustarpeeseen puskurin lisäksi voidaan käyttää ylimääräistä "työntömekanismia" - mäntää. Käyttö tämä mekanismi varmistaa, että puskurin sisältö siirretään sillä hetkellä, kun se vastaanottaa aikaviiveille herkkää dataa.

Menetelmät luotettavan tiedon vuorovaikutuksen varmistamiseksi TCP:ssä.

Viestien taatun toimituksen varmistamiseksi TCP-protokolla käyttää positiivista kuittausta uudelleenlähetyksen kanssa. Tyypillisesti tätä menetelmää käytettäessä tiedon vastaanottaja lähettää erityisen ACK-signaalin sen vastaanottamisen vahvistamiseksi. Tietojenvaihdon jatkaminen voidaan suorittaa vain, jos lähettäjä vastaanottaa tämän vahvistuksen.

Yksinkertainen kuittausmenettely

Lähettävä puoli keskeyttää seuraavan segmentin lähetyksen, kunnes se vastaanottaa vahvistuksen edellisen segmentin vastaanottamisesta. Odotusväli asetetaan yhtä suureksi kuin uudelleenlähetyksen viivearvo – uudelleenlähetysajastin. Jos lähetetyn segmentin vastaanottokuittausta ei vastaanoteta tämän aikavälin aikana, segmentti lähetetään uudelleen.

Kädenpuristus liukuvalla ikkunalla

Yksinkertaisen kättelymenettelyn käyttö ei takaa riittävää tehokkuutta tiedonsiirtokanavien kaistanleveyden käytössä. Tekijä: vähintään, puolet ajasta, jolloin järjestelmä odottaa kuittauksen saamista. Tässä mielessä tehokkaampi on liukuvan ikkunan kättelymenettely, jonka avulla lähettävä puoli voi lähettää useita viestisegmenttejä odottamatta vastaanottokuittausta.

Segmenttien enimmäismäärä, jonka lähettävä osapuoli voi lähettää ennen kuin vastaanottaa kuittauksen ensimmäisestä, kutsutaan IKKUNAksi.

Tätä mekanismia käytettäessä vastaanottava osapuoli voi lähettää kuittauksen useiden segmenttien vastaanottamisesta kerralla.

TCP-virtauksen ohjausmenettelyt

TCP-protokolla toimii datalla, joka saapuu tavuvirtana, joka on ryhmitelty segmentteihin. Jokaisen segmentin lähettämiseen käytetään erillistä datagrammia.

TCP käyttää edellisessä kappaleessa kuvattua liukuikkunamenetelmää kahden toiminnon tarjoamiseen:

  • Tiedonsiirtonopeuden ohjaus
  • Varmistetaan siirrettyjen tietojen luotettava toimitus

Liukuikkunamenettely TCP-protokollassa on toteutettu suhteessa tavuihin. Tulovirran jokainen tavu on määritetty sarjanumero. Kolmea osoitinta käytetään ohjaamaan siirtoprosessia.

Ensimmäinen osoittaa rajan viimeisen lähetetyn ja kuitatun tavun ja ensimmäisen lähetetyn tavun välillä, jota ei kuitattu.

Toinen osoittaa rajan viimeisen lähetetyn tavun, jolle ei ole vielä vastaanotettu kuittausta, ja ensimmäisen tavun välillä, joka voidaan lähettää ennen kuin vastaanotetaan kuittaus edellisistä lähetetyistä tavuista.

Kolmas osoittaa rajan viimeisen tavun, joka voidaan lähettää ennen kuin vastaanotetaan kuittaus edellisistä lähetetyistä tavuista, ja muun tietovirran välillä.

Vuonohjausmenettelyyn kuuluu tiedonsiirtonopeuden sovittaminen lähetyskanavan kapasiteetin kanssa.

Vuon ohjaamiseksi TCP tarjoaa mahdollisuuden muuttaa ikkunan kokoa. Jokainen vahvistusviesti sisältää esitetyn ikkunakoon arvon - (ikkunamainos), joka on yleinen tapaus määrittää puskurin koon, jota tällä hetkellä voidaan käyttää tiedon vastaanottamiseen.

Liukuvan ikkunan käyttö tiedonkulun ohjaamiseen tekee tarpeetonta käyttöä lisämekanismeja ylivuodon hallitsemiseksi.

TCP-protokollan käytännön toteutuksen piirteet

Suboptimaalinen ikkuna-oireyhtymä

Kun käytät TCP-protokollaa linjoilla, läpijuoksu joka oli erilainen eri suuntiin, käyttäjät saattoivat havaita tilanteen, jota kutsuttiin ei-optimaalisen ikkunan oireyhtymäksi - typerä ikkuna -oireyhtymä - SWS. Tämä tilanne jolle on ominaista se, että yksi vuorovaikutuksessa olevista sovelluksista "A" voi lähettää dataa merkittävästi suurempi nopeus, kuin toinen - "B". Jos osapuoli B alun perin asetti ikkunan koon puskurinsa kokoiseksi, voi hyvinkin olla, että osapuoli A täyttää koko puskurin ennen kuin vastaanottaa ensimmäisen ikkunan koon muutosilmoituksen. Kun lähetykselle asetettu tavuraja on käytetty loppuun, puoli "A" siirtyy vahvistustilaan. Kun puoli B alkaa käsitellä saapuvaa dataa, se pystyy vapauttamaan osan puskurista ja lähettämään ilmoituksen vastaavasta vastaanottoikkunan koon muutoksesta. Sivu "A" täyttää nopeasti puskurissa olevan vapaan tilan ja palaa valmiustilaan. Epämiellyttävin seuraus tästä tilanteesta on, että tiedonsiirtokanavaa suunnassa "A" - "B" käytetään erittäin tehottomasti, koska TCP-segmenttejä käytetään pienten tietomäärien (enintään 1 tavu) siirtämiseen. Hyötykuorman ja palveluinformaation osuuksien suhde on tässä tapauksessa erittäin valitettava. SWS:n esiintymisen välttämiseksi TCP-protokollan käytännön toteutuksessa käytetään useita erilaisia ​​menetelmiä.

Tapoja estää SWS:n näkyminen vastaanottavalla puolella

SWS:n estämiseksi vastaanottopään tarvitsee lähettää vain esitykset suuria muutoksia ikkunoiden koot. Tämä tarkoittaa, että ACK-viestiä uudella ikkunakoolla ei lähetetä heti, kun syöttöpuskurissa on vapaata tilaa, vaan vasta tämän koon jälkeen. Vapaa tila riittää vastaanottamaan vähimmäismäärän lähetettyä tietoa. Esimerkiksi puolet vastaanottopuskurin tilavuudesta voidaan käyttää sellaisena minimitilavuutena. Jotkut TCP-protokollatoteutukset voivat myös käyttää ikkunan kokoa esityksenä enimmäispituus lähetetty segmentti.

Toinen menetelmä, jota voidaan käyttää myös vastaanottopäässä estämään SWS-ilmiön esiintyminen, on kuittausviivemenettely. Tämä menetelmä on melko yksinkertainen toteuttaa ja samalla melko tehokas. Vastaus todellakin viivästyy jonkin aikaa vakioaika, mahdollistaa SWS:n välttämisen ja samalla tehostaa tiedonsiirtokanavan käyttöä - koska vain yksi kuittaus generoidaan kaikille segmenteille, jotka saapuvat vastaanottimeen viivejakson aikana. Standardissa suositellaan kiinteän kuittausviiveen käyttöä SWS:n estämiseksi. Huomaa kuitenkin, että liian pitkän viiveajan valitseminen voi johtaa segmentin uudelleenlähetykseen.

Tapoja estää SWS:n näkyminen lähetyspuolella

SWS:n esiintymisen estämiseksi lähettävä osapuoli voi käyttää Nagle-algoritmia. Tämän algoritmin ydin on, että ensimmäinen tieto välitetään välittömästi puskuriin saapumisen jälkeen, kaikki seuraavat odottavat, kunnes puskuriin on kertynyt riittävä määrä dataa lähetystä varten.

Edellinen luento
Ulkoiset reititysprotokollat

TCP (Transmission Control Protocol) – lähetyksen ohjausprotokolla. Varmistaakseen luotettavan tiedon toimituksen siirtoprotokollatasolla sovellukset käyttävät TCP-protokollaa, joka varmistaa, että tiedot on toimitettu verkon kautta oikeassa järjestyksessä. TCP on luotettava suoratoistoprotokolla, joka edellyttää loogisten yhteyksien luomista. TCP:n luotettavuus varmistetaan sen kuittaus- ja uudelleenlähetysmekanismilla. Tätä mekanismia käytettäessä Lähetetään uudelleen tiedonsiirto tapahtuu, kunnes se saa vastaanottajajärjestelmältä vahvistuksen tiedon siirron onnistumisesta.

Jokainen paketti sisältää tarkistussumman, jonka avulla vastaanottaja määrittää tietojen eheyden. Jos paketti vastaanotetaan ehjänä, vastaanottaja lähettää kuittauksen lähteelle. Vastaanottaja jättää vaurioituneet paketit huomiotta. Tietyn ajan kuluttua lähettäjä lähettää uudelleen paketteja, joille ei ole vastaanotettu kuittauksia.

Tarkastellaan niin sanotun "kättelyn" prosessia - TCP-yhteyden muodostamista. Asiakkaan puolelta lähetetään paketti SYN-lipulla - tämä tarkoittaa TCP-istunnon alustamista. Päällä tässä vaiheessa isäntä luo lähdeportin ja kohdeportin (lähdeportti valitaan satunnaisesti alueelta 1024 - 655535). Kohdeportti riippuu tietystä palvelusta (http – 80, ftp – 21, pop3 – 110).

Kun paketti vastaanotetaan, palvelin lähettää vastauspaketin SYN- ja ACK-biteillä, jos se ei välitä yhteydestä. ACK – tarkoittaa kuittausbittiä. Palvelin luo myös mielivaltaisen järjestysnumeron TCP-otsikossa ja lisää sen kuittausnumeroon.

Lopuksi isäntä lähettää paketin, joka vahvistaa tiedon vastaanottamisen palvelimelta, sekä itse ensimmäisen tietolohkon.

TCP-protokollan otsikko sisältää kentän nimeltä Sequence Number, joka sisältää tietyn sekvenssin numeron. Siellä on myös Kuittausnumero-kenttä, joka ilmaisee paketin vahvistuksen tällä numerolla. Järjestysnumeroa ja kuittausnumeroa käytetään tietojen järjestyksen säilyttämiseen. Mutta tarkemmin sanottuna järjestysnumero on tavunumerointijärjestelmän raportointipiste. Turvallisuussyistä ISN:n pitäisi olla satunnainen numero. Kuittausnumeroa käytetään vahvistamaan vastaanotto ja ohjaamaan virtaa. Kuittaus kertoo lähteelle, kuinka paljon dataa on vastaanotettu ja kuinka paljon dataa kohde pystyy vastaanottamaan. Kuittausnumero on vastaanottajan odottaman seuraavan tavun järjestysnumero.

Windowsin koko -kenttä sisältää tavujen määrän, jonka vastaanottaja voi vastaanottaa. Ikkuna on osoitus lähteelle, että se voi jatkaa segmenttien lähettämistä, jos lähetettyjen tavujen kokonaismäärä on pienempi kuin kohdetavuikkuna. Kohde ohjaa lähdetavuvirtaa muuttamalla ikkunan kokoa. Nolla-ikkuna kehottaa lähettäjää lopettamaan lähetyksen, kunnes vastaanotetaan nollasta poikkeava ikkunan arvo.

Kentät Lähdeportti, Kohdeportti – lähdeportti, kohdeportti. UGR,

Kentät UGR, ACK, PSH, RST, SYN. FIN – ohjausbitit:

  • UGR – kiireellisyyden ilmaisin, näyttää TCP-pakettien prioriteetin
  • ACK – kuittaus, merkitsee tämän paketin vastaanottovahvistukseksi
  • PSH – push, työntää jonossa olevat tiedot puskureista
  • RST – nollaa, nollaa TCP-yhteys valmistuttuaan tai tauon jälkeen
  • SYN – synkronointi, synkronoi yhteyden
  • FIN – päättyy, lopettaa tiedonsiirron

Alla olevassa kuvassa näkyy virtaus TCP-tiedot Kanssa nolla arvo alkuperäinen sarjanumero. Vastaanottaja vastaanotti ja kuittasi vastaanottaneensa 2000 tavua, joten nykyinen numero kuittaus ACK = 2001. Lisäksi kohde pystyy hyväksymään vielä 6000 tavua, ja siksi se esittää ikkunan, jonka arvo on 6000. Lähde lähettää 2000 tavun segmentin järjestysnumerolla SN = 4001. Tavuille 2001 ja sitä seuraaville ei kuittauksia on vielä vastaanotettu, mutta lähde jatkaa tietojen siirtoa, kunnes ikkunan resurssit ovat loppuneet. Jos ikkunan täyttyessä lähteellä ei ole vastaanotettu kuittausta jo lähetetyille tiedoille, tietyn ajan kuluttua lähde lähettää tiedot uudelleen ensimmäisestä kuittaamattomasta tavusta alkaen.

Tämä menetelmä takaa luotettavan tiedon toimituksen vastaanottajalle. Lisäksi TCP vastaa IP:stä vastaanotettujen tietojen toimittamisesta sopivaan sovellukseen. Sovellus, johon tiedot on tarkoitettu, tunnistetaan 16-bittisellä numerolla, portin numerolla. Lähdeportin ja kohdeportin arvot löytyvät TCP-otsikosta. Oikea tiedonvaihto sovellustaso on tärkeä osa kuljetuskerroksen palveluiden toimivuutta.

TCP-yhteyden sulkeminen edellyttää puskureille ja muuttujille varatun muistin vapauttamista, ja kumpi tahansa osapuoli voi aloittaa sen. Asiakasprosessi antaa yhteyden sulkemiskomennon, joka saa TCP-asiakkaan lähettämään erityisen segmentin. Tämän segmentin otsikossa FIN-lippu on asetettu arvoon 1. Vastaanotettuaan tämän segmentin palvelin vahvistaa tämän. Tämän jälkeen palvelin lähettää asiakkaalle viimeisen segmentin, jossa myös FIN-bitti asetetaan arvoon 1; puolestaan ​​asiakas vahvistaa tämän segmentin vastaanottamisen. Tämän jälkeen kaikki yhteysresurssit molemmilta puolilta vapautetaan.


Tilaa meidän

Kuljetuksen tasolla TCP/IP-pino käytetään kahta pääprotokollaa: TCP Ja UDP. Yleiskatsaus Voit oppia lisää kuljetuskerroksen toiminnoista vastaavasta artikkelista. SISÄÄN tämä teksti Puhumme TCP:stä (Transmission Control Protocol), jota käytetään varmistamaan luotettava tiedon toimitus kuljetuskerroksella.

On olemassa yleisiä kuljetuskerroksen tehtäviä, joita sekä TCP että UDP käsittelevät. Itse asiassa on kaksi päätehtävää: datan segmentointi, tulevat sovellustasolta ja hakemuksen osoite(lähetys ja vastaanotto) porttien avulla. Voit lukea tästä lisää kuljetuskerrosta käsittelevästä artikkelista.

Lisäksi TCP tarjoaa:

  • Segmenttien luotettava toimitus.
  • Segmenttien tilaaminen vastaanotettaessa.
  • Työskentely istuntojen kanssa.
  • Lähetysnopeuden hallinta.

Katsotaanpa näitä mahdollisuuksia tarkemmin.

Segmenttien luotettava toimitus

Luotettava toimitus tarkoittaa epäonnistuneiden segmenttien automaattista uudelleenlähetystä. Jokainen segmentti on merkitty erityisellä kentällä - järjestysnumerolla. Tietyn määrän segmenttejä lähettämisen jälkeen TCP lähettävässä solmussa odottaa kuittausta vastaanottavalta solmulta, joka ilmaisee seuraavan segmentin järjestysnumeron, jonka vastaanottaja haluaa vastaanottaa. Jos tällaista vahvistusta ei saada, lähetys toistetaan automaattisesti. Jonkun määrän jälkeen epäonnistuneita yrityksiä,TCP katsoo, että kohde ei ole tavoitettavissa ja istunto on lopetettu.

Luotettava toimitus ei siis tarkoita, että tietosi menevät läpi, jos joku vetää kaapelin kytkimestä. Se tarkoittaa, että TCP:tä kuljetustasolla käyttävä ohjelmistokehittäjä tietää, että jos istuntoa ei päätetä, niin kaikki, mitä hän käski lähettää, toimitetaan vastaanottajalle ilman häviötä. On olemassa paljon tietoa, joka on kriittistä minkä tahansa tiedon menettämiselle. Jos esimerkiksi lataat sovelluksen Internetistä, yhden tavun menetys tarkoittaa, että et voi käyttää lataamaasi. Tästä syystä monet sovelluskerroksen protokollat ​​käyttävät TCP:tä siirtoon.

Segmenttien tilaaminen vastaanotettaessa

Kuten arvata saattaa, jokainen segmentti alemmilla TCP/IP-tasoilla käsitellään erikseen. Eli se pakataan vähintään yksittäiseen pakkaukseen. Paketit kulkevat verkon poikki, ja välireitittimet eivät yleensä tiedä enää mitään siitä, mitä näihin paketeihin on pakattu. Usein kuormituksen tasaamiseen tarkoitetut paketit voivat kulkea verkon läpi eri tavoin, eri välilaitteiden kautta, eri nopeuksilla. Siten vastaanottaja, purkanut ne kapselin, voi vastaanottaa segmentit eri järjestyksessä kuin missä ne lähetettiin.

TCP kokoaa ne automaattisesti uudelleen vaaditussa järjestyksessä käyttäen samaa järjestysnumerokenttää ja siirtää ne liimauksen jälkeen sovellustasolle.

Työskentely istuntojen kanssa

Ennen hyödyllisten tietojen lähettämisen aloittamista TCP:n avulla voit varmistaa, että vastaanottaja on olemassa, kuuntelee lähettäjän tarvitsemaa porttia ja on valmis vastaanottamaan tätä varten istunto kolmisuuntaisen kättelymekanismin avulla voit lukea vastaavasta artikkelista. Lisäksi istunnon aikana lähetetään hyödyllistä käyttäjädataa. Kun lähetys on valmis, istunto suljetaan, jolloin vastaanottajalle ilmoitetaan, että tietoja ei enää ole, ja lähettäjälle, että vastaanottajalle on ilmoitettu.

Siirtonopeuden ohjaus

Lähetysnopeuden säädön avulla voit säätää tiedon lähetysnopeutta vastaanottajan ominaisuuksien mukaan. Esimerkiksi jos nopea palvelin lähettää dataa hidas puhelin, palvelin lähettää tietoja puhelimelle hyväksyttävällä nopeudella.

Liukuikkunamekanismin ansiosta TCP voi työskennellä eri luotettavuuden omaavien verkkojen kanssa. Kelluvan ikkunan mekanismin avulla voit muuttaa lähetettyjen tavujen määrää, joille vastaanottajalta on saatava vahvistus. Miten suurempi koko-ikkunassa, sitä enemmän tietoja lähetetään ennen vahvistuksen vastaanottamista. varten luotettavia verkkoja vahvistuksia voidaan lähettää harvoin, jotta liikennettä ei lisätä, joten ikkunan kokoa tällaisissa verkoissa kasvatetaan automaattisesti. Jos TCP huomaa, että tietoja katoaa, ikkunan kokoa pienennetään automaattisesti. Tämä johtuu siitä, että jos lähetimme esimerkiksi 3 kilotavua tietoa emmekä saaneet vahvistusta, emme tiedä, mikä tietty osa siitä ei saapunut meille ja joudumme lähettämään kaikki kolme kilotavua uudelleen. Siksi epäluotettavissa verkoissa ikkunan koon tulisi olla minimaalinen.

Liukuikkunamekanismin avulla TCP voi jatkuvasti muuttaa ikkunan kokoa - lisätä sitä, kun kaikki on hyvin ja pienentää sitä, kun segmenttejä ei saavu. Siten minä tahansa ajankohtana ikkunan koko on enemmän tai vähemmän riittävä verkon tilaan.

TCP-rakenne

TCP-segmentin otsikolla on seuraava rakenne:

  • Lähdeportti ja kohdeportti ovat vastaanottajan ja lähettäjän porttinumerot, jotka tunnistavat lähettävän ja vastaanottavan solmun sovellukset.
  • Järjestysnumero ja kuittausnumero ovat segmentin järjestysnumero ja kuittausnumero, joita käytetään luotettavaan toimitukseen. Esimerkiksi, jos lähettäjä lähettää segmentin numerolla SN 100, vastaanottaja voi vastata siihen ACK 101 SN200:lla, mikä tarkoittaa: "Sain segmenttinumerosi 100 ja odotan sinulta 101., muuten, minulla on oma numerointini. Minun numeroni alkavat 200:lla.” Lähettäjä voi puolestaan ​​vastata numerolla SN101 ACK201, mikä tarkoittaa ”Sain sinulta segmentin numerolla 200, voin hyväksyä seuraavan 201., mutta tässä on 101. segmentti, jota odotat varten.” Ja niin edelleen.
  • Otsikon pituus - Tämä on nelibittinen kenttä, joka sisältää TCP-segmentin otsikon pituuden.
  • Varattu - 6 bittiä varataan varmuuden vuoksi.
  • Ohjaus - kenttä, jossa on liput, joita käytetään tiedonvaihdossa ja jotka kuvaavat segmentin lisätarkoitusta. Esimerkiksi FIN-lippua käytetään katkaisemaan yhteydet, SYN ja ACK asetusten tekemiseen.
  • Ikkuna - sisältää ikkunan koon, kuten edellä mainittiin.
  • Checksumm - otsikko ja tietojen tarkistussumma.
  • Kiireellinen - merkki tämän segmentin tärkeydestä (kiireellisyydestä).
  • Options on lisävalinnainen kenttä, jota voidaan käyttää esimerkiksi protokollan testaamiseen.
  • Dataosio sisältää sovelluskerroksen protokollasta saadun todellisen tiedon tai osan siitä, jos tiedot piti jakaa.

Monet ihmiset tuntevat lyhenteen TCP, paljon harvemmat tietävät, että se on tiedonsiirtoprotokolla. Mutta melkein kukaan ei tiedä kuinka se toimii.

Huomio! Tämä materiaali on tarkoitettu niille, jotka ovat todella kiinnostuneita kysymyksestä: "Kuinka verkko toimii ja mitä voin tehdä, jos tiedän sen." Jos olet edelleen hämmentynyt sellaisista sanoista kuin DNS, Telnet, Socket, voit heti unohtaa tämän materiaalin - sellaisia ​​"pelottavia" sanoja ei varmasti näy täällä, mutta tämä ei tee sisällöstä yhtään selkeämpää...

Niille jotka jäivät:

Luultavasti monet teistä ovat kuulleet sellaisia ​​sanoja kuin SYN-tulva tai IP-huijaus. Kaikki nämä ovat hyökkäystyyppejä - ensimmäinen D.O.S., toinen
koostuu IP-osoitteen huijaamisesta. Ensi silmäyksellä näillä esimerkeillä ei ole mitään yhteistä, mutta sillä välin näin ei ole - molemmat hyökkäykset eivät ole mahdollisia ilman syvällistä TCP-protokollan tuntemusta,
Inet.

TCP-protokollan määrittely on kuvattu RFC793:ssa. Suosittelen, että luet tämän asiakirjan, koska vaikka yritän välittää sinulle tärkeimmät asiat, tarjoan tämän tärkeän asiaankuuluvilla kommenteilla, joita et löydä käsikirjasta, mutta silti pienen määrän ja käytännöllisen näkökulman vuoksi. Saatan kaipaamaan joitain hienouksia.

Data välitetään pakettien muodossa. Tämä lähetyksen organisointi tarkoittaa sitä, että data, olipa se kuinka suuri tahansa, jaetaan erillisiksi fragmenteiksi, jotka muodostetaan paketeiksi (pakettien muodostus edellyttää, että dataan lisätään palvelun otsikko), jonka jälkeen data lähetetään. pakettien muodossa verkon yli (ja pakettien lähetysjärjestys saatetaan rikota). Vastaanottava järjestelmä "kokoaa" paketeista alkuperäisen datataulukon pakettiotsikoiden perusteella. Tämä ei ole kovin selvää, mutta vain siihen asti, kunnes tarkastelemme pakettien rakennetta.

TCP-pakettirakenne:

Selitän vain tärkeimmät kohdat:

Vastaanottajan osoite, vastaanottajan portti ja lähettäjän osoite, lähettäjän portti - toivottavasti tämä on selvä.

Sequence Number (SYN) - jononumero tai sarjanumero, näyttää paketin järjestysnumeron lähetyksen aikana, minkä vuoksi vastaanottava järjestelmä kerää paketit juuri niin kuin niiden pitääkin, ei siinä järjestyksessä kuin ne saapuivat.

Kuittausnumero (ACK) - kuittausnumero, näyttää mihin pakettiin SYN vastaa etäjärjestelmä, joten meillä on ajatus, että etäjärjestelmä vastaanotti pakettimme nämä tiedot
SYN.

Ohjausbitit - 6 bittiä (kaaviossa käänteisen ja ikkunan välillä). Bittiarvot:

URG: kiireellinen osoitinkenttä käytössä
ACK: kuittauskenttä käytössä
PSH: push-toiminto
RST: Käynnistä tämä yhteys uudelleen
SYN: jononumeroiden synkronointi
FIN: ei enää siirrettävää dataa

DATA on suoraan tietoja, jotka haluamme siirtää.

Mielestäni tämä on kaikki mitä sinun tarvitsee aloittaa ymmärtääksesi, kuinka protokolla toimii. Voit lukea lisää RFC793:n jäljellä olevien kenttien merkityksestä. No, ymmärrämme paremmin, miten se toimii käytännössä.

Kun haluamme muodostaa yhteyden, lähetämme etäjärjestelmään paketin, jolla on seuraava rakenne:

Asiakas - SYN (856779) - Isäntä

Missä Asiakas olemme me ja isäntä on etäjärjestelmä. Kuten näette, lähetämme paketin, joka ilmoittaa vain SYN - tämä tarkoittaa, että tämä paketti on ensimmäinen, emme vastaa mihinkään (ei ole ACK). Nykyinen Paketti näyttää jotain tältä:

20 53 52 43 00 00 44 45 53 54 00 00 08 00 45 00 00 2C C3 00 40 00 20 06 10 0C CB 5E FD BA CB 5E F3 47004 00 00 00 60 02 20 00 D9 70 00 00 02 04 05 B4 2D

Mielenkiintoinen kohta on se, mistä SYN tulee. SYN johdetaan alkuperäisestä jononumerosta
(ISN) on 32-bittinen numero 1 - 4294967295 (2 - 32. potenssi). ISN, kun järjestelmä käynnistetään uudelleen, on 1, sitten se kasvaa joka sekunti 128000 (tarkasti ottaen muutos tapahtuu 4 mikrosekunnin välein) + jokaisella muodostettu yhteys se kasvaa 64 000:lla. Osoittautuu, että ISN-yksilöllisyysjakso, jos yhteyksiä ei muodostu, on noin 4,55 tuntia. Koska mikään paketti ei kulje niin kauan verkossa, voimme olettaa, että SYN on täysin ainutlaatuinen.

Saatuaan pakettimme etäjärjestelmä vastaa, että se on vastaanottanut sen ja on valmis muodostamaan yhteyden. Datapaketti näyttää tältä:

Isäntä - SYN (758684758) ja ACK (856780) - asiakas

Kuten näet, etäjärjestelmä tekee selväksi, että se on vastaanottanut pakettimme. Tätä varten se lähettää meille ACK-ilmoituksen numerolla "meidän SYN+1". Tämän lisäksi etäjärjestelmä lähettää meille SYN-tunnuksensa (vastaamme myös). Ja vastauksemme on seuraava:

Asiakas - SYN (856780) ja ACK (758684759) - Isäntä

Luulen, että kaiken pitäisi olla sinulle nyt selvä. Jos joku ei ymmärrä, paketti tarkoittaa seuraavaa: SYN-pakettisi (758684758) on vastaanotettu, yhteys on muodostettu, SYN-numeromme on 856780.

Tätä menettelyä kutsutaan "kolminkertaiseksi vahvistukseksi" tai "kolminkertaiseksi kättelyksi". Kaksi ensimmäistä vaihetta ovat välttämättömiä järjestelmiemme SYN:n synkronoimiseksi, ja kolmas on synkronoinnin tapahtumisen vahvistaminen.

Seuraavaksi meillä on vaihto on meneillään dataa, ts. sitä varten yhteys luotiin. Lisäksi on huomioitava, että kaikissa vaiheissa TCP-protokollalla välitetyn tiedon turvallisuuden varmistaminen tapahtuu seuraavasti: lähetetty paketti sijoitetaan puskuriin ja jos tietty aika kuittauspaketti (ACK) ei tule etäjärjestelmästä, paketti lähetetään uudelleen; Jos vahvistus on saapunut, paketti katsotaan onnistuneeksi ja se poistetaan puskurista.

No, emme tarvitse enää yhteyttä, voimme sulkea sen. Tämä vaihe toistuu
koostuu useista vaiheista - toivottavasti pystyt jo lukemaan nämä paketit itse.

Asiakas - FIN(4894376) ja ACK (1896955378) - Isäntä

Isäntä - ACK (4894377) - Asiakas

Isäntä - FIN (1896955378) ja ACK (4894377) - Asiakas

Asiakas - ACK (1896955378) - Isäntä

Mielestäni tässä ei ole mitään monimutkaista. Ainoa huomionarvoinen asia on FIN-lippu, joka tarkoittaa halua katkaista yhteys.

Yhteenvetona edellä olevasta huomautetaan, missä tapauksissa sarjanumerot muuttuvat/eivät muutu:

Yhden FIN-paketin lähetys = +1
Yhden SYN-paketin lähetys = +1
Yhden ACK-paketin lähetys = 0
Yhden SYN/ACK-paketin lähetys = +1
Yhden FIN/ACK-paketin lähetys = +1
Muutos 1 sekunnissa = +128 000
Yhden yhteyden muodostaminen = +64 000

Ehkä joku kysyy: "Mitä tapahtuu, jos kone vastaanottaa paketin, jossa on ACK, jota ei ollut olemassa?" (SYN=ACK-1, mutta emme lähettäneet pakettia sellaisella SYN:llä). Saatuamme vastauksen johonkin epäselvään, me puolestaan ​​vastaamme etäjärjestelmään NACK-paketilla (tarkoittaa "en tiedä mistä puhut", yhteyttä ei muodosteta), mutta toivon, että puhumme tästä sinulle ensi kerralla tarkemmin.