TCP vs UDP: Demystifying the betrouwbaarheid versus efficiëntiedebat

Vandaag gaan we beginnen met ons te concentreren op TCP. Eerder in het hoofdstuk over gelaagdheid noemden we een belangrijk punt. Bij de netwerklaag en hieronder gaat het meer om host om verbindingen te hosten, wat betekent dat uw computer moet weten waar een andere computer is om hiermee verbinding te maken. Communicatie in een netwerk is echter vaak interpretatiecommunicatie in plaats van intermachinecommunicatie. Daarom introduceert TCP -protocol het concept van poort. Een poort kan worden bezet door slechts één proces, dat directe communicatie biedt tussen toepassingsprocessen die op verschillende hosts worden uitgevoerd.

De taak van de transportlaag is hoe u directe communicatiediensten kunt bieden tussen toepassingsprocessen die op verschillende hosts worden uitgevoerd, dus het staat ook bekend als een end-to-end protocol. De transportlaag verbergt de kerndetails van het netwerk, waardoor het aanvraagproces kan zien alsof er een logisch end-to-end communicatiekanaal is tussen de twee transportlaagtiteiten.

TCP staat voor het transmissiecontroleprotocol en staat bekend als een verbindingsgericht protocol. Dit betekent dat voordat de ene applicatie gegevens naar de andere kan starten, de twee processen een handdruk moeten doen. Handshake is een logisch verbonden proces dat zorgt voor betrouwbare verzending en ordelijke ontvangst van gegevens. Tijdens de handdruk wordt een verbinding tot stand gebracht tussen de bron- en bestemmingshosts door een reeks besturingspakketten uit te wisselen en enkele parameters en regels overeen te komen om een ​​succesvolle gegevensoverdracht te garanderen.

Wat is TCP? (MyLinking'sNetwerktapEnNetwerkpakketmakelaarkunnen zowel TCP- als UDP -pakketten verwerken)
TCP (Transmission Control Protocol) is een verbindingsgericht, betrouwbaar, byte-stream gebaseerde transportlaagcommunicatieprotocol.

Verbindingsgericht: Verbindingsgerichte middelen dat TCP-communicatie één-op-één is, dat wil zeggen, point-to-point end-to-end communicatie, in tegenstelling tot UDP, die berichten tegelijkertijd naar meerdere hosts kunnen verzenden, zodat er geen communicatie van één op een veel vage kan worden bereikt.
Betrouwbaar: De betrouwbaarheid van TCP zorgt ervoor dat pakketten betrouwbaar aan de ontvanger worden geleverd, ongeacht wijzigingen in de netwerkverbinding, waardoor het protocolpakketformaat van TCP complexer is dan dat van UDP.
Byte-stream-gebaseerd: De byte-stream-gebaseerde aard van TCP maakt het mogelijk om berichten van elke grootte te verzenden en garanties te garanderen: Berichtbestelling: zelfs als het vorige bericht niet volledig is ontvangen, en zelfs als de daaropvolgende bytes zijn ontvangen, levert TCP ze niet aan de applicatielaag voor verwerking en zal automatisch duplicaatpakketten vallen.
Zodra host A en host B een verbinding hebben tot stand gebracht, hoeft de applicatie alleen de virtuele communicatielijn te gebruiken om gegevens te verzenden en te ontvangen, waardoor gegevensoverdracht wordt gewaarborgd. Het TCP -protocol is verantwoordelijk voor het beheersen van taken zoals het instellen van verbindingen, ontkoppeling en vasthouden. Opgemerkt moet worden dat we hier zeggen dat de virtuele lijn alleen betekent om een ​​verbinding tot stand te brengen, TCP -protocolverbinding geeft alleen aan dat de twee partijen gegevensoverdracht kunnen starten en om de betrouwbaarheid van de gegevens te waarborgen. De routerings- en transportknooppunten worden afgehandeld door de netwerkapparaten; Het TCP -protocol zelf houdt zich niet bezig met deze details.

Een TCP-verbinding is een full-duplex-service, wat betekent dat host A en host B gegevens in beide richtingen in een TCP-verbinding kunnen verzenden. Dat wil zeggen, gegevens kunnen worden overgedragen tussen host A en host B in een bidirectionele stroom.

TCP slaat gegevens tijdelijk op in de verzendbuffer van de verbinding. Deze verzendbuffer is een van de caches die zijn opgezet tijdens de drieweg handdruk. Vervolgens verzendt TCP de gegevens in de verzendcache naar de ontvangstcache van de bestemmingshost op het juiste moment. In de praktijk heeft elke peer een verzendcache en een ontvangstcache, zoals hier getoond:

TCP-UDP

De verzendbuffer is een geheugengebied dat wordt onderhouden door de TCP -implementatie aan de afzenderzijde die wordt gebruikt om gegevens tijdelijk op te slaan die moeten worden verzonden. Wanneer de drieweg handdruk wordt uitgevoerd om een ​​verbinding tot stand te brengen, wordt de verzendcache ingesteld en gebruikt om gegevens op te slaan. De verzendbuffer wordt dynamisch aangepast volgens netwerkcongestie en feedback van de ontvanger.

Een ontvangstbuffer is een gebied van geheugen dat wordt onderhouden door de TCP -implementatie aan de ontvangende kant die wordt gebruikt om ontvangen gegevens tijdelijk op te slaan. TCP slaat de ontvangen gegevens op in de ontvangstcache en wacht op de bovenste applicatie om deze te lezen.

Merk op dat de grootte van verzendcache en ontvangcache beperkt is, wanneer de cache vol is, kan TCP sommige strategieën, zoals congestiebestrijding, stroomcontrole, enz., Om te zorgen voor betrouwbare gegevensoverdracht en netwerkstabiliteit.

In computernetwerken wordt gegevensoverdracht tussen hosts uitgevoerd door middel van segmenten. Dus wat is een pakketsegment?

TCP maakt een TCP -segment of pakketsegment door de inkomende stroom in brokken te splitsen en TCP -headers aan elk brok toe te voegen. Elk segment kan alleen gedurende een beperkte hoeveelheid tijd worden verzonden en kan de maximale segmentgrootte (MSS) niet overschrijden. Op weg naar beneden gaat een pakketsegment door de linklaag. De linklaag heeft een maximale transmissie -eenheid (MTU), de maximale pakketgrootte die door de datalinklaag kan gaan. De maximale transmissie -eenheid is meestal gerelateerd aan de communicatie -interface.

Dus wat is het verschil tussen MSS en MTU?

In computernetwerken is de hiërarchische architectuur erg belangrijk omdat deze rekening houdt met de verschillen tussen de verschillende niveaus. Elke laag heeft een andere naam; In de transportlaag worden de gegevens een segment genoemd en in de netwerklaag worden de gegevens een IP -pakket genoemd. Daarom kan de maximale transmissie -eenheid (MTU) worden beschouwd als de maximale IP -pakketgrootte die kan worden verzonden door de netwerklaag, terwijl de maximale segmentgrootte (MSS) een transportlaagconcept is dat verwijst naar de maximale hoeveelheid gegevens die kunnen worden verzonden door een TCP -pakket tegelijk.

Merk op dat wanneer de maximale segmentgrootte (MSS) groter is dan de maximale transmissie -eenheid (MTU), IP -fragmentatie op de netwerklaag wordt uitgevoerd en TCP de grotere gegevens niet opsplitst in segmenten die geschikt zijn voor MTU -grootte. Er is een sectie op de netwerklaag gewijd aan de IP -laag.

TCP -pakketsegmentstructuur
Laten we het formaat en de inhoud van TCP -headers verkennen.

TCP -segment

Volgnummer: Een willekeurig nummer dat door de computer wordt gegenereerd wanneer de verbinding wordt gelegd als de initiële waarde wanneer de TCP -verbinding wordt tot stand gebracht en het volgnummer via het SYN -pakket naar de ontvanger wordt verzonden. Tijdens gegevensoverdracht verhoogt de afzender het volgnummer op basis van de hoeveelheid verzonden gegevens. De ontvanger beoordeelt het bevel van de gegevens volgens het ontvangen volgnummer. Als de gegevens buiten bestelling worden gevonden, zal de ontvanger de gegevens opnieuw ordenen om de volgorde van de gegevens te waarborgen.

Erkenningsnummer: Dit is een volgnummer dat in TCP wordt gebruikt om de ontvangst van gegevens te bevestigen. Het geeft het volgnummer van de volgende gegevens aan die de afzender verwacht te ontvangen. In een TCP -verbinding bepaalt de ontvanger welke gegevens met succes zijn ontvangen op basis van het sequentienummer van het ontvangen segment van het gegevenspakket. Wanneer de ontvanger de gegevens met succes ontvangt, verzendt het een ACK -pakket naar de afzender, die het bevestigingsnummer van de bevestiging bevat. Na ontvangst van het ACK -pakket kan de afzender bevestigen dat de gegevens voordat het antwoordnummer wordt bevestigd, succesvol is ontvangen.

De besturingsbits van een TCP -segment omvatten het volgende:

Ack Bit: Wanneer dit bit 1 is, betekent dit dat het veld Bevestigingsreservaat geldig is. TCP geeft aan dat dit bit moet worden ingesteld op 1, behalve voor syn -pakketten wanneer de verbinding aanvankelijk is tot stand gebracht.
Eerste bit: Wanneer dit bit 1 is, geeft dit aan dat er een uitzondering is in de TCP -verbinding en dat de verbinding moet worden gedwongen te worden losgekoppeld.
Syn Bit: Wanneer deze bit is ingesteld op 1, betekent dit dat de verbinding moet worden gelegd en dat de beginwaarde van het sequentienummer wordt ingesteld in het veld Sequence Number.
Bit: Wanneer dit bit 1 is, betekent dit dat er in de toekomst geen gegevens meer worden verzonden en dat de verbinding gewenst is.
De verschillende functies en kenmerken van TCP worden belichaamd door de structuur van TCP -pakketsegmenten.

Wat is UDP? (MyLinking'sNetwerktapEnNetwerkpakketmakelaarkunnen zowel TCP- als UDP -pakketten verwerken)
User Datagram Protocol (UDP) is een verbindingloos communicatieprotocol. In vergelijking met TCP biedt UDP geen complexe controlemechanismen. Met het UDP -protocol kunnen toepassingen rechtstreeks ingekapselde IP -pakketten verzenden zonder een verbinding tot stand te brengen. Wanneer de ontwikkelaar ervoor kiest om UDP te gebruiken in plaats van TCP, communiceert de toepassing rechtstreeks met het IP.

De volledige naam van het UDP -protocol is User Datagram Protocol en de header is slechts acht bytes (64 bits), wat zeer beknopt is. Het formaat van de UDP -header is als volgt:

UDP -segment

Bestemming en bronpoorten: Hun belangrijkste doel is om aan te geven aan welk proces UDP pakketten moet verzenden.
Pakketmaat: Het veld Pakketformaat bevat de grootte van de UDP -header plus de grootte van de gegevens
Checksum: Ontworpen om te zorgen voor een betrouwbare levering van UDP -headers en gegevens De rol van het controlesom is om te detecteren of er een fout of corruptie is opgetreden tijdens de overdracht van een UDP -pakket om de integriteit van de gegevens te waarborgen.

Verschillen tussen TCP en UDP in die van MylinkingNetwerktapEnNetwerkpakketmakelaarkunnen zowel TCP- als UDP -pakketten verwerken
TCP en UDP zijn verschillend in de volgende aspecten:

TCP vs UDP

Verbinding: TCP is een verbindingsgeoriënteerd transportprotocol dat vereist dat een verbinding wordt gelegd voordat gegevens kunnen worden overgedragen. UDP daarentegen vereist geen verbinding en kan gegevens onmiddellijk overdragen.

Serviceobject: TCP is een één-op-één tweepuntservice, dat wil zeggen dat een verbinding slechts twee eindpunten heeft om met elkaar te communiceren. UDP ondersteunt echter één-op-één, één-op-veel en veel-op-veel interactieve communicatie, die tegelijkertijd met meerdere hosts kunnen communiceren.

Betrouwbaarheid: TCP biedt de service om gegevens betrouwbaar te leveren, zodat gegevens foutloos, verliesvrij, niet-duplicaat zijn en op aanvraag aankomen. UDP daarentegen doet zijn best om zich te inspannen en garandeert geen betrouwbare levering. UDP kan lijden aan gegevensverlies en andere situaties tijdens de verzending.

Congestiecontrole, stroomregeling: TCP heeft congestiecontrole en stroomcontrolemechanismen, die de gegevensoverdrachtssnelheid kunnen aanpassen volgens de netwerkomstandigheden om de beveiliging en stabiliteit van gegevensoverdracht te waarborgen. UDP heeft geen congestiecontrole- en stroomcontrolemechanismen, zelfs als het netwerk erg overbelast is, zal het geen aanpassingen aan de UDP -verzendsnelheid aanpassingen maken.

Koptekst: TCP heeft een lange koplengte, meestal 20 bytes, wat toeneemt wanneer optievelden worden gebruikt. UDP daarentegen heeft een vaste header van slechts 8 bytes, dus UDP heeft een lagere koptekst boven het hoofd.

TCP vs UDP

TCP- en UDP -toepassingsscenario's:
TCP en UDP zijn twee verschillende transportlaagprotocollen en ze hebben enkele verschillen in toepassingsscenario's.

Aangezien TCP een verbindingsgericht protocol is, wordt het voornamelijk gebruikt in scenario's waar betrouwbare gegevensafgifte vereist is. Enkele veel voorkomende gebruiksscenario's zijn:

FTP -bestandsoverdracht: TCP kan ervoor zorgen dat bestanden niet verloren en beschadigd zijn tijdens de overdracht.
Http/https: TCP zorgt voor de integriteit en juistheid van webinhoud.
Omdat UDP een verbindingloos protocol is, biedt het geen betrouwbaarheidsgarantie, maar heeft het de kenmerken van efficiëntie en realtime. UDP is geschikt voor de volgende scenario's:

Low-packet verkeer, zoals DNS (Domain Name System): DNS -query's zijn meestal korte pakketten en UDP kan ze sneller voltooien.
Multimediacommunicatie zoals video en audio: Voor multimedia-transmissie met hoge realtime vereisten kan UDP een lagere latentie bieden om ervoor te zorgen dat gegevens tijdig kunnen worden verzonden.
Communicatie -communicatie: UDP ondersteunt één-op-veel en veel-tot-veel communicatie en kan worden gebruikt voor de overdracht van uitzendberichten.

Samenvatting
Vandaag hebben we geleerd over TCP. TCP is een verbindingsgerichte, betrouwbaar, byte-stream gebaseerde transportlaagcommunicatieprotocol. Het zorgt voor de betrouwbare transmissie en ordelijke ontvangst van gegevens door verbinding, handdruk en erkenning tot stand te brengen. TCP -protocol gebruikt poorten om de communicatie tussen processen te realiseren en biedt directe communicatiediensten voor applicatieprocessen die op verschillende hosts worden uitgevoerd. TCP-verbindingen zijn full-duplex, waardoor gelijktijdige bidirectionele gegevensoverdracht mogelijk is. UDP is daarentegen een verbindingsloos georiënteerd communicatieprotocol, dat geen betrouwbaarheidsgaranties biedt en geschikt is voor sommige scenario's met hoge realtime vereisten. TCP en UDP zijn verschillend in verbindingsmodus, serviceobject, betrouwbaarheid, congestiecontrole, stroomcontrole en andere aspecten, en hun toepassingsscenario's zijn ook verschillend.


Posttijd: dec-03-2024