Idag ska vi börja med att fokusera på TCP. Tidigare i kapitlet om lager nämnde vi en viktig punkt. På nätverkslagret och nedan handlar det mer om värd-till-värd-anslutningar, vilket innebär att din dator behöver veta var en annan dator befinner sig för att kunna ansluta till den. Kommunikation i ett nätverk är dock ofta kommunikation mellan processer snarare än kommunikation mellan maskiner. Därför introducerar TCP-protokollet konceptet port. En port kan endast vara upptagen av en process, vilket ger direkt kommunikation mellan applikationsprocesser som körs på olika värdar.
Transportlagrets uppgift är att tillhandahålla direkta kommunikationstjänster mellan applikationsprocesser som körs på olika värdar, så det är även känt som ett end-to-end-protokoll. Transportlagret döljer nätverkets kärndetaljer, vilket gör att applikationsprocessen kan se det som om det finns en logisk end-to-end-kommunikationskanal mellan de två transportlagrets enheter.
TCP står för Transmission Control Protocol och är känt som ett anslutningsorienterat protokoll. Det betyder att innan en applikation kan börja skicka data till den andra måste de två processerna utföra en handskakning. En handskakning är en logiskt sammankopplad process som säkerställer tillförlitlig överföring och ordnad mottagning av data. Under handskakningen upprättas en anslutning mellan käll- och destinationsvärdarna genom att utbyta en serie kontrollpaket och komma överens om vissa parametrar och regler för att säkerställa lyckad dataöverföring.
Vad är TCP? (MylinkingsNätverkstryckochNätverkspaketmäklarekunde bearbeta både TCP- eller UDP-paket)
TCP (Transmission Control Protocol) är ett anslutningsorienterat, tillförlitligt, byteströmsbaserat transportlagerkommunikationsprotokoll.
AnslutningsorienteradAnslutningsorienterad innebär att TCP-kommunikation är en-till-en, det vill säga punkt-till-punkt ände-till-änd-kommunikation, till skillnad från UDP, som kan skicka meddelanden till flera värdar samtidigt, så en-till-många-kommunikation kan inte uppnås.
PålitligTCP:s tillförlitlighet säkerställer att paket levereras tillförlitligt till mottagaren oavsett förändringar i nätverkslänken, vilket gör TCP:s protokollpaketformat mer komplext än UDP:s.
Byte-stream-baseradTCP:s byteströmsbaserade natur möjliggör överföring av meddelanden av alla storlekar och garanterar meddelandeordning: även om det föregående meddelandet inte har mottagits helt, och även om efterföljande byte har mottagits, kommer TCP inte att leverera dem till applikationslagret för bearbetning och kommer automatiskt att släppa dubbletter av paket.
När värd A och värd B har upprättat en anslutning behöver applikationen bara använda den virtuella kommunikationslinjen för att skicka och ta emot data, vilket säkerställer dataöverföring. TCP-protokollet ansvarar för att kontrollera uppgifter som att upprätta, koppla från och hålla en anslutning. Det bör noteras att här säger vi att den virtuella linjen endast syftar till att upprätta en anslutning, medan TCP-protokollets anslutning endast indikerar att de två sidorna kan starta dataöverföring och att säkerställa datatillförlitligheten. Routing- och transportnoderna hanteras av nätverksenheterna; själva TCP-protokollet bryr sig inte om dessa detaljer.
En TCP-anslutning är en fullduplextjänst, vilket innebär att värd A och värd B kan överföra data i båda riktningarna i en TCP-anslutning. Det vill säga, data kan överföras mellan värd A och värd B i ett dubbelriktat flöde.
TCP lagrar tillfälligt data i anslutningens sändbuffert. Denna sändbuffert är en av de cacher som skapas under trevägshandskakningen. Därefter skickar TCP data i sändcachen till destinationsvärdens mottagningscache vid lämplig tidpunkt. I praktiken har varje peer en sändcache och en mottagningscache, som visas här:
Sändbufferten är ett minnesområde som underhålls av TCP-implementeringen på sändarsidan och som används för att tillfälligt lagra data som ska skickas. När trevägshandskakningen utförs för att upprätta en anslutning konfigureras sändcachen och används för att lagra data. Sändbufferten justeras dynamiskt beroende på nätverksbelastning och feedback från mottagaren.
En mottagningsbuffert är ett minnesområde som underhålls av TCP-implementeringen på mottagarsidan och som används för att tillfälligt lagra mottagen data. TCP lagrar den mottagna datan i mottagningscachen och väntar på att den övre applikationen ska läsa den.
Observera att storleken på sänd- och mottagningscachen är begränsad. När cachen är full kan TCP använda vissa strategier, såsom överbelastningskontroll, flödeskontroll etc., för att säkerställa tillförlitlig dataöverföring och nätverksstabilitet.
I datornätverk sker dataöverföring mellan värdar med hjälp av segment. Så vad är ett paketsegment?
TCP skapar ett TCP-segment, eller paketsegment, genom att dela upp den inkommande strömmen i bitar och lägga till TCP-rubriker till varje bit. Varje segment kan bara överföras under en begränsad tid och får inte överstiga Maximum Segment Size (MSS). På vägen ner passerar ett paketsegment genom länklagret. Länklagret har en Maximum Transmission Unit (MTU), vilket är den maximala paketstorleken som kan passera genom datalänklagret. Den maximala överföringsenheten är vanligtvis relaterad till kommunikationsgränssnittet.
Så vad är skillnaden mellan MSS och MTU?
I datornätverk är den hierarkiska arkitekturen mycket viktig eftersom den tar hänsyn till skillnaderna mellan de olika nivåerna. Varje lager har ett annat namn; i transportlagret kallas data för ett segment, och i nätverkslagret kallas data för ett IP-paket. Därför kan Maximum Transmission Unit (MTU) betraktas som den maximala IP-paketstorleken som kan överföras av nätverkslagret, medan Maximum Segment Size (MSS) är ett transportlagerkoncept som hänvisar till den maximala mängden data som kan överföras av ett TCP-paket åt gången.
Observera att när den maximala segmentstorleken (MSS) är större än den maximala överföringsenheten (MTU), kommer IP-fragmentering att utföras på nätverkslagret, och TCP kommer inte att dela upp större data i segment som är lämpliga för MTU-storlek. Det kommer att finnas ett avsnitt på nätverkslagret dedikerat till IP-lagret.
TCP-paketsegmentstruktur
Låt oss utforska formatet och innehållet i TCP-rubriker.
SekvensnummerEtt slumptal som genereras av datorn när anslutningen upprättas som dess initialvärde när TCP-anslutningen upprättas, och sekvensnumret skickas till mottagaren via SYN-paketet. Under dataöverföringen ökar avsändaren sekvensnumret i enlighet med mängden skickad data. Mottagaren bedömer ordningen på data enligt det mottagna sekvensnumret. Om data visar sig vara i fel ordning kommer mottagaren att ordna om data för att säkerställa ordningen på data.
BekräftelsenummerDetta är ett sekvensnummer som används i TCP för att bekräfta mottagandet av data. Det anger sekvensnumret för nästa data som avsändaren förväntar sig att ta emot. I en TCP-anslutning avgör mottagaren vilka data som har mottagits baserat på sekvensnumret för det mottagna datapaketsegmentet. När mottagaren mottagit data skickar den ett ACK-paket till avsändaren, som innehåller bekräftelsenumret. Efter att ha mottagit ACK-paketet kan avsändaren bekräfta att data innan svarsnumret bekräftas har mottagits.
Kontrollbitarna i ett TCP-segment inkluderar följande:
ACK-bitNär denna bit är 1 betyder det att bekräftelsesvarsfältet är giltigt. TCP anger att denna bit måste sättas till 1 förutom för SYN-paket när anslutningen initialt upprättas.
RST-bitNär denna bit är 1, indikerar det att det finns ett undantag i TCP-anslutningen och att anslutningen måste tvingas att kopplas bort.
SYN-bitNär denna bit är satt till 1 betyder det att anslutningen ska upprättas och att sekvensnumrets initialvärde anges i sekvensnummerfältet.
FIN-bitNär denna bit är 1 betyder det att ingen mer data kommer att skickas i framtiden och att anslutningen önskas.
De olika funktionerna och egenskaperna hos TCP förkroppsligas av strukturen hos TCP-paketsegment.
Vad är UDP? (MylinkingsNätverkstryckochNätverkspaketmäklarekunde bearbeta både TCP- eller UDP-paket)
User Datagram Protocol (UDP) är ett anslutningslöst kommunikationsprotokoll. Jämfört med TCP erbjuder UDP inte komplexa kontrollmekanismer. UDP-protokollet tillåter applikationer att direkt skicka inkapslade IP-paket utan att upprätta en anslutning. När utvecklaren väljer att använda UDP istället för TCP kommunicerar applikationen direkt med IP-adressen.
UDP-protokollets fullständiga namn är User Datagram Protocol, och dess rubrik är bara åtta byte (64 bitar), vilket är mycket koncist. Formatet för UDP-rubriken är följande:
Destinations- och källportarDeras huvudsyfte är att indikera till vilken process UDP ska skicka paket.
PaketstorlekPaketstorleksfältet innehåller storleken på UDP-rubriken plus storleken på data
KontrollsummaUtformad för att säkerställa tillförlitlig leverans av UDP-rubriker och data. Kontrollsummans roll är att upptäcka om ett fel eller en korruption har inträffat under överföringen av ett UDP-paket för att säkerställa dataintegriteten.
Skillnader mellan TCP och UDP i MylinkingsNätverkstryckochNätverkspaketmäklarekunde bearbeta både TCP- eller UDP-paket
TCP och UDP skiljer sig åt i följande avseenden:
FörbindelseTCP är ett anslutningsorienterat transportprotokoll som kräver att en anslutning upprättas innan data kan överföras. UDP, å andra sidan, kräver ingen anslutning och kan överföra data omedelbart.
ServiceobjektTCP är en en-till-en-tvåpunktstjänst, det vill säga att en anslutning bara har två slutpunkter att kommunicera med varandra. UDP stöder dock interaktiv en-till-en-, en-till-många- och många-till-många-kommunikation, vilket kan kommunicera med flera värdar samtidigt.
PålitlighetTCP tillhandahåller tjänsten att leverera data på ett tillförlitligt sätt, vilket säkerställer att data är felfria, förlustfria, icke-duplicerade och anländer på begäran. UDP, å andra sidan, gör sitt bästa och garanterar inte tillförlitlig leverans. UDP kan drabbas av dataförlust och andra situationer under överföring.
Trängselkontroll, flödeskontrollTCP har mekanismer för överbelastningskontroll och flödeskontroll, som kan justera dataöverföringshastigheten enligt nätverksförhållandena för att säkerställa säkerheten och stabiliteten i dataöverföringen. UDP har inte mekanismer för överbelastningskontroll och flödeskontroll, även om nätverket är mycket överbelastat kommer det inte att göra justeringar av UDP:s sändningshastighet.
HuvudöverheadTCP har en lång headerlängd, vanligtvis 20 byte, vilket ökar när alternativfält används. UDP, å andra sidan, har en fast header på endast 8 byte, så UDP har en lägre header-overhead.
TCP- och UDP-applikationsscenarier:
TCP och UDP är två olika transportlagerprotokoll, och de har vissa skillnader i applikationsscenarier.
Eftersom TCP är ett anslutningsorienterat protokoll används det främst i scenarier där tillförlitlig dataleverans krävs. Några vanliga användningsfall inkluderar:
FTP-filöverföringTCP kan säkerställa att filer inte går förlorade eller skadas under överföring.
HTTP/HTTPSTCP säkerställer webbinnehållets integritet och korrekthet.
Eftersom UDP är ett anslutningslöst protokoll ger det ingen tillförlitlighetsgaranti, men det har egenskaper som effektivitet och realtidssäkerhet. UDP är lämpligt för följande scenarier:
Lågpakettrafik, såsom DNS (Domain Name System)DNS-frågor är vanligtvis korta paket, och UDP kan slutföra dem snabbare.
Multimediakommunikation som video och ljudFör multimediaöverföring med höga realtidskrav kan UDP ge lägre latens för att säkerställa att data kan överföras i tid.
Broadcast-kommunikationUDP stöder en-till-många- och många-till-många-kommunikation och kan användas för överföring av broadcast-meddelanden.
Sammanfattning
Idag lärde vi oss om TCP. TCP är ett anslutningsorienterat, tillförlitligt, byte-stream-baserat transportlagerkommunikationsprotokoll. Det säkerställer tillförlitlig överföring och ordnad mottagning av data genom att upprätta anslutning, handskakning och bekräftelse. TCP-protokollet använder portar för att realisera kommunikationen mellan processer och tillhandahåller direkta kommunikationstjänster för applikationsprocesser som körs på olika värdar. TCP-anslutningar är fullduplex, vilket möjliggör samtidig dubbelriktad dataöverföring. Däremot är UDP ett anslutningslöst orienterat kommunikationsprotokoll, vilket inte ger några tillförlitlighetsgarantier och är lämpligt för vissa scenarier med höga realtidskrav. TCP och UDP skiljer sig åt i anslutningsläge, serviceobjekt, tillförlitlighet, överbelastningskontroll, flödeskontroll och andra aspekter, och deras applikationsscenarier skiljer sig också åt.
Publiceringstid: 3 december 2024