TCP vs. UDP: Afmystificering af debatten om pålidelighed vs. effektivitet

I dag starter vi med at fokusere på TCP. Tidligere i kapitlet om lagdeling nævnte vi et vigtigt punkt. På netværkslaget og nedenfor handler det mere om vært-til-vært-forbindelser, hvilket betyder, at din computer skal vide, hvor en anden computer er for at kunne oprette forbindelse til den. Kommunikation i et netværk er dog ofte kommunikation mellem processer snarere end kommunikation mellem maskiner. Derfor introducerer TCP-protokollen konceptet port. En port kan kun være optaget af én proces, hvilket giver direkte kommunikation mellem applikationsprocesser, der kører på forskellige værter.

Transportlagets opgave er at levere direkte kommunikationstjenester mellem applikationsprocesser, der kører på forskellige værter, så det er også kendt som en end-to-end-protokol. Transportlaget skjuler netværkets kernedetaljer, hvilket gør det muligt for applikationsprocessen at se, at der er en logisk end-to-end-kommunikationskanal mellem de to transportlagsenheder.

TCP står for Transmission Control Protocol og er kendt som en forbindelsesorienteret protokol. Det betyder, at før en applikation kan begynde at sende data til den anden, skal de to processer udføre et handshake. Handshake er en logisk forbundet proces, der sikrer pålidelig transmission og ordnet modtagelse af data. Under handshake etableres en forbindelse mellem kilde- og destinationsværterne ved at udveksle en række kontrolpakker og aftale nogle parametre og regler for at sikre vellykket datatransmission.

Hvad er TCP? (Mylinking'sNetværkstapogNetværkspakkemæglerkunne behandle både TCP- eller UDP-pakker)
TCP (Transmission Control Protocol) er en forbindelsesorienteret, pålidelig, byte-stream-baseret transportlagskommunikationsprotokol.

ForbindelsesorienteretForbindelsesorienteret betyder, at TCP-kommunikation er en-til-en, det vil sige punkt-til-punkt end-to-end-kommunikation, i modsætning til UDP, som kan sende beskeder til flere værter på samme tid, så en-til-mange-kommunikation kan ikke opnås.
PålideligTCP's pålidelighed sikrer, at pakker leveres pålideligt til modtageren uanset ændringer i netværksforbindelsen, hvilket gør TCP's protokolpakkeformat mere komplekst end UDP's.
Byte-stream-baseretTCP's byte-stream-baserede natur muliggør transmission af beskeder af enhver størrelse og garanterer beskedrækkefølge: selvom den forrige besked ikke er modtaget fuldt ud, og selvom de efterfølgende bytes er modtaget, vil TCP ikke levere dem til applikationslaget til behandling og vil automatisk droppe duplikerede pakker.
Når vært A og vært B har etableret en forbindelse, behøver applikationen kun at bruge den virtuelle kommunikationslinje til at sende og modtage data og dermed sikre datatransmission. TCP-protokollen er ansvarlig for at kontrollere opgaver såsom etablering, afbrydelse og fastholdelse af forbindelse. Det skal bemærkes, at vi her siger, at den virtuelle linje kun betyder at etablere en forbindelse, mens TCP-protokolforbindelse kun indikerer, at de to sider kan starte datatransmissionen og sikre dataenes pålidelighed. Routing- og transportnoderne håndteres af netværksenhederne; TCP-protokollen i sig selv er ikke bekymret for disse detaljer.

En TCP-forbindelse er en fuld-duplex-tjeneste, hvilket betyder, at vært A og vært B kan overføre data i begge retninger i en TCP-forbindelse. Det vil sige, at data kan overføres mellem vært A og vært B i et tovejs flow.

TCP lagrer midlertidigt data i forbindelsens sendebuffer. Denne sendebuffer er en af ​​de cacher, der oprettes under trevejs-handshake. Derefter sender TCP dataene i sendecachen til modtagecachen på destinationsværten på det rette tidspunkt. I praksis vil hver peer have en sendecache og en modtagecache, som vist her:

TCP-UDP

Sendbufferen er et hukommelsesområde, der vedligeholdes af TCP-implementeringen på afsendersiden, og som bruges til midlertidigt at lagre data, der skal sendes. Når trevejs-handshake udføres for at etablere en forbindelse, konfigureres sendecachen og bruges til at lagre data. Sendbufferen justeres dynamisk i henhold til netværksbelastning og feedback fra modtageren.

En receive buffer er et hukommelsesområde, der vedligeholdes af TCP-implementeringen på modtagersiden, og som bruges til midlertidigt at lagre modtagne data. TCP gemmer de modtagne data i receive cachen og venter på, at den øvre applikation læser dem.

Bemærk at størrelsen af ​​send-cachen og receive-cachen er begrænset. Når cachen er fuld, kan TCP anvende visse strategier, såsom overbelastningskontrol, flowkontrol osv., for at sikre pålidelig datatransmission og netværksstabilitet.

I computernetværk udføres dataoverførsel mellem værter ved hjælp af segmenter. Så hvad er et pakkesegment?

TCP opretter et TCP-segment, eller pakkesegment, ved at opdele den indgående strøm i bidder og tilføje TCP-headere til hvert bidder. Hvert segment kan kun transmitteres i et begrænset tidsrum og må ikke overstige den maksimale segmentstørrelse (MSS). På vej ned passerer et pakkesegment gennem linklaget. Linklaget har en maksimal transmissionsenhed (MTU), som er den maksimale pakkestørrelse, der kan passere gennem datalinklaget. Den maksimale transmissionsenhed er normalt relateret til kommunikationsgrænsefladen.

Så hvad er forskellen på MSS og MTU?

I computernetværk er den hierarkiske arkitektur meget vigtig, fordi den tager højde for forskellene mellem de forskellige niveauer. Hvert lag har et forskelligt navn; i transportlaget kaldes dataene et segment, og i netværkslaget kaldes dataene en IP-pakke. Derfor kan den maksimale transmissionsenhed (MTU) betragtes som den maksimale IP-pakkestørrelse, der kan transmitteres af netværkslaget, mens den maksimale segmentstørrelse (MSS) er et transportlagsbegreb, der refererer til den maksimale mængde data, der kan transmitteres af en TCP-pakke ad gangen.

Bemærk, at når den maksimale segmentstørrelse (MSS) er større end den maksimale transmissionsenhed (MTU), vil IP-fragmentering blive udført på netværkslaget, og TCP vil ikke opdele de større data i segmenter, der er egnede til MTU-størrelsen. Der vil være et afsnit på netværkslaget dedikeret til IP-laget.

TCP-pakkesegmentstruktur
Lad os undersøge formatet og indholdet af TCP-headere.

TCP-segment

SekvensnummerEt tilfældigt tal genereret af computeren, når forbindelsen etableres, som dens startværdi, når TCP-forbindelsen etableres, og sekvensnummeret sendes til modtageren via SYN-pakken. Under dataoverførslen øger afsenderen sekvensnummeret i henhold til mængden af ​​sendte data. Modtageren vurderer rækkefølgen af ​​dataene i henhold til det modtagne sekvensnummer. Hvis dataene findes i forkert rækkefølge, vil modtageren omarrangere dataene for at sikre rækkefølgen af ​​dataene.

BekræftelsesnummerDette er et sekvensnummer, der bruges i TCP til at bekræfte modtagelsen af ​​data. Det angiver sekvensnummeret på de næste data, som afsenderen forventer at modtage. I en TCP-forbindelse bestemmer modtageren, hvilke data der er modtaget, baseret på sekvensnummeret på det modtagne datapakkesegment. Når modtageren modtager dataene, sender den en ACK-pakke til afsenderen, som indeholder bekræftelsesnummeret. Efter at have modtaget ACK-pakken kan afsenderen bekræfte, at dataene er modtaget, før svarnummeret bekræftes.

Kontrolbittene i et TCP-segment omfatter følgende:

ACK-bitNår denne bit er 1, betyder det, at bekræftelsessvarfeltet er gyldigt. TCP angiver, at denne bit skal sættes til 1, undtagen for SYN-pakker, når forbindelsen oprettes første gang.
RST-bitNår denne bit er 1, indikerer det, at der er en undtagelse i TCP-forbindelsen, og forbindelsen skal tvinges til at blive afbrudt.
SYN-bitNår denne bit er sat til 1, betyder det, at forbindelsen skal etableres, og startværdien af ​​sekvensnummeret er angivet i sekvensnummerfeltet.
FIN-bitNår denne bit er 1, betyder det, at der ikke sendes flere data i fremtiden, og at forbindelsen ønskes.
De forskellige funktioner og karakteristika ved TCP er legemliggjort af strukturen af ​​TCP-pakkesegmenter.

Hvad er UDP? (MylinkingsNetværkstapogNetværkspakkemæglerkunne behandle både TCP- eller UDP-pakker)
User Datagram Protocol (UDP) er en forbindelsesløs kommunikationsprotokol. Sammenlignet med TCP tilbyder UDP ikke komplekse kontrolmekanismer. UDP-protokollen tillader applikationer at sende indkapslede IP-pakker direkte uden at etablere en forbindelse. Når udvikleren vælger at bruge UDP i stedet for TCP, kommunikerer applikationen direkte med IP-adressen.

UDP-protokollens fulde navn er User Datagram Protocol, og dens header er kun otte bytes (64 bits), hvilket er meget kortfattet. Formatet for UDP-headeren er som følger:

UDP-segment

Destinations- og kildeporteDeres hovedformål er at angive, hvilken proces UDP skal sende pakker til.
PakkestørrelseFeltet Pakkestørrelse indeholder størrelsen af ​​UDP-headeren plus størrelsen af ​​dataene
KontrolsumDesignet til at sikre pålidelig levering af UDP-headere og -data. Kontrolsummens rolle er at detektere, om der er opstået en fejl eller beskadigelse under transmissionen af ​​en UDP-pakke for at sikre dataenes integritet.

Forskelle mellem TCP og UDP i MylinkingNetværkstapogNetværkspakkemæglerkunne behandle både TCP- eller UDP-pakker
TCP og UDP er forskellige på følgende områder:

TCP vs. UDP

ForbindelseTCP er en forbindelsesorienteret transportprotokol, der kræver, at der etableres en forbindelse, før data kan overføres. UDP kræver derimod ikke en forbindelse og kan overføre data med det samme.

ServiceobjektTCP er en en-til-en to-punkts tjeneste, det vil sige, at en forbindelse kun har to slutpunkter at kommunikere med hinanden. UDP understøtter dog en-til-en, en-til-mange og mange-til-mange interaktiv kommunikation, som kan kommunikere med flere værter på samme tid.

PålidelighedTCP leverer data pålideligt og sikrer, at data er fejlfri, tabsfri, ikke-duplikater og ankommer efter behov. UDP gør derimod sit bedste og garanterer ikke pålidelig levering. UDP kan lide under datatab og andre situationer under transmission.

Kontrol af trængsel, flowkontrolTCP har mekanismer til kontrol af overbelastning og flowkontrol, som kan justere dataoverførselshastigheden i henhold til netværksforholdene for at sikre sikkerheden og stabiliteten af ​​dataoverførslen. UDP har ikke mekanismer til kontrol af overbelastning og flowkontrol, og selvom netværket er meget overbelastet, vil det ikke foretage justeringer af UDP-sendehastigheden.

Overheader overheadTCP har en lang headerlængde, typisk 20 bytes, som øges, når der bruges option-felter. UDP har derimod en fast header på kun 8 bytes, så UDP har en lavere header-overhead.

TCP vs. UDP

TCP- og UDP-applikationsscenarier:
TCP og UDP er to forskellige transportlagsprotokoller, og de har nogle forskelle i applikationsscenarier.

Da TCP er en forbindelsesorienteret protokol, bruges den primært i scenarier, hvor pålidelig datalevering er påkrævet. Nogle almindelige anvendelsesscenarier inkluderer:

FTP-filoverførselTCP kan sikre, at filer ikke går tabt eller beskadiges under overførsel.
HTTP/HTTPSTCP sikrer integriteten og korrektheden af ​​webindhold.
Da UDP er en forbindelsesløs protokol, giver den ikke nogen pålidelighedsgaranti, men den har egenskaber som effektivitet og realtidsstyring. UDP er egnet til følgende scenarier:

Trafik med lav pakkeindhold, såsom DNS (Domain Name System)DNS-forespørgsler er normalt korte pakker, og UDP kan fuldføre dem hurtigere.
Multimediekommunikation såsom video og lydTil multimedietransmission med høje realtidskrav kan UDP give lavere latenstid for at sikre, at data kan transmitteres rettidigt.
Broadcast-kommunikationUDP understøtter en-til-mange- og mange-til-mange-kommunikation og kan bruges til transmission af broadcast-beskeder.

Oversigt
I dag lærte vi om TCP. TCP er en forbindelsesorienteret, pålidelig, byte-stream-baseret transportlagskommunikationsprotokol. Den sikrer pålidelig transmission og ordnet modtagelse af data ved at etablere forbindelse, handshake og bekræftelse. TCP-protokollen bruger porte til at realisere kommunikationen mellem processer og leverer direkte kommunikationstjenester til applikationsprocesser, der kører på forskellige værter. TCP-forbindelser er fuld-duplex, hvilket muliggør samtidig tovejs dataoverførsel. I modsætning hertil er UDP en forbindelsesløs kommunikationsprotokol, som ikke giver pålidelighedsgarantier og er egnet til visse scenarier med høje realtidskrav. TCP og UDP er forskellige i forbindelsestilstand, serviceobjekt, pålidelighed, overbelastningskontrol, flowkontrol og andre aspekter, og deres applikationsscenarier er også forskellige.


Udsendelsestidspunkt: 3. dec. 2024