# TCP/IP

TCP/IP is een verzamelnaam voor een reeks netwerkprotocollen die gebruikt worden voor het grootste deel van de netwerkcommunicatie tussen computers. Het internet is het grootste en bekendste TCP/IP-netwerk. De naam TCP/IP is een samentrekking van de twee bekendste protocollen die deel uitmaken van de TCP/IP-protocolstack (= protocolstapel): het Transmission Control Protocol (TCP) en het internetprotocol (IP).

## Geschiedenis

Het programma waarmee verschillende lokale computers over lange afstand met elkaar data kunnen uitwisselen via bekabeling, is eind jaren 1970, begin jaren 1980 ontwikkeld door een onderzoeksinstelling van de Amerikaanse overheid, DARPA. TCP/IP zijn pakketgeschakelde protocollen waarbij de gegevens in kleine pakketjes onafhankelijk van elkaar worden verzonden. De communicatiesoftware plaatst de pakketten weer in de juiste volgorde, detecteert eventuele fouten in de ontvangst om indien nodig bepaalde pakketten opnieuw te vragen totdat alle pakketten ontvangen zijn.
Deze manier van werken liet toe om bij de voorloper van internet, ARPANET, informatie in kleine pakketjes te versturen langs verschillende wegen. Het ging hier om de oplossing voor een militair probleem. In geval van een oorlog, en bij het platleggen van sommige computers in een netwerk, was het noodzakelijk dat de overige computers gegevens konden blijven uitwisselen. Was een deel van het netwerk buiten werking, konden met het TCP/IP-protocol gegevens langs andere wegen worden getransporteerd. Dit maakte het netwerk minder kwetsbaar. De doelstelling van de militairen was over een netwerk te beschikken dat ook onder oorlogsomstandigheden voldoende bleef werken.
Midden de jaren 1980 ontstond de idee met zogenaamde open architectuur te gaan werken, basis voor de Information Superhighway. Na verloop van tijd werd het ARPA-netwerk te licht bevonden en zijn de militairen overgestapt naar MILnet. Van toen af werd dit protocol ook tussen de verschillende universiteiten die met elkaar verbonden waren gemeengoed. In 1988 werd de eerste trans-Atlantische e-mail verstuurd, naar het Centrum Wiskunde en Informatica (CWI) Amsterdam via het NSFnet van de universiteiten.

## Kenmerken

Het internet is een zogenaamd pakketgeschakeld netwerk, zonder garantie op enige service. Een pakketje gegevens kan zonder meer verloren gaan, sterker, bij overbelasting van een bepaalde lijn wordt zelfs aangeraden pakketjes weg te gooien. Over dit onbetrouwbare netwerk wordt met behulp van het TCP-protocol een ogenschijnlijk betrouwbare dienst gelegd, waarbij TCP in de gaten houdt of TCP-pakketjes (in de juiste volgorde) aankomen, en indien niet, geen bevestiging (acknowledge) stuurt. Indien bij de zender een welbepaalde wachttijd (time-out) verstrijkt, zonder dat er een bevestiging binnen is, dan stuurt deze het pakketje opnieuw.
Vanwege deze kenmerken is TCP/IP erg geschikt voor netwerkdiensten waar geen garantie over de zekerheid en timing vereist is wanneer bepaalde data aan dient te komen. Bijvoorbeeld, bij het downloaden van een fotootje van internet, maakt het niet uit dat er door pakketverlies enige data verloren gaat, zolang dit door TCP maar gecorrigeerd wordt.
Bij een telefoongesprek gelden heel andere wensen. Hier is gewenst dat ieder pakketje exact op het juiste moment aankomt. Pakketjes dienen liefst niet weggegooid te worden, maar als dat toch gebeurt, is het zinloos om ze opnieuw te verzenden, de hapering in het geluid heeft dan al plaatsgevonden. Hiervoor kan dan weer gebruikgemaakt worden van het UDP-protocol dat losse pakketjes zendt en zo onder de herverzend-eigenschappen van TCP uitkomt. Omdat echter nog steeds geen enkele garantie bestaat over de timing en zekerheid van de aankomst van gegevens zijn bepaalde eigenschappen inherent aan het systeem.

## Lagen

De TCP/IP-protocolstack wordt officieel onderverdeeld in vijf lagen, met elk een eigen functionaliteit. De onderste laag, de fysieke laag, wordt vaak onderverdeeld in een eigenlijke fysieke laag en een datalinklaag.
Ook is er discussie over hoe de lagen uit de TCP/IP-stack overeenkomen met de 7 lagen die het (vooral theoretische) OSI-model voorschrijft. Vaak vallen in de literatuur de drie bovenste OSI-netwerklagen (Toepassing, Presentatie, en Sessie) samen met de toepassingslaag uit het TCP/IP-protocol.
Volgende tabel geeft het klassieke OSI-model weer, met daarbij telkens een aantal bijhorende protocollen uit de TCP/IP-stack:
| | Laag | Protocollen/systemen |
| 7 | Applicatie | HTTP, HTTPS, SMTP, SNMP, FTP, Telnet, SSH en SCP, NFS, RTSP, RTP, RTCP, X Window System, LPD, XMPP |
| 6 | Presentatie | XML, XDR, ASN.1, SMB, AFP |
| 5 | Sessie | TLS, SSL, ISO 8327 / CCITT X.225, RPC, NetBIOS, ASP |
| 4 | Transport | TCP, UDP, SCTP, SPX, ATP |
| 3 | Netwerk | IP, ICMP, IGMP, X.25, CLNP, ARP, RARP, OSPF, RIP, IPX, DDP |
| 2 | Data Link | Ethernet, Token Ring, PPP, HDLC, Frame relay, ISDN, ATM, DSL, SDH, SONET, PDH |
| 1 | Fysiek | elektriciteit, radio, laser |
Hieronder volgt een vereenvoudigde TCP/IP-stack, met enkele protocollen:
| | Laag | Protocollen/systemen |
| 7 | Applicatie | HTTP, FTP, DNS, RTP (routingprotocollen zoals OSPF en RIP maken deel uit van de applicatielaag, maar werken datastructuren in de netwerklaag bij) |
| 4 | Transport | bijv. TCP, UDP, SCTP |
| 3 | Netwerk | TCP/IP gebruikt hiervoor het Internet Protocol (IP) (protocollen zoals ICMP en IGMP worden bovenop IP gedraaid, maar kunnen beschouwd worden als deel uitmakend van de netwerklaag; ARP draait net onder IP, boven laag 2) |
| 2 | Data Link | Ethernet, Token Ring |
| 1 | Fysiek | Fysieke media, en lijncodering, T1, E1 |

## Bekende aan TCP/IP gerelateerde protocollen
### Applicatielaag

In de applicatielaag bevinden zich de internettoepassingen als e-mail POP3, SMTP en FTP. Deze toepassingen hebben meestal een client-server structuur.
    Echo, Finger, Gopher, HTTP, HTTPS, IMAP, IRC, NNTP, NTP, POP3, QOTD, RTP, RTSP, SNMP, SSH en SCP, SMTP, Telnet, XDMCP

### Transportlaag

De transportlaag zorgt voor de communicatie tussen processen die zich op de hosts bevinden. Elke internetapplicatie is voor wat betreft de transportlaag gebouwd op ofwel TCP- ofwel UDP-protocol. Als volledig foutvrije transmissie is vereist wordt TCP gebruikt, als snelheid of het minimaliseren van overhead belangrijker is wordt UDP gebruikt.
    TCP, UDP, DCCP, GTP, SCTP

### Netwerklaag

De bedoeling van deze laag is om de aangeboden data van bron naar doel te versturen ongeacht het protocol of type data, enkel ervoor zorgen dat alles netjes toekomt op de plaats van bestemming. Via de netwerklaag wisselen clients en servers tijdens TCP-handshakes onderling TCP/IP-pakketten uit om netwerkverbindingen tot stand te brengen of te verbreken. Er wordt gezocht naar de meest geschikte weg om de data te versturen. Ook wel Internetprotocol genoemd.

### Datalinklaag

    Point-to-Point Protocol, SLIP, IEEE 802.3, IP-over-ATM-tunnel, SDH, IEEE 802.11 en 802.11i

### Fysieke laag

Deze laag maakt de fysieke connectie tussen de netwerken mogelijk, zij bevat alle gegevens van een LAN- en WAN-netwerk die nodig zijn om een connectie te verwezenlijken.
    telefoonlijn, coaxkabel, twisted pair, glasvezel, wifi
* ↑ Nederland internetland: 25 jaar online. NU (17 november 2013). Geraadpleegd op 31 oktober 2022.