Transmission Control Protocol is een onderwerp dat de afgelopen jaren de aandacht van veel mensen heeft getrokken. Met een rijke en gevarieerde geschiedenis is Transmission Control Protocol het onderwerp geweest van debat, onderzoek en spannende discussies. Vanaf het begin tot nu heeft Transmission Control Protocol een onuitwisbare stempel gedrukt op de samenleving en heeft het de manier beïnvloed waarop mensen denken, handelen en zich verhouden. In dit artikel zullen we de impact van Transmission Control Protocol op verschillende aspecten van het dagelijks leven onderzoeken en het belang ervan in de moderne wereld bespreken. Ga met ons mee op deze spannende reis door de fascinerende wereld van Transmission Control Protocol!
Het Transmission Control Protocol (TCP) is een verbindingsgeoriënteerd protocol dat veel gebruikt wordt voor gegevensoverdracht over netwerkverbindingen op het internet en op computernetwerken zoals local area networks en thuisnetwerken.
TCP/IP is een IP-netwerkprotocol voor stabiele, betrouwbare netwerkverbindingen en geen verbindingsloos protocol zoals UDP en GRE. TCP heeft als kenmerken dat het gegevens in een datastroom kan versturen, waarbij de garantie wordt geleverd dat de gegevens aankomen zoals ze verstuurd werden, en eventuele communicatiefouten, zowel in de gegevens zelf als in de volgorde van de gegevens kunnen worden opgevangen. Hierdoor hoeft een clientapplicatie die TCP als transmissieprotocol gebruikt, geen rekening te houden met de onderliggende netwerkarchitectuur en eventuele fouten in de communicatie.
TCP wordt beschreven in het RFC (Request For Comment) 793.
TCP gebruikt men dus primair als de overdracht zeker en compleet moet zijn (onder andere bij bestandsoverdracht); UDP gebruikt men als de overdracht vooral snel moet zijn (telefoon, video).
De volgende velden zijn gedefinieerd voor headers van TCP-segmenten. De hoeveelheid ruimte die voor ieder onderdeel gereserveerd is, is tussen haakjes opgegeven.
Bit offset | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Bronpoort | Bestemmingspoort | ||||||||||||||||||||||||||||||
32 | Sequentienummer | |||||||||||||||||||||||||||||||
64 | Bevestigingsnummer | |||||||||||||||||||||||||||||||
96 | Headerlengte/data offset | Gereser- veerd |
N S |
C W R |
E C E |
U R G |
A C K |
P S H |
R S T |
S Y N |
F I N |
Window-grootte | ||||||||||||||||||||
128 | Controlesom | Verwijzing naar urgente gegevens | ||||||||||||||||||||||||||||||
160 ... |
Opties (if Headerlengte > 5) ... |
Bit offset | Bits 0–3 | 4–7 | 8–15 | 16–31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Bronadres | |||||||||||||||||||||||||||||||
32 | Doeladres | |||||||||||||||||||||||||||||||
64 | Nullen | Protocol | TCP-lengte | |||||||||||||||||||||||||||||
96 | Bronpoort | Doelpoort | ||||||||||||||||||||||||||||||
128 | Volgnummer | |||||||||||||||||||||||||||||||
160 | Bevestigingsnummer | |||||||||||||||||||||||||||||||
192 | Header lengte/data offset | Gereserveerd | Indicators | Window | ||||||||||||||||||||||||||||
224 | Controlesom | Urgentie | ||||||||||||||||||||||||||||||
256 | Opties (optioneel) | |||||||||||||||||||||||||||||||
256/288+ | Data |
Bit offset | Bits 0 - 7 | 8–15 | 16–23 | 24–31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Bronadres | |||||||||||||||||||||||||||||||
32 | ||||||||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||||||
128 | Doeladres | |||||||||||||||||||||||||||||||
160 | ||||||||||||||||||||||||||||||||
192 | ||||||||||||||||||||||||||||||||
224 | ||||||||||||||||||||||||||||||||
256 | TCP-lengte | |||||||||||||||||||||||||||||||
288 | Nullen | Volgende header | ||||||||||||||||||||||||||||||
320 | Bronpoort | Doelpoort | ||||||||||||||||||||||||||||||
352 | Volgnummer | |||||||||||||||||||||||||||||||
384 | Bevestigingsnumber | |||||||||||||||||||||||||||||||
416 | Header lengte/data offset | Gereserveerd | Vlaggen | Window | ||||||||||||||||||||||||||||
448 | Controlesum | Urgentie | ||||||||||||||||||||||||||||||
480 | Opties (optioneel) | |||||||||||||||||||||||||||||||
480/512+ | Data |
De netwerkverbindingen worden door middel van TCP-handshakes gemaakt en aan het eind van een TCP-sessie verbroken met een handshake voor het beëindigen van een sessie. Om een TCP-verbinding op te bouwen stuurt de client een TCP-pakket naar de server met de zogenaamde SYN-vlag. Als de server de verbinding accepteert, wordt een pakket teruggestuurd met zowel een SYN- als ACK-vlag. Als de client vervolgens de server accepteert, stuurt deze een pakketje met de ACK-vlag naar de server. Hierna kunnen pakketjes met de juiste identificatienummers vrij uitgewisseld worden tussen client en server. Iedere keer wordt de checksum van zo'n pakketje gecontroleerd en het pakketje wordt opnieuw opgevraagd indien er een fout in zit. Als er een heel pakket verdwijnt, is dit te merken aan het ack-nummer. Zodra de verbinding gesloten wordt, stuurt de server of client een pakket met de FIN-vlag, waarna de andere kant antwoordt met een ACK-vlag en dit vervolgens in de omgekeerde richting gebeurt, zodat beide partijen op de hoogte zijn dat de connectie werd opgeheven.
De poortnummers worden toegewezen door het IANA en onderverdeeld in well-known (poorten 0 tot 1023), registered (poorten 1024 tot 49151) en dynamic/private (poorten 49152-65535). De toewijzing is een richtlijn en geen regel.
Een aantal vaak gebruikte poortnummers en hun toepassingsprotocol zijn: