TCP vs. UDP: Luotettavuus- ja tehokkuuskeskustelun mysteerin selvittäminen

Tänään aloitamme keskittymällä TCP:hen. Mainitsimme aiemmin kerrostusta käsittelevässä luvussa tärkeän asian. Verkkotasolla ja sen alla on kyse enemmän isäntien välisistä yhteyksistä, mikä tarkoittaa, että tietokoneesi on tiedettävä, missä toinen tietokone on, jotta se voi muodostaa siihen yhteyden. Verkossa tapahtuva tiedonsiirto on kuitenkin usein prosessien välistä tiedonsiirtoa pikemminkin kuin koneiden välistä tiedonsiirtoa. Siksi TCP-protokolla esittelee portin käsitteen. Porttia voi käyttää vain yksi prosessi, mikä tarjoaa suoran tiedonsiirron eri isännillä suoritettavien sovellusprosessien välille.

Siirtokerroksen tehtävänä on tarjota suoria viestintäpalveluita eri isännissä suoritettavien sovellusprosessien välille, joten sitä kutsutaan myös päästä päähän -protokollaksi. Siirtokerros piilottaa verkon ydintiedot, jolloin sovellusprosessi näkee ikään kuin kahden siirtokerroksen yksikön välillä olisi looginen päästä päähän -viestintäkanava.

TCP on lyhenne sanoista Transmission Control Protocol ja se tunnetaan yhteyskeskeisenä protokollana. Tämä tarkoittaa, että ennen kuin yksi sovellus voi alkaa lähettää dataa toiselle, näiden kahden prosessin on tehtävä kättely. Kättely on loogisesti yhdistetty prosessi, joka varmistaa datan luotettavan siirron ja säännöllisen vastaanoton. Kättelyn aikana yhteys muodostetaan lähde- ja kohdekoneiden välille vaihtamalla sarja ohjauspaketteja ja sopimalla tietyistä parametreista ja säännöistä onnistuneen datansiirron varmistamiseksi.

Mikä on TCP? (MylinkinginVerkkonapautusjaVerkkopakettien välittäjäpystyi käsittelemään sekä TCP- että UDP-paketteja)
TCP (Transmission Control Protocol) on yhteydekeskeinen, luotettava, tavuvirtaan perustuva siirtokerroksen tietoliikenneprotokolla.

YhteyskeskeinenYhteyskeskeinen tarkoittaa, että TCP-viestintä on kahdenkeskistä eli pisteestä pisteeseen -viestintää, toisin kuin UDP, joka voi lähettää viestejä useille isännille samanaikaisesti, joten kahdenkeskistä viestintää ei voida saavuttaa.
LuotettavaTCP:n luotettavuus varmistaa, että paketit toimitetaan luotettavasti vastaanottajalle verkkoyhteyden muutoksista riippumatta, mikä tekee TCP:n protokollapakettimuodosta monimutkaisemman kuin UDP:n.
TavuvirtapohjainenTCP:n tavuvirtaan perustuva luonne mahdollistaa minkä tahansa kokoisten viestien lähettämisen ja takaa viestijärjestyksen: vaikka edellistä viestiä ei olisi vastaanotettu kokonaan ja vaikka seuraavat tavut olisi vastaanotettu, TCP ei toimita niitä sovelluskerrokselle käsiteltäväksi ja hylkää automaattisesti kaksoiskappalepaketit.
Kun isäntä A ja isäntä B ovat muodostaneet yhteyden, sovelluksen tarvitsee käyttää vain virtuaalista tietoliikennelinjaa datan lähettämiseen ja vastaanottamiseen, mikä varmistaa tiedonsiirron. TCP-protokolla vastaa yhteyden muodostamisen, katkaisemisen ja pidon kaltaisten tehtävien hallinnasta. On huomattava, että tässä virtuaalilinja tarkoittaa vain yhteyden muodostamista, kun taas TCP-protokollan yhteys osoittaa vain, että osapuolet voivat aloittaa tiedonsiirron, ja varmistaa datan luotettavuuden. Verkkolaitteet hoitavat reititys- ja siirtosolmut; TCP-protokolla itse ei ole kiinnostunut näistä yksityiskohdista.

TCP-yhteys on kaksisuuntainen palvelu, mikä tarkoittaa, että isäntä A ja isäntä B voivat lähettää dataa molempiin suuntiin TCP-yhteydessä. Toisin sanoen dataa voidaan siirtää isännän A ja isännän B välillä kaksisuuntaisessa virrassa.

TCP tallentaa tiedot tilapäisesti yhteyden lähetyspuskuriin. Tämä lähetyspuskuri on yksi kolmenvälisen kättelyn aikana määritetyistä välimuisteista. Tämän jälkeen TCP lähettää lähetysvälimuistissa olevat tiedot kohdekoneen vastaanottovälimuistiin oikeaan aikaan. Käytännössä jokaisella vertaiskoneella on lähetysvälimuisti ja vastaanottovälimuisti, kuten tässä on esitetty:

TCP-UDP

Lähetyspuskuri on TCP-toteutuksen lähettäjän puolella ylläpitämä muistialue, jota käytetään lähetettävän datan tilapäiseen tallentamiseen. Kun yhteyden muodostamiseksi suoritetaan kolmisuuntainen kättely, lähetysvälimuisti perustetaan ja sitä käytetään datan tallentamiseen. Lähetyspuskuria säädetään dynaamisesti verkon ruuhkan ja vastaanottajan palautteen mukaan.

Vastaanottopuskuri on TCP-toteutuksen ylläpitämä muistialue vastaanottavalla puolella, jota käytetään vastaanotetun datan väliaikaiseen tallentamiseen. TCP tallentaa vastaanotetun datan vastaanottovälimuistiin ja odottaa, että ylempi sovellus lukee sen.

Huomaa, että lähetys- ja vastaanottovälimuistin koko on rajoitettu. Kun välimuisti on täynnä, TCP voi käyttää joitakin strategioita, kuten ruuhkanhallintaa ja virtauksen hallintaa, varmistaakseen luotettavan tiedonsiirron ja verkon vakauden.

Tietokoneverkoissa tiedonsiirto isäntäkoneiden välillä tapahtuu segmenttien avulla. Mitä siis on pakettisegmentti?

TCP luo TCP-segmentin eli pakettisegmentin jakamalla saapuvan datavirran paloihin ja lisäämällä TCP-otsikot jokaiseen palaan. Kutakin segmenttiä voidaan lähettää vain rajoitetun ajan, eikä se saa ylittää segmentin enimmäiskokoa (MSS). Matkallaan alas pakettisegmentti kulkee linkkikerroksen läpi. Linkkikerroksella on suurin lähetysyksikkö (MTU), joka on suurin pakettikoko, joka voi kulkea datayhteyskerroksen läpi. Suurin lähetysyksikkö liittyy yleensä tietoliikennerajapintaan.

Mitä eroa on MSS:llä ja MTU:lla?

Tietokoneverkoissa hierarkkinen arkkitehtuuri on erittäin tärkeä, koska se ottaa huomioon eri tasojen väliset erot. Jokaisella kerroksella on eri nimi; siirtokerroksessa dataa kutsutaan segmentiksi ja verkkokerroksessa dataa IP-paketiksi. Siksi suurin lähetysyksikkö (MTU) voidaan ajatella verkkokerroksen siirrettävien IP-pakettien enimmäiskokona, kun taas suurin segmentin koko (MSS) on siirtokerroksen käsite, joka viittaa TCP-paketin kerrallaan siirrettävien tietojen enimmäismäärään.

Huomaa, että kun segmentin enimmäiskoko (MSS) on suurempi kuin lähetysyksikön enimmäiskoko (MTU), IP-fragmentointi suoritetaan verkkotasolla, eikä TCP jaa suurempia tietoja MTU-koolle sopiviin segmentteihin. Verkkotasolla on IP-tasolle omistettu osio.

TCP-pakettisegmentin rakenne
Tutkitaanpa TCP-otsikoiden muotoa ja sisältöä.

TCP-segmentti

Järjestysnumero: Tietokoneen yhteyden muodostuessa luoma satunnaisluku, joka toimii sen alkuarvona TCP-yhteyden muodostuessa. Järjestysnumero lähetetään vastaanottajalle SYN-paketin mukana. Tiedonsiirron aikana lähettäjä kasvattaa järjestysnumeroa lähetetyn datan määrän mukaan. Vastaanottaja arvioi datan järjestyksen vastaanotetun järjestysnumeron perusteella. Jos data havaitaan epäjärjestyksessä, vastaanottaja järjestää datan uudelleen varmistaakseen sen järjestyksen.

Kuittausnumero: Tämä on TCP:ssä käytetty järjestysnumero, jolla kuitataan datan vastaanotto. Se ilmaisee lähettäjän odottaman seuraavan datan järjestysnumeron. TCP-yhteydessä vastaanottaja määrittää vastaanotetun datapakettisegmentin järjestysnumeron perusteella, mitkä datat on vastaanotettu onnistuneesti. Kun vastaanottaja vastaanottaa datan onnistuneesti, se lähettää lähettäjälle ACK-paketin, joka sisältää kuittausnumeron. ACK-paketin vastaanotettuaan lähettäjä voi vahvistaa, että data on vastaanotettu onnistuneesti ennen vastausnumeron kuittaamista.

TCP-segmentin ohjausbitteihin kuuluvat seuraavat:

ACK-bittiKun tämä bitti on 1, se tarkoittaa, että kuittausvastauskenttä on kelvollinen. TCP määrittää, että tämän bitin on oltava 1 lukuun ottamatta SYN-paketteja, kun yhteys muodostetaan aluksi.
RST-bittiKun tämä bitti on 1, se osoittaa, että TCP-yhteydessä on poikkeus ja yhteys on pakotettava katkaisemaan.
SYN-bitti: Kun tämä bitti on asetettu arvoon 1, se tarkoittaa, että yhteys muodostetaan ja järjestysnumeron alkuarvo asetetaan järjestysnumerokenttään.
FIN-bittiKun tämä bitti on 1, se tarkoittaa, että dataa ei enää lähetetä tulevaisuudessa ja yhteyttä halutaan muodostaa.
TCP:n eri toiminnot ja ominaisuudet ilmenevät TCP-pakettisegmenttien rakenteesta.

Mikä on UDP? (MylinkinginVerkkonapautusjaVerkkopakettien välittäjäpystyi käsittelemään sekä TCP- että UDP-paketteja)
UDP (User Datagram Protocol) on yhteydetön tiedonsiirtoprotokolla. TCP:hen verrattuna UDP ei tarjoa monimutkaisia ​​ohjausmekanismeja. UDP-protokolla mahdollistaa sovellusten lähettää kapseloituja IP-paketteja suoraan ilman yhteyden muodostamista. Kun kehittäjä päättää käyttää UDP:tä TCP:n sijaan, sovellus kommunikoi suoraan IP-osoitteen kanssa.

UDP-protokollan koko nimi on User Datagram Protocol, ja sen otsikko on vain kahdeksan tavua (64 bittiä), mikä on hyvin ytimekäs. UDP-otsikon muoto on seuraava:

UDP-segmentti

Kohde- ja lähdeportitNiiden päätarkoitus on osoittaa, mille prosessille UDP:n tulisi lähettää paketteja.
Paketin kokoPakettikoko-kenttä sisältää UDP-otsikon koon sekä datan koon.
TarkistussummaTarkissumman tehtävänä on varmistaa UDP-otsikoiden ja -datan luotettava toimitus. Tarkissumman tehtävänä on havaita, onko UDP-paketin lähetyksen aikana tapahtunut virhe tai vioittumista, ja varmistaa siten datan eheys.

TCP:n ja UDP:n väliset erot MylinkingissäVerkkonapautusjaVerkkopakettien välittäjäpystyi käsittelemään sekä TCP- että UDP-paketteja
TCP ja UDP eroavat toisistaan ​​seuraavissa suhteissa:

TCP vs. UDP

YhteysTCP on yhteyskeskeinen siirtoprotokolla, joka vaatii yhteyden muodostamisen ennen tiedonsiirtoa. UDP taas ei vaadi yhteyttä ja voi siirtää tietoa välittömästi.

PalveluobjektiTCP on kahden pisteen palvelu, eli yhteydellä on vain kaksi päätepistettä kommunikoidakseen keskenään. UDP tukee kuitenkin vuorovaikutteista kahden yksikön, yhden ja moneen välistä ja monen ja moneen välistä kommunikointia, joka voi kommunikoida useiden isäntien kanssa samanaikaisesti.

LuotettavuusTCP tarjoaa palvelun, joka toimittaa dataa luotettavasti varmistaen, että data on virheetöntä, häviötöntä, kaksoiskappaleetonta ja saapuu perille pyynnöstä. UDP puolestaan ​​tekee parhaansa eikä takaa luotettavaa toimitusta. UDP:ssä voi esiintyä datahäviöitä ja muita ongelmia lähetyksen aikana.

Ruuhkien hallinta, virtauksen hallintaTCP:ssä on ruuhkanhallinta- ja vuonhallintamekanismeja, jotka voivat säätää tiedonsiirtonopeutta verkon olosuhteiden mukaan varmistaakseen tiedonsiirron turvallisuuden ja vakauden. UDP:ssä ei ole ruuhkanhallinta- tai vuonhallintamekanismeja, joten vaikka verkko olisi erittäin ruuhkainen, se ei tee muutoksia UDP:n lähetysnopeuteen.

Yläosan yläpuolellaTCP:llä on pitkä otsikkopituus, tyypillisesti 20 tavua, joka kasvaa, kun käytetään asetuskenttiä. UDP:llä taas on kiinteä, vain 8 tavun otsikko, joten UDP:n otsikkokuorma on pienempi.

TCP vs. UDP

TCP- ja UDP-sovellusskenaariot:
TCP ja UDP ovat kaksi erilaista siirtokerrosprotokollaa, ja niillä on joitakin eroja sovellusskenaarioissa.

Koska TCP on yhteyskeskeinen protokolla, sitä käytetään ensisijaisesti tilanteissa, joissa tarvitaan luotettavaa tiedonsiirtoa. Joitakin yleisiä käyttötapauksia ovat:

FTP-tiedostonsiirtoTCP voi varmistaa, että tiedostoja ei katoa tai vioitu siirron aikana.
HTTP/HTTPSTCP varmistaa verkkosisällön eheyden ja oikeellisuuden.
Koska UDP on yhteydetön protokolla, se ei tarjoa luotettavuuden takuuta, mutta sillä on tehokkuuden ja reaaliaikaisuuden ominaisuuksia. UDP sopii seuraaviin tilanteisiin:

Matalapakettiliikenne, kuten DNS (Domain Name System)DNS-kyselyt ovat yleensä lyhyitä paketteja, ja UDP pystyy suorittamaan ne nopeammin.
Multimediaviestintä, kuten video ja ääniUDP voi tarjota pienemmän viiveen multimedialähetyksissä, joissa reaaliaikaiset vaatimukset ovat korkeat, jotta data voidaan lähettää oikea-aikaisesti.
LähetysviestintäUDP tukee yhden ja moneen välistä ja monen ja moneen välistä viestintää ja sitä voidaan käyttää yleislähetysviestien lähettämiseen.

Yhteenveto
Tänään opimme TCP:stä. TCP on yhteydellinen, luotettava ja tavuvirtaan perustuva siirtokerroksen tietoliikenneprotokolla. Se varmistaa datan luotettavan siirron ja säännöllisen vastaanoton muodostamalla yhteyden, kättelyn ja kuittauksen. TCP-protokolla käyttää portteja prosessien välisen tiedonsiirron toteuttamiseen ja tarjoaa suoria tietoliikennepalveluita eri isännissä toimiville sovellusprosesseille. TCP-yhteydet ovat kaksisuuntaisia, mikä mahdollistaa samanaikaisen kaksisuuntaisen tiedonsiirron. UDP on sitä vastoin yhteydetön tietoliikenneprotokolla, joka ei tarjoa luotettavuustakeita ja sopii joihinkin tilanteisiin, joissa on korkeat reaaliaikaiset vaatimukset. TCP ja UDP eroavat toisistaan ​​yhteystilan, palvelukohteen, luotettavuuden, ruuhkanhallinnan, virtauksenhallinnan ja muiden ominaisuuksien suhteen, ja myös niiden sovellusskenaariot ovat erilaisia.


Julkaisun aika: 03.12.2024