Nyheter, Prylar, Android, Mobiler, Appnedladdningar, Android

Vad är TCP och varför är det för pålitligt för att ringa?

TCP (Transmission Control Protocol) är ett nätverksprotokoll för transportlager som är avgörande för hur datorer kommunicerar. Det används ofta för att skicka e-post, överföra filer och surfa på webben – så det är i grunden grunden för internet.

Trots att TCP ger tillförlitlig och effektiv nätverksanslutning, kanske det inte är det bästa för realtidskommunikation som livestreaming och VoIP-samtal.

TCP-översikt | Transmission Control Protocol

TCP är en del av TCP/IP-protokollsviten – som har flera nätverksprotokoll som arbetar tillsammans för att definiera hur data överförs över två valfria enheter.

Det börjar med applikationslagret, som direkt länkar applikationen till nätverket och vice versa. Protokollen i detta lager är ansvariga för datarepresentation och generering av det ursprungliga meddelandet som ska sändas. Det här lagret är också där du hittar användningen av nätverksprotokoll som HTTP, FTP, SMTP och SNMP.

Nästa lager är transportlagret, och det är där TCP är. Dess första jobb är att ta emot meddelandet från applikationslagret, och sedan upprättar och upprätthåller den en änd-till-änd-förbindelse mellan avsändaren och mottagaren. TCP delar också upp data i segment innan den skickas till internet eller nätverk.

Efter transport kommer nätverkslagret. Här är IP (Internet Protocol) ansvarig för att ge varje TCP-segment en unik adress och omvandla dem till datapaket. IP-adresser säkerställer att varje paket kommer till rätt destination. IP ansvarar också för att dirigera datapaket över nätverket genom bästa möjliga väg.

De två sista lagren är datalänklagret och det fysiska lagret. Datalänklagret ansvarar för att paketera och montera binära data från nätverket, och det fysiska lagret är där data faktiskt överförs. Den binära datan omvandlas till signaler som sänds över det lokala mediet – till exempel via Ethernet-kablar.

TCP trevägshandslag

TCP upprättar en anslutning mellan två enheter genom en process som kallas trevägshandskakning – eller SYN, SYN-ACK, ACK (med SYN står för synkronisering och ACK står för kvittering).

Det fungerar så här: Den sändande enheten skickar ett SYN-paket till mottagaren och begär en anslutning. Mottagaren svarar sedan med ett tvådelat meddelande (även känt som SYN-ACK) genom att bekräfta begäran med ett ACK-paket och skicka sin egen SYN-anslutningsförfrågan. Slutligen svarar avsändaren med ett ACK för att slutföra anslutningen och möjliggöra överföring av data.

Tekniskt sett innehåller varje SYN-paket eller bit sekvensnumret för datapaketen. TCP-modulen på mottagaren använder detta nummer för att återsätta paketen i rätt ordning för att återskapa det ursprungliga meddelandet. I slutändan är ACK-meddelandet bara sekvensnumret plus ett – så om sekvensnumret från avsändaren är 1000 blir ACK 1001.

När dataöverföringen är klar informerar avsändaren den andra sidan genom ett FIN-meddelande (finish), som indikerar dess avsikt att stänga anslutningen. Om mottagaren svarar med ett eget ACK och ett eget FIN-meddelande, så bekräftas avsändarens begäran och anslutningen stängs.

Varför är TCP för pålitligt för att ringa?

TCP prioriterar organiserad och felfri leverans av datapaket, och på vissa sätt gör detta det för pålitligt för realtidskommunikation som VoIP-samtal. Med andra ord, ibland kan TCP slösa tid på att se till att all data är snygg och snygg, och det är inte alltid nödvändigt för samtal.

Här är vad som händer bakom kulisserna:

TCP använder en kontrollsumma för felhantering under dataöverföring. Detta innebär att avsändaren beräknar och genererar ett unikt kontrollsumma baserat på informationen i paketet den vill skicka, och mottagaren beräknar kontrollsumman för att se om den matchar den från avsändaren. Om det inte överensstämmer, kasseras paketet och det gör en begäran om en fullständig omsändning av det korrupta paketet.

I händelse av paketförlust skickas inte ACK-avsändaren – avsändaren kommer att stoppa överföringen och skicka om det förlorade paketet. Överföringen kommer att återupptas när ersättningspaketet når rätt destination och avsändaren får ett ACK.

TCP hjälper också till med dataflödeskontroll eller trängselstrypning. I teorin vill TCP överföra data så snabbt som möjligt, men eftersom varje enhet har en bearbetningsgräns kan data gå förlorade om dessa gränser överskrids.

TCP åstadkommer detta genom att ställa in en timer för varje paket som skickas – och om det tar slut utan att ta emot ett ACK, skickas paketet igen. Å andra sidan, om avsändaren tar emot ett ACK innan timern tar slut, ökar det överföringshastigheten.

Tänk på att när som helst kan mottagaren bli överväldigad, vilket innebär att dess bearbetningshastighet eller minne är maxat. När detta händer kommer det att fördröja innan ACK-meddelandet skickas tillbaka. Om många paket måste sändas om, saktar TCP ned överföringshastigheten.

När du sätter ihop allt detta och gör den hokey pokey, borde det stå klart att TCP:s tillförlitlighet och effektivitet kommer på bekostnad av latens och hastighet.

Naturligtvis, för aktiviteter som att skicka e-post och surfa på webben, är noggrannhet vanligtvis mycket viktigare än hastighet – och förseningar i den här typen av överföring är knappast märkbara i första hand.

Eftersom TCP ser till att datapaketen kommer fram i ordning, till exempel, kommer du inte att se hälften av ett e-postmeddelande i din inkorg. Istället kommer TCP att ta sin tid på att rekonstruera meddelandet tillbaka till sin ursprungliga form innan det spränger ut hela shebang.

Samtidigt, när det kommer till röstsamtal, kan alla liknande förseningar i dataöverföringen vara mycket märkbara. Om det till exempel finns luckor i ljudströmmen när TCP försöker återsända varje förlorat röstpaket, kommer samtalets kvalitet att få en betydande träff.

Är det möjligt att använda TCP för samtal?

Ja, det är möjligt att ringa med TCP, men beslutet om du vill använda det för samtal eller inte beror på dina egna individuella behov och prioriteringar. Om TCP:s noggrannhet och säkerhet under VoIP-samtal överensstämmer bättre med dina behov än högkvalitativ realtidskommunikation, ska du för all del göra det.

Om du till exempel vill spela in ett konferenssamtal utan att missa en enda information, kan TCP fungera.

För tidskänsliga överföringar är UDP bättre än TCP

UDP står för User Datagram Protocol, vilket är ett alternativt transportnätverksprotokoll som är mycket mer lämpligt (i de flesta användningsfall) för realtidskommunikation.

UDP-huvudet är enkelt jämfört med TCP-huvudet. Den har bara fyra fält: källporten, destinationsporten, paketets längd eller UDP-datagram och en valfri kontrollsumma.

UDP kräver lite overhead och säkerställer snabb leverans av data, vilket är idealiskt för aktiviteter som VoIP-samtal, livevideostreaming och onlinespel. En tvåpaketsöverföring med UDP kan vara så många som 11 paket om den skickas med TCP.

UDP stöder också multicasting när data överförs till flera enheter från en enda källa. Som jämförelse skulle TCP behöva upprätta en anslutning till varje enhet via trevägshandskakningen innan den kunde överföra data. Detta skulle kräva mycket tid och resurser.

Efter att TCP upprättat anslutningen måste den mottagande enheten bekräfta varje paket som skickas innan den kan ta emot nästa. Omvänt garanterar UDP ett stadigt flöde av data eftersom det inte väntar på att få en bekräftelse från mottagaren – dess enda funktion är att skicka (och fortsätta skicka) data.

Trots detta anses UDP ofta vara ett opålitligt nätverksprotokoll på grund av flera begränsningar. Till exempel, eftersom UDP inte spårar datapaket, kan det inte garantera paketleverans. Det kommer inte heller att återsända förlorade eller korrupta paket, och det har naturligtvis begränsade felkontrollmöjligheter. Med andra ord, om den tar emot ett korrupt paket gör den inga försök att korrigera det.

Skillnader mellan TCP och UDP

  • TCP är anslutningsorienterat och UDP är anslutningslöst.
  • TCP måste upprätta en anslutning innan data skickas, medan UDP inte behöver en anslutning för att skicka data.
  • TCP använder sekvensnummer för att säkerställa paketleverans i ordning, medan UDP inte har någon sekvensering.
  • TCP garanterar paketleverans och UDP gör det inte.
  • TCP har mekanismer på plats för felhantering och flödeskontroll, medan UDP har en grundläggande och begränsad kontrollsumma för felhantering.
  • TCP är utsatt för latens, men UDP är det inte.

Slutord

Det är inte varje dag som tillförlitlighet ses som en dålig sak, men det är här TCP faller med avseende på direkt röstkommunikation.

I slutet av dagen kommer att förlora ett paket eller två under ett samtal inte påverka kvaliteten tillräckligt för att vi ska bry oss eftersom vi vanligtvis kan hantera några skakningar och enstaka missade ord utan att uppleva ett större problem. Det viktiga är att inte fånga vartenda ord i samtalet – det är att ha ett bra och naturligt flöde.

Som sagt, ett försök att återsända röstpaket skulle förstöra detta flöde, vilket leder till hackigt ljud. Och nuförtiden kan det vara outhärdligt till den grad att vi ger upp samtalen helt.