TCP vs. UDP: Avmystifisering av debatten om pålitelighet vs. effektivitet

I dag skal vi begynne med å fokusere på TCP. Tidligere i kapittelet om lagdeling nevnte vi et viktig poeng. På nettverkslaget og nedenfor handler det mer om vert-til-vert-tilkoblinger, som betyr at datamaskinen din må vite hvor en annen datamaskin er for å kunne koble til den. Kommunikasjon i et nettverk er imidlertid ofte kommunikasjon mellom prosesser snarere enn mellom maskiner. Derfor introduserer TCP-protokollen konseptet port. En port kan bare være opptatt av én prosess, noe som gir direkte kommunikasjon mellom applikasjonsprosesser som kjører på forskjellige verter.

Transportlagets oppgave er å tilby direkte kommunikasjonstjenester mellom applikasjonsprosesser som kjører på forskjellige verter, så det er også kjent som en ende-til-ende-protokoll. Transportlaget skjuler kjernedetaljene i nettverket, slik at applikasjonsprosessen kan se det som om det finnes en logisk ende-til-ende-kommunikasjonskanal mellom de to transportlagsenhetene.

TCP står for Transmission Control Protocol og er kjent som en forbindelsesorientert protokoll. Dette betyr at før ett program kan begynne å sende data til det andre, må de to prosessene utføre et håndtrykk. Håndtrykk er en logisk tilkoblet prosess som sikrer pålitelig overføring og ordnet mottak av data. Under håndtrykket opprettes en forbindelse mellom kilde- og målverten ved å utveksle en serie kontrollpakker og bli enige om noen parametere og regler for å sikre vellykket dataoverføring.

Hva er TCP? (Mylinking'sNettverkstrykkogNettverkspakkemeglerkunne behandle både TCP- eller UDP-pakker)
TCP (Transmission Control Protocol) er en tilkoblingsorientert, pålitelig, bytestrømbasert transportlagskommunikasjonsprotokoll.

TilkoblingsorientertTilkoblingsorientert betyr at TCP-kommunikasjon er én-til-én, det vil si punkt-til-punkt ende-til-ende-kommunikasjon, i motsetning til UDP, som kan sende meldinger til flere verter samtidig, slik at én-til-mange-kommunikasjon ikke kan oppnås.
PåliteligTCPs pålitelighet sikrer at pakker leveres pålitelig til mottakeren uavhengig av endringer i nettverkskoblingen, noe som gjør protokollpakkeformatet til TCP mer komplekst enn UDPs.
Byte-stream-basertTCPs bytestrømbaserte natur tillater overføring av meldinger av alle størrelser og garanterer meldingsrekkefølge: selv om den forrige meldingen ikke er mottatt fullstendig, og selv om de påfølgende bytene er mottatt, vil ikke TCP levere dem til applikasjonslaget for behandling og vil automatisk slippe dupliserte pakker.
Når vert A og vert B har opprettet en forbindelse, trenger applikasjonen bare å bruke den virtuelle kommunikasjonslinjen til å sende og motta data, og dermed sikre dataoverføring. TCP-protokollen er ansvarlig for å kontrollere oppgaver som etablering, frakobling og venting av forbindelse. Det skal bemerkes at her sier vi at den virtuelle linjen kun betyr å opprette en forbindelse, mens TCP-protokollforbindelsen bare indikerer at de to sidene kan starte dataoverføring, og for å sikre påliteligheten til dataene. Ruting- og transportnodene håndteres av nettverksenhetene; TCP-protokollen i seg selv er ikke opptatt av disse detaljene.

En TCP-tilkobling er en fullduplekstjeneste, som betyr at vert A og vert B kan overføre data i begge retninger i en TCP-tilkobling. Det vil si at data kan overføres mellom vert A og vert B i en toveis flyt.

TCP lagrer midlertidig data i forbindelsens sendebuffer. Denne sendebufferen er en av mellombufferne som settes opp under treveishåndtrykket. Deretter vil TCP sende dataene i sendebufferen til mottaksbufferen til destinasjonsverten på riktig tidspunkt. I praksis vil hver peer ha en sendebuffer og en mottaksbuffer, som vist her:

TCP-UDP

Sendbufferen er et minneområde som vedlikeholdes av TCP-implementeringen på avsendersiden, og som brukes til midlertidig å lagre data som skal sendes. Når treveishåndtrykket utføres for å opprette en forbindelse, settes sendebufferen opp og brukes til å lagre data. Sendbufferen justeres dynamisk i henhold til nettverksbelastning og tilbakemeldinger fra mottakeren.

En mottaksbuffer er et minneområde som vedlikeholdes av TCP-implementasjonen på mottakersiden, og som brukes til å midlertidig lagre mottatte data. TCP lagrer de mottatte dataene i mottaksbufferen og venter på at den øvre applikasjonen skal lese dem.

Merk at størrelsen på sende- og mottaksbufferen er begrenset. Når bufferen er full, kan TCP ta i bruk strategier, som for eksempel kontroll av overbelastning, flytkontroll osv., for å sikre pålitelig dataoverføring og nettverksstabilitet.

I datanettverk utføres dataoverføring mellom verter ved hjelp av segmenter. Så hva er et pakkesegment?

TCP oppretter et TCP-segment, eller pakkesegment, ved å dele den innkommende strømmen i deler og legge til TCP-overskrifter i hver del. Hvert segment kan bare overføres i en begrenset tidsperiode og kan ikke overskride maksimal segmentstørrelse (MSS). På vei ned passerer et pakkesegment gjennom koblingslaget. Koblingslaget har en maksimal overføringsenhet (MTU), som er den maksimale pakkestørrelsen som kan passere gjennom datakoblingslaget. Den maksimale overføringsenheten er vanligvis relatert til kommunikasjonsgrensesnittet.

Så hva er forskjellen mellom MSS og MTU?

I datanettverk er den hierarkiske arkitekturen svært viktig fordi den tar hensyn til forskjellene mellom de ulike nivåene. Hvert lag har et annet navn; i transportlaget kalles dataene et segment, og i nettverkslaget kalles dataene en IP-pakke. Derfor kan Maximum Transmission Unit (MTU) betraktes som den maksimale IP-pakkestørrelsen som kan overføres av nettverkslaget, mens Maximum Segment Size (MSS) er et transportlagkonsept som refererer til den maksimale mengden data som kan overføres av en TCP-pakke om gangen.

Merk at når den maksimale segmentstørrelsen (MSS) er større enn den maksimale overføringsenheten (MTU), vil IP-fragmentering bli utført på nettverkslaget, og TCP vil ikke dele de større dataene inn i segmenter som er egnet for MTU-størrelse. Det vil være en seksjon på nettverkslaget dedikert til IP-laget.

TCP-pakkesegmentstruktur
La oss utforske formatet og innholdet i TCP-overskrifter.

TCP-segment

SekvensnummerEt tilfeldig tall som genereres av datamaskinen når forbindelsen opprettes, som sin startverdi når TCP-forbindelsen opprettes, og sekvensnummeret sendes til mottakeren via SYN-pakken. Under dataoverføring øker senderen sekvensnummeret i henhold til mengden data som sendes. Mottakeren vurderer rekkefølgen på dataene i henhold til det mottatte sekvensnummeret. Hvis dataene oppdages å være i feil rekkefølge, vil mottakeren endre rekkefølgen på dataene for å sikre rekkefølgen på dataene.

BekreftelsesnummerDette er et sekvensnummer som brukes i TCP for å bekrefte mottak av data. Det indikerer sekvensnummeret til de neste dataene som avsenderen forventer å motta. I en TCP-tilkobling bestemmer mottakeren hvilke data som er mottatt basert på sekvensnummeret til det mottatte datapakkesegmentet. Når mottakeren mottar dataene, sender den en ACK-pakke til avsenderen, som inneholder bekreftelsesnummeret. Etter å ha mottatt ACK-pakken, kan avsenderen bekrefte at dataene er mottatt før svarnummeret bekreftes.

Kontrollbitene i et TCP-segment inkluderer følgende:

ACK-bitNår denne biten er 1, betyr det at bekreftelsessvarfeltet er gyldig. TCP spesifiserer at denne biten må settes til 1, bortsett fra for SYN-pakker når forbindelsen opprettes første gang.
RST-bitNår denne biten er 1, indikerer det at det er et unntak i TCP-tilkoblingen, og tilkoblingen må tvinges til å bli frakoblet.
SYN-bitNår denne biten er satt til 1, betyr det at forbindelsen skal opprettes, og startverdien til sekvensnummeret angis i sekvensnummerfeltet.
FIN-bitNår denne biten er 1, betyr det at det ikke vil bli sendt flere data i fremtiden, og at tilkoblingen er ønsket.
De ulike funksjonene og egenskapene til TCP er nedfelt i strukturen til TCP-pakkesegmentene.

Hva er UDP? (MylinkingsNettverkstrykkogNettverkspakkemeglerkunne behandle både TCP- eller UDP-pakker)
User Datagram Protocol (UDP) er en forbindelsesløs kommunikasjonsprotokoll. Sammenlignet med TCP tilbyr ikke UDP komplekse kontrollmekanismer. UDP-protokollen lar applikasjoner sende innkapslede IP-pakker direkte uten å opprette en forbindelse. Når utvikleren velger å bruke UDP i stedet for TCP, kommuniserer applikasjonen direkte med IP-adressen.

Det fulle navnet på UDP-protokollen er User Datagram Protocol, og overskriften er bare åtte byte (64 bit), noe som er veldig kortfattet. Formatet til UDP-overskriften er som følger:

UDP-segmentet

Destinasjons- og kildeporterHovedformålet deres er å indikere hvilken prosess UDP skal sende pakker til.
PakkestørrelsePakkestørrelsesfeltet inneholder størrelsen på UDP-headeren pluss størrelsen på dataene
SjekksumUtviklet for å sikre pålitelig levering av UDP-overskrifter og -data. Sjekksummens rolle er å oppdage om det har oppstått en feil eller korrupsjon under overføringen av en UDP-pakke for å sikre dataenes integritet.

Forskjeller mellom TCP og UDP i MylinkingNettverkstrykkogNettverkspakkemeglerkunne behandle både TCP- eller UDP-pakker
TCP og UDP er forskjellige på følgende måter:

TCP vs. UDP

ForbindelseTCP er en tilkoblingsorientert transportprotokoll som krever at en tilkobling opprettes før data kan overføres. UDP, derimot, krever ikke en tilkobling og kan overføre data umiddelbart.

TjenesteobjektTCP er en én-til-én-topunktstjeneste, det vil si at en forbindelse bare har to endepunkter å kommunisere med hverandre. UDP støtter imidlertid én-til-én-, én-til-mange- og mange-til-mange-interaktiv kommunikasjon, som kan kommunisere med flere verter samtidig.

PålitelighetTCP tilbyr tjenesten for pålitelig levering av data, og sikrer at dataene er feilfrie, tapsfrie, ikke-dupliserte og ankommer på forespørsel. UDP, derimot, gjør sitt beste og garanterer ikke pålitelig levering. UDP kan lide av datatap og andre situasjoner under overføring.

Kontroll av trafikkork, flytkontrollTCP har mekanismer for overbelastningskontroll og flytkontroll, som kan justere dataoverføringshastigheten i henhold til nettverksforholdene for å sikre sikkerheten og stabiliteten til dataoverføringen. UDP har ikke mekanismer for overbelastningskontroll og flytkontroll, selv om nettverket er svært overbelastet, vil det ikke gjøre justeringer av UDP-sendehastigheten.

Topptekst overheadTCP har en lang headerlengde, vanligvis 20 byte, som øker når alternativfelt brukes. UDP har derimot en fast header på bare 8 byte, så UDP har lavere header-overhead.

TCP vs. UDP

TCP- og UDP-applikasjonsscenarier:
TCP og UDP er to forskjellige transportlagsprotokoller, og de har noen forskjeller i applikasjonsscenarier.

Siden TCP er en tilkoblingsorientert protokoll, brukes den primært i scenarier der pålitelig datalevering er nødvendig. Noen vanlige brukstilfeller inkluderer:

FTP-filoverføringTCP kan sikre at filer ikke går tapt eller blir ødelagt under overføring.
HTTP/HTTPSTCP sikrer integriteten og korrektheten til nettinnhold.
Fordi UDP er en forbindelsesløs protokoll, gir den ingen pålitelighetsgaranti, men den har egenskapene effektivitet og sanntidsfunksjonalitet. UDP er egnet for følgende scenarier:

Trafikk med lav pakkemengde, som for eksempel DNS (Domain Name System)DNS-spørringer er vanligvis korte pakker, og UDP kan fullføre dem raskere.
Multimediekommunikasjon som video og lydFor multimediaoverføring med høye sanntidskrav kan UDP gi lavere latens for å sikre at data kan overføres i tide.
kringkastingskommunikasjonUDP støtter én-til-mange- og mange-til-mange-kommunikasjon og kan brukes til overføring av kringkastingsmeldinger.

Sammendrag
I dag lærte vi om TCP. TCP er en tilkoblingsorientert, pålitelig, bytestrømbasert transportlagskommunikasjonsprotokoll. Den sikrer pålitelig overføring og ordnet mottak av data ved å etablere tilkobling, håndtrykk og bekreftelse. TCP-protokollen bruker porter for å realisere kommunikasjonen mellom prosesser, og tilbyr direkte kommunikasjonstjenester for applikasjonsprosesser som kjører på forskjellige verter. TCP-tilkoblinger er fulldupleks, noe som tillater samtidig toveis dataoverføring. I motsetning til dette er UDP en tilkoblingsløs orientert kommunikasjonsprotokoll, som ikke gir pålitelighetsgarantier og er egnet for noen scenarier med høye sanntidskrav. TCP og UDP er forskjellige i tilkoblingsmodus, tjenesteobjekt, pålitelighet, overbelastningskontroll, flytkontroll og andre aspekter, og deres applikasjonsscenarier er også forskjellige.


Publisert: 03. des. 2024