Een TCP-verbinding opzetten. Hoe verschilt TCP in eenvoudige bewoordingen van UDP?

De werking van het mondiale internet is gebaseerd op een set (stapel) TCP/IP-protocollen. Maar deze termen lijken alleen op het eerste gezicht complex. In werkelijkheid TCP/IP-protocolstack is een eenvoudige set regels voor het uitwisselen van informatie, en deze regels zijn u goed bekend, ook al bent u zich er waarschijnlijk niet van bewust. Ja, dat klopt helemaal; in wezen is er niets nieuws in de principes die ten grondslag liggen aan de TCP/IP-protocollen: al het nieuwe is al lang vergeten oud.

Een mens kan op twee manieren leren:

  1. Door het domme formele memoriseren van formulemethoden voor het oplossen van standaardproblemen (wat nu vooral op school wordt onderwezen). Een dergelijke training is niet effectief. U heeft vast wel eens de paniek en totale hulpeloosheid gezien van een accountant bij het wijzigen van de versie van kantoorsoftware - met de kleinste verandering in de volgorde van muisklikken die nodig zijn om bekende handelingen uit te voeren. Of heb je ooit iemand in verdoving zien vallen bij het veranderen van de desktopinterface?
  2. Door de essentie van problemen, verschijnselen, patronen te begrijpen. Door begrip principes dit of dat systeem bouwen. In dit geval speelt het hebben van encyclopedische kennis geen grote rol: de ontbrekende informatie is gemakkelijk te vinden. Het belangrijkste is om te weten waar je op moet letten. En dit vereist geen formele kennis van het onderwerp, maar begrip van de essentie.

In dit artikel stel ik voor om de tweede weg te bewandelen, omdat het begrijpen van de principes die ten grondslag liggen aan internet u de kans geeft om u zelfverzekerd en vrij te voelen op internet - problemen die zich voordoen snel op te lossen, problemen correct te formuleren en vol vertrouwen te communiceren met technische ondersteuning.

Dus laten we beginnen.

De werkingsprincipes van de TCP/IP-internetprotocollen zijn inherent heel eenvoudig en lijken sterk op het werk van onze Sovjet-postdienst.

Onthoud hoe onze reguliere post werkt. Eerst schrijft u een brief op een stuk papier, stopt deze vervolgens in een envelop, sluit deze, schrijft de adressen van de afzender en de ontvanger op de achterkant van de envelop en brengt deze vervolgens naar het dichtstbijzijnde postkantoor. Vervolgens gaat de brief via een keten van postkantoren naar het dichtstbijzijnde postkantoor van de ontvanger, vanwaar hij door de postbode wordt afgeleverd op het door de ontvanger opgegeven adres en in zijn brievenbus wordt gedropt (met zijn appartementnummer) of persoonlijk wordt afgeleverd. Dat is alles, de brief heeft de ontvanger bereikt. Wanneer de ontvanger van de brief u wil antwoorden, wisselt hij in zijn antwoordbrief de adressen van de ontvanger en de afzender om, en de brief wordt via dezelfde keten naar u verzonden, maar in de tegenovergestelde richting.

De envelop van de brief ziet er ongeveer zo uit:

Adres afzender: Van wie: Ivanov Ivan Ivanovitsj Waar: Ivantejevka, st. Bolsjaja, 8, apt. 25 Adres van ontvanger: Aan wie: Petrov Petr Petrovich Waar: Moskou, Usachevsky-laan, 105, apt. 110

Nu zijn we klaar om de interactie van computers en applicaties op internet (en ook op het lokale netwerk) te overwegen. Houd er rekening mee dat de analogie met reguliere post vrijwel volledig zal zijn.

Elke computer (ook wel: node, host) op internet heeft ook een uniek adres, dat een IP-adres (Internet Protocol Address) wordt genoemd, bijvoorbeeld: 195.34.32.116. Een IP-adres bestaat uit vier decimale getallen (0 tot en met 255), gescheiden door een punt. Maar alleen het IP-adres van de computer kennen is niet voldoende, omdat... Uiteindelijk zijn het niet de computers zelf die informatie uitwisselen, maar de applicaties die erop draaien. En er kunnen meerdere applicaties tegelijkertijd op een computer draaien (bijvoorbeeld een mailserver, een webserver, etc.). Om een ​​gewone papieren brief te bezorgen, is het niet voldoende om alleen het adres van het huis te weten; u moet ook het appartementnummer weten. Bovendien heeft elke softwaretoepassing een soortgelijk nummer, een poortnummer genaamd. De meeste serverapplicaties hebben standaardnummers, bijvoorbeeld: een mailservice is gebonden aan poortnummer 25 (ze zeggen ook: “luistert” naar de poort, ontvangt daarop berichten), een webservice is gebonden aan poort 80, FTP aan poort 21 , enzovoort.

We hebben dus de volgende bijna volledige analogie met ons reguliere postadres:

"huisadres" = "computer-IP" "appartementnummer" = "poortnummer"

In computernetwerken die werken met TCP/IP-protocollen is er een analoog van een papieren brief in een envelop plastic zak, dat de daadwerkelijk verzonden gegevens en adresinformatie bevat - het adres van de afzender en het adres van de ontvanger, bijvoorbeeld:

Bronadres: IP: 82.146.49.55 Poort: 2049 Adres van ontvanger (bestemmingsadres): IP: 195.34.32.116 Poort: 53 Pakketdetails: ...

Uiteraard bevatten de pakketten ook service-informatie, maar voor het begrijpen van de essentie is dit niet van belang.

Let op de combinatie: "IP-adres en poortnummer" - genaamd "stopcontact".

In ons voorbeeld sturen we een pakket van socket 82.146.49.55:2049 naar socket 195.34.32.116:53, d.w.z. het pakket gaat naar een computer met een IP-adres 195.34.32.116, naar poort 53. En poort 53 komt overeen met een naamherkenningsserver (DNS-server), die dit pakket zal ontvangen. Als hij het adres van de afzender kent, kan deze server, na verwerking van ons verzoek, een antwoordpakket vormen dat in de tegenovergestelde richting gaat van de afzendersocket 82.146.49.55:2049, die voor de DNS-server de ontvangersocket zal zijn.

In de regel wordt de interactie uitgevoerd volgens het “client-server”-schema: de “client” vraagt ​​om bepaalde informatie (bijvoorbeeld een webpagina), de server accepteert het verzoek, verwerkt het en verzendt het resultaat. De poortnummers van servertoepassingen zijn bekend, bijvoorbeeld: de SMTP-mailserver “luistert” op poort 25, de POP3-server die het lezen van mail uit uw mailboxen mogelijk maakt, “luistert” op poort 110, de webserver luistert op poort 80, enz. .

De meeste programma's op een thuiscomputer zijn clients, bijvoorbeeld de Outlook-e-mailclient, IE, FireFox-webbrowsers, enz.

De poortnummers op de client liggen niet vast zoals die op de server, maar worden dynamisch toegewezen door het besturingssysteem. Vaste serverpoorten hebben meestal nummers tot 1024 (maar er zijn uitzonderingen) en clientpoorten beginnen na 1024.

Herhaling is de moeder van lesgeven: IP is het adres van een computer (knooppunt, host) op het netwerk, en poort is het nummer van een specifieke applicatie die op deze computer draait.

Het is echter moeilijk voor een persoon om digitale IP-adressen te onthouden - het is veel handiger om met alfabetische namen te werken. Het is immers veel gemakkelijker om een ​​woord te onthouden dan een reeks cijfers. Dit is gedaan - elk digitaal IP-adres kan aan een alfanumerieke naam worden gekoppeld. Hierdoor kunt u bijvoorbeeld in plaats van 82.146.49.55 de naam gebruiken. En de domeinnaamservice (DNS) (Domain Name System) verzorgt de conversie van de domeinnaam naar een digitaal IP-adres.

Laten we eens nader bekijken hoe dit werkt. Uw ISP verstrekt u expliciet (op papier, voor handmatige verbindingsconfiguratie) of impliciet (via automatische verbindingsconfiguratie) het IP-adres van de naamserver (DNS). Op een computer met dit IP-adres draait een applicatie (nameserver) die alle domeinnamen op internet en de bijbehorende digitale IP-adressen kent. De DNS-server “luistert” naar poort 53, accepteert verzoeken ernaar en geeft antwoorden, bijvoorbeeld:

Verzoek van onze computer: "Welk IP-adres komt overeen met de naam www.site?" Serverantwoord: "82.146.49.55."

Laten we nu eens kijken wat er gebeurt als u de domeinnaam (URL) van deze site () in uw browser typt en op klikt , als reactie van de webserver ontvangt u een pagina van deze site.

Bijvoorbeeld:

IP-adres van onze computer: 91.76.65.216 Browser: Internet Explorer (IE), DNS-server (stream): 195.34.32.116 (de jouwe kan anders zijn), De pagina die we willen openen: www.site.

Typ de domeinnaam in de adresbalk van de browser en klik . Vervolgens voert het besturingssysteem ongeveer de volgende acties uit:

Er wordt een verzoek (meer precies, een pakket met een verzoek) verzonden naar de DNS-server op socket 195.34.32.116:53. Zoals hierboven besproken, correspondeert poort 53 met de DNS-server, een applicatie die namen oplost. En de DNS-server, die ons verzoek heeft verwerkt, retourneert het IP-adres dat overeenkomt met de ingevoerde naam.

De dialoog gaat ongeveer zo:

Welk IP-adres correspondeert met de naam www.site? - 82.146.49.55 .

Vervolgens brengt onze computer een verbinding met de poort tot stand 80 computer 82.146.49.55 en verzendt een verzoek (verzoekpakket) om de pagina te ontvangen. Poort 80 komt overeen met de webserver. Poort 80 wordt meestal niet in de adresbalk van de browser geschreven, omdat wordt standaard gebruikt, maar kan ook expliciet worden opgegeven na de dubbele punt - .

Nadat we een verzoek van ons hebben ontvangen, verwerkt de webserver dit en stuurt ons een pagina in verschillende pakketten in HTML - een tekstopmaaktaal die de browser begrijpt.

Onze browser geeft de pagina weer, nadat hij deze heeft ontvangen. Als gevolg hiervan zien we de hoofdpagina van deze site op het scherm.

Waarom moeten we deze principes begrijpen?

U heeft bijvoorbeeld vreemd gedrag van uw computer opgemerkt: vreemde netwerkactiviteit, vertragingen, enz. Wat te doen? Open de console (klik op de knop "Start" - "Uitvoeren" - typ cmd - "Ok"). In de console typen we de opdracht netstat -een en klik . Dit hulpprogramma toont een lijst met bestaande verbindingen tussen de sockets van onze computer en de sockets van externe hosts. Wat zou dit kunnen betekenen als we enkele buitenlandse IP-adressen zien in de kolom 'Extern adres' en de 25e poort na de dubbele punt? (Herinner je je dat poort 25 overeenkomt met de mailserver?) Dit betekent dat je computer een verbinding tot stand heeft gebracht met een of andere mailserver(s) en er enkele brieven doorheen verzendt. En als uw e-mailclient (Outlook bijvoorbeeld) op dit moment niet actief is, en er nog steeds veel van dergelijke verbindingen op poort 25 staan, dan staat er waarschijnlijk een virus op uw computer dat namens u spam verstuurt of uw tegoed doorstuurt kaartnummers samen met wachtwoorden voor aanvallers.

Ook is het noodzakelijk om de principes van internet te begrijpen om een ​​firewall (met andere woorden: een firewall :)) correct te configureren. Dit programma (dat vaak wordt geleverd met een antivirusprogramma) is ontworpen om pakketten te filteren - "vrienden" en "vijanden". Laat je eigen mensen door, laat geen vreemden binnen. Als uw firewall u bijvoorbeeld vertelt dat iemand een verbinding tot stand wil brengen met een poort op uw computer. Toestaan ​​of weigeren?

En het allerbelangrijkste: deze kennis is uiterst nuttig bij de communicatie met technische ondersteuning.

Tenslotte is hier een lijst met poorten die u waarschijnlijk zult tegenkomen:

135-139 - deze poorten worden door Windows gebruikt om toegang te krijgen tot gedeelde computerbronnen (mappen, printers). Open deze poorten niet naar buiten, d.w.z. op het regionale lokale netwerk en internet. Ze moeten worden afgesloten met een firewall. Ook als u op het lokale netwerk niets ziet in de netwerkomgeving of niet zichtbaar bent, komt dit waarschijnlijk doordat de firewall deze poorten heeft geblokkeerd. Deze poorten moeten dus open zijn voor het lokale netwerk, maar gesloten voor internet. 21 - poort FTP server. 25 - postpoort SMTP server. Uw e-mailclient verzendt er brieven doorheen. Het IP-adres van de SMTP-server en zijn poort (25e) moeten worden opgegeven in de instellingen van uw e-mailclient. 110 - poort POP3 server. Hiermee verzamelt uw e-mailclient brieven uit uw mailbox. Het IP-adres van de POP3-server en zijn poort (110e) moeten ook worden opgegeven in de instellingen van uw e-mailclient. 80 - poort WEB-servers. 3128, 8080 - proxyservers (geconfigureerd in de browserinstellingen).

Verschillende speciale IP-adressen:

127.0.0.1 is localhost, het adres van het lokale systeem, d.w.z. lokaal adres van uw computer. 0.0.0.0 - zo worden alle IP-adressen aangewezen. 192.168.xxx.xxx - adressen die willekeurig kunnen worden gebruikt op lokale netwerken; ze worden niet gebruikt op het wereldwijde internet. Ze zijn alleen uniek binnen het lokale netwerk. Adressen uit dit bereik kunt u naar eigen inzicht gebruiken om bijvoorbeeld een thuis- of kantoornetwerk op te bouwen.

Wat is het subnetmasker en de standaardgateway (router, router)?

(Deze parameters worden ingesteld in de netwerkverbindingsinstellingen).

Het is eenvoudig. Computers zijn verbonden met lokale netwerken. Op een lokaal netwerk ‘zien’ computers elkaar rechtstreeks. Lokale netwerken zijn met elkaar verbonden via gateways (routers, routers). Het subnetmasker is ontworpen om te bepalen of de ontvangende computer tot hetzelfde lokale netwerk behoort of niet. Als de ontvangende computer tot hetzelfde netwerk behoort als de verzendende computer, wordt het pakket er rechtstreeks naartoe gestuurd, anders wordt het pakket naar de standaardgateway gestuurd, die het pakket vervolgens via bekende routes naar een ander netwerk verzendt, d.w.z. naar een ander postkantoor (naar analogie met het Sovjetpostkantoor).

Laten we tot slot eens kijken naar wat deze onduidelijke termen betekenen:

TCP/IP is de naam van een reeks netwerkprotocollen. In feite doorloopt het verzonden pakket verschillende lagen. (Net als op het postkantoor: eerst schrijf je een brief, dan stop je hem in een geadresseerde envelop, dan plakt het postkantoor er een postzegel op, enz.).

IP Het protocol is een zogenaamd netwerklaagprotocol. De taak van dit niveau is het afleveren van IP-pakketten van de computer van de afzender naar de computer van de ontvanger. Naast de gegevens zelf hebben pakketten op dit niveau een bron-IP-adres en een ontvanger-IP-adres. Poortnummers worden niet gebruikt op netwerkniveau. Welke poort, d.w.z. de applicatie is gericht aan dit pakket, of dit pakket is afgeleverd of verloren is gegaan is op dit niveau onbekend - dit is niet zijn taak, dit is de taak van de transportlaag.

TCP en UDP Dit zijn protocollen van de zogenaamde transportlaag. De transportlaag bevindt zich boven de netwerklaag. Op dit niveau worden een bronpoort en een bestemmingspoort aan het pakket toegevoegd.

TCP is een verbindingsgericht protocol met gegarandeerde pakketaflevering. Eerst worden speciale pakketten uitgewisseld om een ​​verbinding tot stand te brengen, er vindt zoiets als een handdruk plaats (-Hallo. -Hallo. -Zullen we chatten? -Kom op.). Vervolgens worden er over deze verbinding pakketjes heen en weer gestuurd (er is een gesprek gaande) en wordt gecontroleerd of het pakketje de ontvanger heeft bereikt. Als het pakket niet wordt ontvangen, wordt het opnieuw verzonden (“herhaal, ik heb het niet gehoord”).

UDP is een verbindingsloos protocol met niet-gegarandeerde pakketbezorging. (Zoals: iets geschreeuwd, maar of ze je hoorden of niet - het maakt niet uit).

Boven de transportlaag bevindt zich de applicatielaag. Op dit niveau kunnen protocollen zoals http, ftp etc. HTTP en FTP gebruiken bijvoorbeeld het betrouwbare TCP-protocol, en de DNS-server werkt via het onbetrouwbare UDP-protocol.

Hoe huidige verbindingen bekijken?

Met het commando kunnen huidige verbindingen worden bekeken

Netstat-een

(de parameter n geeft aan dat IP-adressen moeten worden weergegeven in plaats van domeinnamen).

Deze opdracht werkt als volgt:

"Start" - "Uitvoeren" - typ cmd - "Ok". Typ in de console die verschijnt (zwart venster) de opdracht netstat -an en klik . Het resultaat is een lijst met bestaande verbindingen tussen de sockets van onze computer en externe knooppunten.

We krijgen bijvoorbeeld:

Actieve verbindingen

Naam Lokaal adres Extern adres Staat
TCP 0.0.0.0:135 0.0.0.0:0 LUISTEREN
TCP 91.76.65.216:139 0.0.0.0:0 LUISTEREN
TCP 91.76.65.216:1719 212.58.226.20:80 GEVESTIGD
TCP 91.76.65.216:1720 212.58.226.20:80 GEVESTIGD
TCP 91.76.65.216:1723 212.58.227.138:80 SLUITEN_WAIT
TCP 91.76.65.216:1724 212.58.226.8:80 GEVESTIGD
...

In dit voorbeeld betekent 0.0.0.0:135 dat onze computer luistert (LISTENING) naar poort 135 op al zijn IP-adressen en klaar is om verbindingen te accepteren van iedereen erop (0.0.0.0:0) via het TCP-protocol.

91.76.65.216:139 - onze computer luistert naar poort 139 op zijn IP-adres 91.76.65.216.

De derde regel betekent dat de verbinding nu tot stand is gebracht (ESTABLISHED) tussen onze machine (91.76.65.216:1719) en de externe machine (212.58.226.20:80). Poort 80 betekent dat onze machine een verzoek heeft ingediend bij de webserver (ik heb eigenlijk pagina's geopend in de browser).

In toekomstige artikelen zullen we bekijken hoe we deze kennis kunnen toepassen, b.v.

Wanneer twee hosts communiceren via TCP, wordt er een verbinding tot stand gebracht voordat de gegevensuitwisseling kan beginnen. Zodra de communicatie is voltooid, worden de sessies gesloten en wordt de verbinding verbroken. De verbindings- en sessiemechanismen maken de betrouwbaarheidsfunctie van TCP mogelijk.

Zie de afbeelding om de stappen te volgen voor het maken en beëindigen van een TCP-verbinding.

De host houdt elk gegevenssegment binnen een sessie bij en communiceert welke gegevens door elke host worden ontvangen met behulp van informatie in de TCP-header.

Elke verbinding omvat communicatiestromen in één richting, of sessies, om het TCP-proces tussen de eindapparaten tot stand te brengen en te beëindigen. Om een ​​verbinding tot stand te brengen, voeren hosts een optreden uit handdruk in drie stappen. De controlebits in de TCP-header geven de voortgang en status van de verbinding aan. Handdruk in drie stappen:

  • Stelt vast dat het doelapparaat aanwezig is op het netwerk
  • Controleert of het doelapparaat een actieve service heeft en verzoeken accepteert voor het bestemmingspoortnummer dat de client voor de sessie wil gebruiken
  • Vertelt het bestemmingsapparaat dat de bronclient van plan is een communicatiesessie tot stand te brengen op dit poortnummer

Bij TCP-verbindingen begint de host, die optreedt als client, een sessie met de server. Om te begrijpen hoe de drieweghandshake die door het TCP-verbindingsproces wordt gebruikt, werkt, moet u rekening houden met de verschillende waarden die tussen beide knooppunten worden uitgewisseld. De drie stappen bij het maken van een TCP-verbinding zijn:

1. De oorspronkelijke client verzendt een segment met het startvolgnummer, dat dient als een verzoek naar de server om een ​​communicatiesessie te starten.

2. De server antwoordt met een segment dat een bevestigingswaarde bevat die gelijk is aan het ontvangen volgnummer plus 1, plus zijn eigen synchronisatievolgordewaarde. Deze waarde is één groter dan het volgnummer, omdat de ACK (bevestiging) altijd de eerstvolgende verwachte byte of octet is. Met deze bevestigingswaarde kan de client het antwoord terugbinden aan het oorspronkelijke segment dat naar de server is verzonden.

3. De oorspronkelijke klant antwoordt met een bevestigingswaarde die gelijk is aan het volgnummer dat hij heeft ontvangen plus één. Met deze stap wordt het proces voor het tot stand brengen van de verbinding voltooid.

Binnen de TCP-segmentheader bevinden zich zes 1-bit-velden die besturingsinformatie bevatten die wordt gebruikt om TCP-processen te besturen. Dit zijn de velden:

URG- Het veld "Belangrijkheid" is ingeschakeld

ACK- Het veld "Bevestigingsnummer" is ingeschakeld

P.S.H.- Push-functie (push gegevens verzameld in de buffer naar de gebruikersapplicatie)

RST- Verbinding opnieuw ingesteld

VIN- Er zijn geen gegevens meer van de afzender, de verbinding is verbroken

Deze velden worden vlaggen genoemd omdat elk van deze velden slechts één bit beslaat en daarom slechts twee waarden kan aannemen: 1 of 0. Wanneer de waarde van de bit is ingesteld op 1, geeft deze aan welke besturingsinformatie zich in het segment bevindt.

Het beëindigen van een TCP-verbinding gebeurt in vier stappen, als resultaat van de uitwisseling van de overeenkomstige waarden van deze vlaggen.

Met een vooraf tot stand gebrachte verbinding vraagt ​​het de gegevens opnieuw op in geval van gegevensverlies en elimineert het duplicatie bij het ontvangen van twee exemplaren van hetzelfde pakket, waardoor, in tegenstelling tot UDP, de integriteit van de verzonden gegevens wordt gegarandeerd en de afzender op de hoogte wordt gesteld van de resultaten van de overdracht.

TCP-implementaties zijn meestal ingebouwd in besturingssysteemkernels. Er zijn TCP-implementaties die in de gebruikersruimte werken.

Bij overdracht van computer naar computer via internet werkt TCP op de bovenste laag tussen twee eindsystemen, zoals een browser en een webserver. TCP draagt ​​op betrouwbare wijze een stroom bytes over van het ene proces naar het andere. TCP implementeert flow control, congestiecontrole, handshake, betrouwbare transmissie.

TCP-segmentkop

Kopstructuur
Beetje 0 - 3 4 - 9 10 - 15 16 - 31
0 Bronpoort Bronpoort Haven van bestemming, Bestemmingshaven
32 Serienummer, Volgnummer (SN)
64 Bevestigingsnummer
96 Lengte kop Gereserveerd Vlaggen Venstergrootte
128 Controlesom Belangindicator
160 Opties (optioneel, maar bijna altijd gebruikt)
160/192+ Gegevens

Bronpoort, bestemmingspoort

Deze 16-bits velden bevatten poortnummers; nummers die worden bepaald door een speciale lijst.

Bronpoort identificeert de clienttoepassing van waaruit de pakketten zijn verzonden. Op basis van dit nummer worden responsgegevens naar de klant verzonden.

Haven van bestemming identificeert de poort waarnaar het pakket is verzonden.

Serienummer

Het volgnummer dient twee doelen:

  1. Als de SYN-vlag is ingesteld, is dit het initiële volgnummer - ISN (Initial Sequence Number), en de eerste byte aan gegevens die in het volgende pakket wordt verzonden, heeft een nummer gelijk aan ISN + 1.
  2. Anders, als SYN niet is ingesteld, heeft de eerste byte aan gegevens die in een bepaald pakket wordt verzonden dit volgnummer

Omdat een TCP-stroom doorgaans langer kan zijn dan het aantal afzonderlijke toestanden van dit veld, moeten alle bewerkingen met een volgnummer modulo 2 32 worden uitgevoerd. Dit plaatst een praktische beperking op het gebruik van TCP. Als de transmissiesnelheid van het communicatiesysteem zodanig is dat er tijdens MSL (maximale segmentlevensduur) een volgnummeroverloop optreedt, kunnen er twee segmenten met hetzelfde nummer op het netwerk verschijnen, die tot verschillende delen van de stroom behoren, en ontvangt de ontvanger onjuiste gegevens.

Bevestigingsnummer

Bevestigingsnummer (ACK SN)(32 bits) - als de ACK-vlag is ingesteld, bevat dit veld het volgnummer van het octet dat de zender van dit segment wil ontvangen. Dit betekent dat alle voorgaande octetten (genummerd ISN+1 tot en met ACK-1) met succes zijn ontvangen.

Koplengte (data-offset)

De headerlengte (data-offset) beslaat 4 bits en specificeert de waarde van de headerlengte, gemeten in woorden van 32 bits. De minimale grootte is 20 bytes (vijf woorden van 32 bits) en de maximale grootte is 60 bytes (vijftien woorden van 32 bits). De headerlengte bepaalt de offset van de payload ten opzichte van het begin van het segment. Een gegevensverschuiving van 1111 betekent bijvoorbeeld dat de header vijftien woorden van 32 bits beslaat (15 regels * 32 bits per regel / 8 bits = 60 bytes).

Gereserveerd

Gereserveerd (6 bits) voor toekomstig gebruik en moet op nul worden gezet. Hiervan zijn er al twee (5e en 6e) gedefinieerd:

  • C.W.R.(Congestion Window Reduced) - Het veld Congestion Window Reduced wordt door de afzender ingesteld om aan te geven dat een pakket is ontvangen met de ECE-vlag ingesteld (RFC 3168)
  • ECE(ECN-Echo) - ECN Echo-veld - geeft aan dat dit knooppunt in staat is tot ECN (Explicit Congestion Notification) en om de afzender te waarschuwen over netwerkcongestie (RFC 3168)

Vlaggen (controlebits)

Dit veld bevat 6-bits vlaggen:

  • URG- veld "Belangindex" betrokken (Engels) Het dringende aanwijzerveld is aanzienlijk)
  • ACK- veld "Bevestigingsnummer" betrokken (Engels) Het bevestigingsveld is aanzienlijk)
  • P.S.H.- (Engelse Push-functie) instrueert de ontvanger om de gegevens die zijn verzameld in de ontvangende buffer naar de gebruikersapplicatie te pushen
  • RST- verbindingen verbreken, de buffer resetten (buffer wissen) (eng. Reset de verbinding)
  • SYN- synchronisatie van volgnummers (eng. Volgnummers synchroniseren)
  • VIN(eng. final, bit) - de vlag geeft, indien ingesteld, de voltooiing van de verbinding aan (eng. FIN-bit gebruikt voor het beëindigen van de verbinding).

Venstergrootte

Het aantal bytes aan gegevens, beginnend bij het laatste bevestigingsnummer, dat kan worden ontvangen door de ontvanger van dit pakket. Met andere woorden: de pakketontvanger heeft een buffer van “venstergrootte”-bytes om gegevens te ontvangen.

Controlesom

Het controlesomveld is het 16-bits complement van de som van alle 16-bits woorden van de header (inclusief de pseudo-header) en gegevens. Als het segment waaruit de controlesom wordt berekend een lengte heeft die geen veelvoud van 16 bits is, dan wordt de lengte van het segment vergroot tot een veelvoud van 16 door er aan de rechterkant nul opvulbits aan toe te voegen. Opvulbits (0) worden niet verzonden in het bericht en dienen alleen om de controlesom te berekenen. Bij het berekenen van de controlesom wordt aangenomen dat de waarde van het controlesomveld zelf 0 is.

Belangindicator

De 16-bits waarde van de positieve verschuiving ten opzichte van het volgnummer in dit segment. Dit veld specificeert het octetvolgnummer waarmee de urgente gegevens worden beëindigd. Er wordt alleen rekening gehouden met dit veld voor pakketten waarvoor de URG-vlag is ingesteld. Gebruikt voor out-of-band data.

Opties

Kan in sommige gevallen worden gebruikt om het protocol uit te breiden. Soms gebruikt voor testen. Op dit moment omvatten de opties bijna altijd 2 bytes NOP (in dit geval 0x01) en 10 bytes die tijdstempels specificeren. U kunt de lengte van het optieveld berekenen met behulp van de waarde van het offsetveld.

Mechanisme van het protocol

In tegenstelling tot het traditionele alternatief, UDP, dat onmiddellijk kan beginnen met het verzenden van pakketten, brengt TCP verbindingen tot stand die tot stand moeten worden gebracht voordat gegevens kunnen worden verzonden. Een TCP-verbinding kan in 3 fasen worden verdeeld:

  • Een verbinding tot stand brengen
  • Gegevensoverdracht
  • De verbinding beëindigen

TCP-sessiestatussen

TCP-sessiestatussen
GESLOTEN De beginstatus van het knooppunt. Eigenlijk fictief
LUISTEREN De server wacht op verbindingsverzoeken van de client
SYN-VERZONDEN De client heeft een verzoek naar de server gestuurd om een ​​verbinding tot stand te brengen en wacht op een reactie
SYN-ONTVANGEN De server heeft een verbindingsverzoek ontvangen, een antwoordverzoek verzonden en wacht op bevestiging
GEVESTIGD Verbinding tot stand gebracht, gegevensoverdracht bezig
FIN-WACHT-1 Een van de partijen (laten we het knooppunt-1 noemen) voltooit de verbinding door een segment met de FIN-vlag te verzenden
DICHT-WACHT De andere kant (knooppunt-2) komt in deze toestand door op zijn beurt een ACK-segment te verzenden en gaat door met de eenrichtingstransmissie
FIN-WACHT-2 Knooppunt-1 ontvangt ACK, gaat verder met lezen en wacht op het ontvangen van een segment met de FIN-vlag
LAATSTE-ACK Knooppunt-2 beëindigt de transmissie en verzendt het segment met de FIN-vlag
TIJD-WACHT Knooppunt-1 ontving een segment met de FIN-vlag, stuurde een segment met de ACK-vlag en wacht 2*MSL seconden voordat hij uiteindelijk de verbinding verbrak
SLUITEN Beide partijen hebben tegelijkertijd de verbindingssluiting gestart: na het verzenden van een segment met de FIN-vlag ontvangt knooppunt-1 ook een FIN-segment, verzendt een ACK en wacht op een ACK-segment (bevestiging van zijn verzoek om de verbinding te verbreken)

Een verbinding tot stand brengen

Het proces voor het starten van een TCP-sessie (ook wel handshake genoemd) bestaat uit drie stappen.

1. Een client die een verbinding tot stand wil brengen, stuurt een segment met een volgnummer en een SYN-vlag naar de server.

  • De server ontvangt het segment, onthoudt het volgnummer en probeert een socket (buffers en controlegeheugenstructuren) te creëren om de nieuwe client te bedienen.
    • Als dit lukt, stuurt de server de client een segment met een volgnummer en de vlaggen SYN en ACK, en gaat naar de status SYN-RECEIVED.
    • In geval van een storing stuurt de server de client een segment met de RST-vlag.

2. Als de client een segment met de SYN-vlag ontvangt, onthoudt hij het volgnummer en verzendt hij het segment met de ACK-vlag.

  • Als de client tegelijkertijd ook de ACK-vlag ontvangt (wat meestal gebeurt), komt hij in de status ESTABLISHED.
  • Als de client een segment met de RST-vlag ontvangt, stopt hij met verbinding maken.
  • Als de client binnen 10 seconden geen reactie ontvangt, herhaalt hij het verbindingsproces opnieuw.

3. Als de server in de SYN-RECEIVED-status een segment met de ACK-vlag ontvangt, gaat deze naar de ESTABLISHED-status.

  • Anders wordt na een time-out de socket gesloten en gaat deze naar de status GESLOTEN.

Het proces wordt “three-way handshake” genoemd, omdat het weliswaar mogelijk is om een ​​verbinding tot stand te brengen met behulp van vier segmenten (SYN naar de server, ACK naar de client, SYN naar de client, ACK naar de server), maar in de praktijk zijn er drie segmenten worden gebruikt om tijd te besparen.

Voorbeeld van een basisgoedkeuring in 3 stappen:

TCP A TCP B 1. GESLOTEN LUISTEREN 2. SYN-VERZONDEN --> --> SYN-ONTVANGEN 3. GEVESTIGD<-- <-- SYN-RECEIVED 4. ESTABLISHED --> --> GEVESTIGD 5. GEVESTIGD<-- <-- ESTABLISHED

Op regel 2 begint TCP A met het verzenden van een SYN-segment dat het gebruik van volgnummers aangeeft, beginnend met 100. Op regel 3 verzendt TCP B een SYN en een bevestiging voor de ontvangen SYN naar TCP A. Opgemerkt moet worden dat het bevestigingsveld geeft aan dat TCP B wacht op de ontvangst van het volgnummer 101, waarmee SYN-nummer 100 wordt bevestigd.

Op regel 4 antwoordt TCP A met een leeg segment met een ACK voor het SYN-segment van TCP B; op lijn 5 TCP B verzendt enkele gegevens. Houd er rekening mee dat het segmentbevestigingsnummer op regel 5 (ACK=101) hetzelfde is als het volgnummer op regel 4 (SEQ=101), aangezien ACK geen volgnummerruimte in beslag neemt (als dit wordt gedaan, moet u de bevestigingen bevestigen - ACK voor ACK).

Gegevensoverdracht

Bij het uitwisselen van gegevens gebruikt de ontvanger het volgnummer in de ontvangen segmenten om de oorspronkelijke volgorde te herstellen. De ontvanger informeert de verzendende kant over het volgnummer tot waar hij met succes gegevens heeft ontvangen, inclusief dit in het veld "bevestigingsnummer". Alle ontvangen gegevens met betrekking tot het interval van bevestigde reeksen worden genegeerd. Als het ontvangen segment een volgnummer bevat dat groter is dan verwacht, worden de gegevens van het segment gebufferd, maar wordt het bevestigde volgnummer niet gewijzigd. Als vervolgens een segment wordt ontvangen dat overeenkomt met het verwachte volgnummer, wordt de volgorde van de gegevens automatisch hersteld op basis van de volgnummers in de segmenten.

Om ervoor te zorgen dat de verzendende kant niet meer gegevens verzendt dan de ontvanger kan verwerken, bevat TCP flowcontrols. Gebruik hiervoor het veld "venster". In segmenten die van de ontvanger naar de zendende kant worden verzonden, wordt de huidige grootte van de ontvangende buffer aangegeven in het “venster”-veld. De verzendende kant behoudt de venstergrootte en verzendt niet meer gegevens dan aangegeven door de ontvanger. Als de ontvanger een venstergrootte van nul heeft opgegeven, worden er geen gegevens in de richting van dit knooppunt verzonden totdat de ontvanger een grotere venstergrootte meldt.

In sommige gevallen kan de verzendende applicatie expliciet verzoeken dat de gegevens achtereenvolgens naar de ontvangende applicatie worden gepusht zonder deze te bufferen. Hiervoor wordt de PSH-vlag gebruikt. Als de PSH-vlag wordt gedetecteerd in het ontvangen segment, retourneert de TCP-implementatie alle momenteel gebufferde gegevens naar de ontvangende applicatie. Push wordt bijvoorbeeld gebruikt in interactieve toepassingen. Bij netwerkterminals heeft het geen zin om te wachten op gebruikersinvoer nadat hij klaar is met het typen van een opdracht. Daarom moet het laatste segment dat de opdracht bevat de PSH-vlag bevatten, zodat de toepassing aan de ontvangende kant kan beginnen met het uitvoeren ervan.

De verbinding beëindigen

Het beëindigen van een verbinding kan in drie fasen worden overwogen:

  1. Het verzenden van de FIN-vlag naar de server vanaf de client om de verbinding te verbreken.
  2. De server verzendt de clientantwoordvlaggen ACK, FIN, wat aangeeft dat de verbinding is gesloten.
  3. Na ontvangst van deze vlaggen sluit de client de verbinding en stuurt een ACK naar de server om te bevestigen dat de verbinding is gesloten.

Bekende problemen

Maximale segmentgrootte

TCP vereist een expliciete maximale segmentgrootte (MSS) als er een virtuele verbinding wordt gemaakt via een netwerksegment waarbij de maximale eenheidsgrootte (MTU) kleiner is dan de standaard Ethernet MTU (1500 bytes).

In tunnelprotocollen zoals GRE, IPIP en ook PPPoE is de tunnel-MTU kleiner dan de standaard, dus de maximale TCP-segmentgrootte heeft een pakketlengte die groter is dan de MTU. Dit leidt tot fragmentatie en verminderde transmissiesnelheid van nuttige gegevens. Als fragmentatie op welk knooppunt dan ook verboden is, ziet dit er van de kant van de gebruiker uit als een “vastzittende” verbinding. In dit geval kan “bevriezing” op willekeurige tijdstippen optreden, namelijk wanneer de afzender segmenten gebruikt die langer zijn dan de toegestane grootte. Om dit probleem op te lossen, gebruiken routers firewallregels die een MSS-parameter toevoegen aan alle pakketten die verbindingen initiëren, zodat de afzender segmenten van een geldige grootte gebruikt.

MSS kan ook worden beheerd via de instellingen van het besturingssysteem.

Detectie van fouten tijdens de gegevensoverdracht

Hoewel het protocol op elk segment een checksum-controle uitvoert, wordt het gebruikte algoritme als zwak beschouwd. Dus in 2008 leidde een fout in de overdracht van één bit, die niet werd gedetecteerd door netwerktools, tot het afsluiten van de systeemservers van Amazon Web Services.

Over het algemeen worden gedistribueerde netwerktoepassingen aangemoedigd om aanvullende software te gebruiken om de integriteit van de verzonden informatie te garanderen.

Protocol-aanvallen

De tekortkomingen van het protocol komen tot uiting in succesvolle theoretische en praktische aanvallen, waarbij een aanvaller toegang kan krijgen tot verzonden gegevens, zich kan voordoen als de andere partij of het systeem onbruikbaar kan maken.

Transportlaag

De taak van de transportlaag is om gegevens over te dragen tussen verschillende applicaties die op alle netwerkknooppunten draaien. Nadat het pakket via IP bij de ontvangende computer is afgeleverd, moeten de gegevens naar een speciaal ontvangersproces worden verzonden. Elke computer kan meerdere processen uitvoeren en een applicatie kan meerdere toegangspunten hebben die als bestemming voor datapakketten fungeren.

Pakketten die aankomen op de transportlaag van het besturingssysteem worden georganiseerd in meerdere wachtrijen bij de ingangspunten van verschillende applicaties. In TCP/IP-terminologie worden deze toegangspunten poorten genoemd.

Transmissiecontroleprotocol

Transmissiecontroleprotocol(TCP) (Transmission Control Protocol) is een verplicht protocol van de TCP/IP-standaard, gedefinieerd in RFC 793, "Transmission Control Protocol (TCP)".

TCP is een transportlaagprotocol dat zorgt voor transport (transmissie) van een datastroom, waarbij eerst een verbinding tot stand moet worden gebracht, waardoor het vertrouwen in de integriteit van de ontvangen gegevens wordt gegarandeerd, en dat ook een herhaald verzoek om gegevens uitvoert in geval van gegevensverlies of corruptie. Bovendien controleert het TCP-protocol dubbele pakketten en vernietigt het, indien gedetecteerd, dubbele pakketten.

In tegenstelling tot het UDP-protocol garandeert het de integriteit van de verzonden gegevens en de bevestiging door de afzender van de resultaten van de overdracht. Gebruikt bij bestandsoverdrachten waarbij het verlies van één pakket het hele bestand kan beschadigen.

TCP bereikt zijn betrouwbaarheid door:

  • Gegevens uit de applicatie worden opgedeeld in blokken van een bepaalde grootte die worden verzonden.
  • Wanneer TCP een segment verzendt, wordt een timer ingesteld, die wacht op een bevestiging van dat segment vanaf de externe kant. Als er na het verstrijken van de tijd geen bevestiging wordt ontvangen, wordt het segment opnieuw verzonden.
  • Wanneer TCP gegevens ontvangt van de externe kant van de verbinding, verzendt het een bevestiging. Deze bevestiging wordt niet onmiddellijk verzonden, maar wordt meestal een fractie van een seconde vertraagd.
  • TCP berekent een controlesom voor zijn header en gegevens. Dit is een controlesom die wordt berekend aan de uiteinden van de verbinding en die tot doel heeft elke wijziging in de gegevens tijdens de verzending te detecteren. Als een segment arriveert met een onjuiste controlesom, verwijdert TCP dit en wordt er geen bevestiging gegenereerd. (Er wordt verwacht dat de afzender een time-out krijgt en opnieuw verzendt.)
  • Omdat TCP-segmenten als IP-datagrammen worden verzonden en IP-datagrammen willekeurig kunnen aankomen, kunnen TCP-segmenten ook willekeurig aankomen. Na ontvangst van de gegevens kan TCP deze indien nodig opnieuw rangschikken, zodat de applicatie de gegevens in de juiste volgorde ontvangt.
  • Omdat een IP-datagram kan worden gedupliceerd, moet het ontvangende TCP de gedupliceerde gegevens verwijderen.
  • TCP biedt stroomcontrole. Elke kant van een TCP-verbinding heeft een specifieke bufferruimte. TCP aan de ontvangende kant zorgt ervoor dat de externe kant alleen gegevens kan verzenden als de ontvanger deze in een buffer kan passen. Dit voorkomt dat langzame hosts hun buffers overstromen met snelle hosts.

  • Het volgnummer dient twee doelen:
    • Als de SYN-vlag is ingesteld, is dit de initiële waarde van het volgnummer - ISN (Initial Sequence Number), en de eerste byte aan gegevens die in het volgende pakket wordt verzonden, heeft een volgnummer gelijk aan ISN + 1.
    • Anders, als SYN niet is ingesteld, heeft de eerste byte aan gegevens die in een bepaald pakket wordt verzonden dit volgnummer.
  • Bevestigingsnummer - Als de ACK-vlag is ingesteld, bevat dit veld het volgnummer dat de ontvanger de volgende keer verwacht. Markeert dit segment als ontvangstbevestiging.
  • De headerlengte wordt gespecificeerd in woorden van 32 bits.
  • Venstergrootte is het aantal bytes dat de ontvanger bereid is te accepteren zonder bevestiging.
  • Checksum - omvat pseudo-header, header en gegevens.
  • Urgentie-indicator - geeft de laatste byte aan urgente gegevens aan waarop onmiddellijk moet worden gereageerd.
  • URG - urgentievlag, bevat het veld "Urgency Indicator"; indien =0, wordt het veld genegeerd.
  • ACK - bevestigingsvlag, bevat het veld "Bevestigingsnummer", indien =0 wordt het veld genegeerd.
  • PSH - de vlag vereist een push-operatie, de TCP-module moet het pakket dringend naar het programma overbrengen.
  • RST - verbindingsonderbrekingsvlag, gebruikt om een ​​verbinding te weigeren
  • SYN - volgnummersynchronisatievlag, gebruikt bij het tot stand brengen van een verbinding.
  • FIN - einde van de transmissievlag vanaf de kant van de afzender

Laten we eens kijken naar de headerstructuur TCP met behulp van Wireshark-netwerkanalysator:


TCP-poorten

Omdat er meerdere programma's op dezelfde computer kunnen draaien, wordt voor het afleveren van een TCP-pakket aan een specifiek programma de unieke identificatie of poortnummer van elk programma gebruikt.

Poortnummer is een voorwaardelijk 16-bits getal van 1 tot 65535 dat aangeeft voor welk programma het pakket bedoeld is.

TCP-poorten gebruiken een specifieke programmapoort om gegevens te leveren die worden verzonden met behulp van het Transmission Control Protocol (TCP). TCP-poorten zijn complexer en werken anders dan UDP-poorten. Hoewel een UDP-poort fungeert als een enkele berichtenwachtrij en als toegangspunt voor een UDP-verbinding, is het uiteindelijke toegangspunt voor alle TCP-verbindingen een unieke verbinding. Elke TCP-verbinding wordt uniek geïdentificeerd door twee toegangspunten.

Elke individuele TCP-serverpoort kan gedeelde toegang tot meerdere verbindingen bieden, omdat alle TCP-verbindingen worden geïdentificeerd door twee waarden: een IP-adres en een TCP-poort (socket).

Alle TCP-poortnummers die kleiner zijn dan 1024 zijn gereserveerd en geregistreerd bij de Internet Assigned Numbers Authority (IANA).

UDP- en TCP-poortnummers overlappen elkaar niet.

TCP-programma's gebruiken gereserveerde of bekende poortnummers, zoals weergegeven in de volgende afbeelding.

Een TCP-verbinding tot stand brengen

Laten we nu kijken hoe TCP-verbindingen tot stand komen. Stel dat een proces dat op de ene host draait, een verbinding tot stand wil brengen met een ander proces op een andere host. Bedenk dat de host die de verbinding initieert de "client" wordt genoemd, terwijl de andere host de "server" wordt genoemd.

Voordat er gegevens kunnen worden verzonden, moeten de partijen volgens het TCP-protocol een verbinding tot stand brengen. De verbinding wordt in drie fasen tot stand gebracht (TCP-proces "triple handshake").

  • De aanvrager (meestal de client genoemd) verzendt een SYN-segment dat het poortnummer aangeeft van de server waarmee de client verbinding wil maken, en het originele volgnummer (ISN) van de client.
  • De server antwoordt met zijn SYN-segment dat het originele volgnummer van de server bevat. De server bevestigt ook de aankomst van de SYN van de klant met behulp van ACK (ISN + 1). Per SYN wordt één volgnummer gebruikt.
  • De cliënt moet de aankomst van een SYN van de server bevestigen met zijn SYN-segmenten die het originele volgnummer van de cliënt bevatten (ISN+1) en met behulp van een ACK (ISN+1). De SYN-bit wordt op 0 gezet omdat de verbinding tot stand is gebracht.

Zodra de TCP-verbinding tot stand is gebracht, kunnen deze twee hosts gegevens naar elkaar verzenden. Omdat de TCP-verbinding full-duplex is, kunnen ze tegelijkertijd gegevens verzenden.

Interactie tussen computers op internet vindt plaats via netwerkprotocollen, een overeengekomen reeks specifieke regels volgens welke verschillende apparaten voor gegevensoverdracht informatie uitwisselen. Er zijn protocollen voor foutcontroleformaten en andere soorten protocollen. Het meest gebruikte protocol bij wereldwijd internetwerken is TCP-IP.

Wat voor soort technologie is dit? De naam TCP-IP komt van twee netwerkprotocollen: TCP en IP. Uiteraard beperkt de constructie van netwerken zich niet tot deze twee protocollen, maar ze zijn fundamenteel voor zover het de organisatie van de datatransmissie betreft. In feite is TCP-IP een reeks protocollen waarmee individuele netwerken kunnen worden samengevoegd

Het TCP-IP-protocol, dat niet alleen kan worden beschreven door de definities van IP en TCP, omvat ook de protocollen UDP, SMTP, ICMP, FTP, telnet en meer. Deze en andere TCP-IP-protocollen bieden de meest complete werking van internet.

Hieronder geven we een gedetailleerde beschrijving van elk protocol dat deel uitmaakt van het algemene concept van TCP-IP.

. Internet-protocol(IP) is verantwoordelijk voor de directe overdracht van informatie op het netwerk. De informatie wordt in delen (dat wil zeggen pakketten) verdeeld en door de afzender naar de ontvanger verzonden. Voor een nauwkeurige adressering moet u het exacte adres of de coördinaten van de ontvanger opgeven. Dergelijke adressen bestaan ​​uit vier bytes, die door punten van elkaar zijn gescheiden. Het adres van elke computer is uniek.

Het gebruik van het IP-protocol alleen is echter mogelijk niet voldoende voor een correcte gegevensoverdracht, aangezien het volume van de meeste verzonden informatie meer dan 1500 tekens bedraagt, wat niet langer in één pakket past, en sommige pakketten verloren kunnen gaan tijdens de verzending of verzonden kunnen worden. de verkeerde volgorde.

. Transmissiecontroleprotocol(TCP) wordt op een hoger niveau gebruikt dan het vorige. Gebaseerd op het vermogen van het IP-protocol om informatie van de ene host naar de andere over te dragen, maakt het TCP-protocol het mogelijk grote hoeveelheden informatie te verzenden. TCP is ook verantwoordelijk voor het verdelen van verzonden informatie in afzonderlijke delen (pakketten) en voor het correct herstellen van gegevens uit pakketten die na verzending worden ontvangen. In dit geval herhaalt dit protocol automatisch de verzending van pakketten die fouten bevatten.

Het beheer van de organisatie van gegevensoverdracht in grote volumes kan worden uitgevoerd met behulp van een aantal protocollen die speciale functionele doeleinden hebben. Er zijn met name de volgende typen TCP-protocollen.

1. FTP(File Transfer Protocol) organiseert de bestandsoverdracht en wordt gebruikt om informatie over te dragen tussen twee internetknooppunten met behulp van TCP-verbindingen in de vorm van een binair of eenvoudig tekstbestand, als een benoemd gebied in het computergeheugen. In dit geval maakt het niet uit waar deze knooppunten zich bevinden en hoe ze met elkaar zijn verbonden.

2. Gebruikersdatagramprotocol, of User Datagram Protocol, is verbindingsonafhankelijk en verzendt gegevens in pakketten die UDP-datagrammen worden genoemd. Dit protocol is echter niet zo betrouwbaar als TCP, omdat de afzender niet weet of het pakket daadwerkelijk is ontvangen.

3. ICMP(Internet Control Message Protocol) bestaat om foutmeldingen te verzenden die optreden tijdens gegevensuitwisseling op internet. Het ICMP-protocol rapporteert echter alleen fouten, maar elimineert niet de redenen die tot deze fouten hebben geleid.

4. Telnet- die wordt gebruikt om een ​​tekstinterface op een netwerk te implementeren met behulp van het TCP-transport.

5. SMTP(Simple Mail Transfer Protocol) is een speciaal elektronisch bericht dat het formaat definieert van berichten die worden verzonden van de ene computer, een zogenaamde SMTP-client, naar een andere computer waarop een SMTP-server draait. In dit geval kan deze overdracht enige tijd worden uitgesteld totdat het werk van zowel de client als de server is geactiveerd.

Gegevensoverdrachtschema via TCP-IP-protocol

1. Het TCP-protocol verdeelt de volledige hoeveelheid gegevens in pakketten, nummert deze en verpakt ze in TCP-enveloppen, waardoor u de volgorde kunt herstellen waarin delen van de informatie worden ontvangen. Wanneer gegevens in een dergelijke envelop worden geplaatst, wordt een controlesom berekend, die vervolgens in de TCP-header wordt geschreven.

3. TCP controleert vervolgens of alle pakketten zijn ontvangen. Als tijdens de ontvangst de nieuw berekende waarde niet samenvalt met de informatie die op de envelop staat, geeft dit aan dat een deel van de informatie verloren is gegaan of vervormd is tijdens de verzending, vraagt ​​het TCP-IP-protocol opnieuw om het doorsturen van dit pakket. Bevestiging van de ontvangst van gegevens van de ontvanger is ook vereist.

4. Nadat de ontvangst van alle pakketten is bevestigd, rangschikt het TCP-protocol ze dienovereenkomstig en voegt ze opnieuw samen tot één geheel.

Het TCP-protocol maakt gebruik van herhaalde gegevensoverdrachten en wachtperioden (of time-outs) om een ​​betrouwbare levering van informatie te garanderen. Pakketten kunnen tegelijkertijd in twee richtingen worden verzonden.

TCP-IP elimineert dus de noodzaak van hertransmissies en wacht op applicatieprocessen (zoals Telnet en FTP).