# X.25

X.25 is een door de ITU-T gedefinieerde verzameling netwerkprotocollen voor pakketgeschakelde datacommunicatie over telefoonlijnen.

## Geschiedenis

X.25 was de basis voor het eerste openbare gegevensnetwerk. In 1974 werd voor het eerst een aantal sites aan elkaar gelinkt via X.25, namelijk SERCnet (Science and Engineering Research Council Network). Enkele jaren later (1984) werd SERCnet hervormd tot JANET, dat vandaag de dag nog steeds in dienst is maar dan wel als TCP/IP-netwerk. (Hoewel de term X.25 eigenlijk alleen het gebruikte protocol beschrijft, werd in de dagelijkse praktijk vaak het netwerk bedoeld als de term X.25 werd gebruikt. Omgekeerd werd in Nederland de merknaam Datanet 1 regelmatig gebruikt als men eigenlijk een willekeurig openbaar pakketgeschakeld netwerk bedoelde in binnen of buitenland.)
X.25 werd eind jaren 70 commercieel in gebruik genomen. In Nederland werd het openbare netwerk aangeboden onder de naam Datanet 1. Dit openbare netwerk kreeg koppelingen met reeds bestaande (semi-besloten) netwerken van universiteiten die al bestonden. Ook werd Datanet 1 gekoppeld met alle openbare X.25-netwerken in het buitenland. De bedoeling was dat men via X.25 een wereldwijd publiek datanetwerk zou uitbouwen. In de VS toonde men weinig interesse voor X.25 dus echt wereldwijd is het niet geworden.
X.25 is tegenwoordig verouderd; het is bijna overal vervangen door technologieën zoals frame relay, ISDN, ATM, ADSL, POS. Alleen via het signaleringskanaal (het D-kanaal) van ISDN-aansluitingen worden nog wel via een op het X.25-protocol gebaseerd systeem data uitgewisseld. Je kan echter niet zeggen dat het een X.25-netwerk is. De dienst die het voor eindgebruikers mogelijk maakt om het D-kanaal te gebruiken voor datatransport (Digiaccess) staat op de nominatie om te verdwijnen ten gunste van ADSL (zie:ISDN, Hoofdstuk Kenmerken, onderaan)

## Werkwijze

Het X.25-protocol gebruikt een verbindingsgerichte service (connection-oriented). Dit wil zeggen dat een computer eerst verbinding moet maken met een andere computer voordat hij kan zenden. Eens de verbinding tot stand is gebracht worden de pakketjes (max. 128 bytes) in de juiste volgorde verzonden. Elke verbinding krijgt een nummer (adres) en dit nummer wordt ook toegevoegd in de pakketjes die verstuurd worden. Dit is noodzakelijk aangezien er meerdere verbindingen tegelijkertijd gemaakt kunnen worden. Dankzij dit verbindingsnummer weet elk pakketje welke verbinding het moet volgen. Deze werkwijze kan goed voorgesteld worden door een telefoongesprek. Hierbij moet men ook eerst verbinding maken via een telefoonnummer (adres) en dan wachten op antwoord (aanvraag tot verbinding) voordat je kan praten (zenden). X.25 voorziet ook doorstroomcontrole en foutvrije overdracht van data. Deze foutvrije afhandeling is te danken aan het LAPB. X.25 bestaat uit drie lagen gebaseerd op de eerste drie lagen van het OSI-model, namelijk de fysieke laag, datalinklaag en netwerklaag. De kenmerken van dit protocol zijn (waren) snelheid, betrouwbaarheid en veiligheid.

### Pakketgeschakeld netwerk

X.25 is ontworpen om efficiënt met de bandbreedte om te gaan. Tegenover een circuitgeschakeld netwerk dat heel de lijn gebruikt voor één zender kan een pakketgeschakeld netwerk (zoals X.25) één lijn gebruiken om pakketjes van meerdere zenders door te sturen. Als één zender dus niet de hele bandbreedte gebruikt van de lijn kan via het pakketgeschakeld netwerk bandbreedte verdeeld worden onder andere zenders. Als men een virtuele verbinding maakt lijkt het alsof het netwerk circuitgeschakeld is maar toch worden binnenin pakketjes geschakeld. X.25 is werkzaam in 3 lagen van het OSI-model.

### Fysieke laag

De fysieke laag is gespecificeerd door de X.21-, X.21-bis- en V.24-voorschriften.
* X.21 is de ITU-T-aanbeveling voor de werking van digitale netwerken. De X.21-interface functioneert met behulp van acht verschillende signalen (signal ground, DTE common return, transmit, receive, control, indication, signal element timing and byte timing) waarover zowel data als instructies gestuurd kunnen worden (interchange circuits). De exacte werking van elk van deze functies is vastgelegd in de X.24-norm. Hun elektronische kenmerken zijn in de X.27-norm terug te vinden.
* X.21-bis is de ITU-T-norm die de analoge interface beschrijft die het mogelijk maakt een analoge verbinding te verbinden met een digitale verbinding. De norm bevat procedures voor het zenden en ontvangen van adresseringsinformatie waardoor een bepaalde (analoge) gebruiker een geschakelde verbinding kan maken met een andere gebruiker die aangesloten is op een digitaal netwerk.
* V.24 is eveneens een ITU-T norm. V.24 beschrijft procedures waardoor een gebruiker via een geleasede lijn verbinding kan maken met pakketgeschakelde node of concentrator.

### Datalinklaag

Verzoeken vanuit de netwerklaag worden beantwoord door de datalinklaag. Deze stuurt op zijn beurt verzoeken naar de fysieke laag. De datalinklaag zorgt ervoor dat data betrouwbaar verzonden wordt door de data in kleine pakketjes na elkaar door te sturen. Eén pakketje bevat verschillende soorten informatie zoals adres, controle-informatie, informatievelden en de gebruikersdata. Een adres is belangrijk aangezien er verschillende pakketjes over één lijn gaan. Hierdoor weet de ontvanger welk pakketje van waar afkomstig is.
De taken uitgevoerd door de datalinklaag zijn:
* data versturen op efficiënte en regelmatige wijze.
* de verbinding (tussen zender en ontvanger) synchroniseren zodat de zender en ontvanger gelijktijdig kunnen werken.
* eventuele fouten in de overdracht opsporen en rechtzetten (opnieuw zenden).
* eventuele andere fouten doorgeven aan de hogere lagen zodanig dat de fouten in de hogere lagen rechtgezet kunnen worden.
Er kunnen verschillende protocollen gebruikt worden in de datalinklaag:
* Link Access Protocol, Balanced (LAPB) is afgeleid van HDLC en is het meest aanbevolen protocol bij X.25.
* Link Access Protocol (LAP) is een vroegere versie van LAPB en wordt nu nog zelden gebruikt.
* Link Access Protocol, Kanaal D (LAPD) is afgeleid van LAPB en wordt gebruikt voor ISDN-netwerken die gebruikmaken van een D-kanaal.
* Logical Link Control (LLC) is de IEEE 802.1 LAN norm die ervoor zorgt dat X.25 ook via een LAN pakketjes kan versturen.

### Netwerklaag

De netwerklaag zorgt ervoor dat zowel gebruikersdata als informatiedata in pakketjes wordt opgedeeld zodanig dat ze verstuurd kunnen worden door de twee onderliggende lagen. De netwerklaag omschrijft procedures voor het uitvoeren van volgende services:
* Switched Virtual Circuit (SVC) is een tijdelijke verbinding tussen twee gebruikers die tot stand wordt gebracht doordat één gebruiker een CALL REQUEST (verzoek tot verbinding) naar het netwerk stuurt. Het is onmogelijk om pakketjes te versturen zonder eerst een verbinding aan te leggen. De SVC service zorgt ervoor dat pakketjes mooi na elkaar verzonden worden tussen twee gebruikers, in eender welke richting. Deze service wordt zeer veel gebruikt bij het X.25-protocol.
* Permanent Virtual Circuit is een permanente verbinding (bijvoorbeeld geleasede lijn) tussen twee gebruikers. Hierbij is een CALL REQUEST of CALL CLEARING (beëindigen van verbinding) overbodig.
* Een datagram is een datapakket dat voldoende informatie bevat om zelf zijn weg te vinden over het netwerk naar de bestemmeling zonder dat er specifieke verbinding gemaakt moet worden tussen zender en ontvanger.

### X.75

X.75 is de norm voor het verbinden van twee X.25-netwerken.

### Triple X

Om je computer of terminal verbinding te laten maken met een (andere) computer (een "host-systeem") via een pakketgeschakeld netwerk zoals Datanet 1 moet deze natuurlijk wel kunnen omgaan met het X.25-protocol. Veel domme terminals en ook de - destijds snel opkomende - pc's waren wel voorzien van een RS-232 asynchrone interface en modem. Om deze systemen gebruik te kunnen laten maken van een, op X.25 gebaseerd, pakketgeschakeld netwerk moet je de asynchrone datastroom omzetten in een synchrone verbinding en de data correct opdelen in pakketten en voorzien van de juiste headers - en vice-versa. Deze functie kan vervuld worden door een zogenaamde PAD (Packet Assembler Disassembler). Bij dit proces werden drie protocollen gebruikt, nl. X.3, X.28 en X.29 (zie ook ITU-T normen) en werden om die reden ook wel "Tripple X"-devices genoemd. Omdat het via één X.25-link meerdere verbindingen van en naar verschillende bestemmingen mogelijk zijn was het bij veel PAD-devices vaak mogelijk om meerdere computers en/of terminals aan te sluiten. Een PAD was daarom meestal voorzien van één interface richting het pakketgeschakelde netwerk en meerdere asynchrone of RS-232 poorten. In Nederland werd deze functionaliteit ook als dienst aangeboden door de beheerder van Datanet 1 door een PAD achter een modembank te plaatsen. Als iemand met zijn pc of domme terminal verbinding wou maken met een host via een X.25-netwerk bouwde hij eerst verbinding op met een lokale PAD. Nadat de modemverbinding tot stand was gebracht moest de gebruiker inloggen en vervolgens kreeg hij de mogelijkheid een verbinding op te zetten met de gewenste host via het pakket geschakelde netwerk. (Dit proces is te vergelijken met het inbellen op internet' als je geen vaste of wifi (breedband)verbinding hebt.)

## Pakketindeling
### Controlepakket

Het controlepakket begint, net zoals alle X.25-pakketjes, met een header van 3 bytes. Byte nummer 1 en 2 stellen de groep en het kanaal voor en vormen samen het virtual circuit nummer (12 bits in totaal). Nummer 0 wordt vrijgehouden voor later gebruik dus er kunnen 4095 gelijktijdige, virtuele verbindingen gemaakt worden via één computer.

#### Soorten controlepakketten

* CALL REQUEST-pakket omvat onder andere het zend- en ontvangadres. Speciale, optionele kenmerken voor de verbinding worden ook in dit pakket opgenomen (facilities field). Er kunnen ook reeds 16 bytes data in dit pakket opgenomen worden.
* CALL ACCEPTED-pakket wordt verstuurd door de ontvanger als hij de verbinding aanvaard.
* CLEAR REQUEST-pakket wordt verstuurd als de verbinding vrijgegeven wordt. De oorzaak van dit vrijgeven is opgenomen in de 4de byte van het pakket. Dit pakket wordt steeds beantwoord met een CLEAR REQUEST CONFIRMATION pakket.
* INTERRUPT-pakket zorgt ervoor dat er een klein pakket (32 bytes) kan verstuurd worden naast de normale datastroom. Dit pakket wordt steeds beantwoord met een INTERRUPT CONFIRMATION-pakket.
* RECEIVE READY-pakket laat aan de zender weten dat de ontvanger klaar is om te ontvangen. Het ppp-veld (eerste drie bits van het type-veld) geeft aan welk pakket verwacht wordt.
* REJECT-pakket maakt het mogelijk voor de ontvanger om een reeks pakketjes opnieuw aan te vragen bij de zender. Het ppp-veld duidt aan vanaf welk pakket opnieuw verstuurd moet worden.
* RESET- en RESTART-pakket worden gebruikt om de verbinding te herstellen na problemen. Dit pakket wordt steeds beantwoord door de ontvanger met een RESET CONFIRMATION- of REJECT CONFIRMATION-pakket.
* DIAGNOSTIC-pakket wordt gebruikt door het netwerk om de gebruikers op de hoogte te brengen van eventuele problemen in of rond het netwerk.

### Datapakket

Door middel van de Q-bit in de hoofding van het pakket kunnen de protocollen in de hogere lagen van het OSI-model aanduiden of het gaat om een controlepakket of een datapakket. Dit controleveld is steeds 0 voor datapakketten, 1 voor controlepakketten.
De D-bit duidt aan of de zending geslaagd is of niet. Als de bit 0 is, dan is het pakketje van de gebruiker (zender) goed aangekomen bij de zendeenheid (modem), maar nog niet verzonden naar de ontvanger. Als de bit 1 is betekent dit dat de ontvanger het pakket correct ontvangen heeft via de zendeenheid.
Het sequentieveld en het piggybackveld worden gebruikt om de doorstroom van pakketjes te regelen en te controleren.
Via het More-veld kan men aanduiden dat bepaalde pakketjes bij elkaar horen. De maximumlengte van één pakket is 128 bytes dus dankzij het More-veld kan men toch bestanden groter dan 128 bytes verzenden.

## X.25-statusdiagram

Er zijn veel statusdiagrammen mogelijk bij de X.25-norm. Hier vind je het statusdiagram dat de aanvraag voor verbinding voorstelt.
Bij (1) ontvangt de interface een verzoek tot verbinding of verstuurt er zelf een. Twee mogelijkheden:
* (2a) Verzoek is verzonden en gebruiker wacht op antwoord of foutmelding.
* (2b) Verzoek ontvangen en de modem wacht op een antwoord.
Als er geen botsing (3) plaatsvindt dan kan na een succesvolle verbindingsaanvraag de data verzonden (4) worden.
* Computer Networks - Andrew S.Tanenbaum
* Data and Computer Communication - William Stallings
* Telecommunication Networks: Protocols, Modeling and Analysis - Mischa Schwartz
* Interconnections: Bridges and Routers - Radia Perelman
* Computer Networks and Their Protocols - D.W. Davies, D.L.A. Barber, W.L. Prince and C.M. Solomonides
* Computer Networks Architecture and Protocols - Paul E.Green
* http://www.protocols.com/
* http://www.rad.com/
* Cursus X.25 Luc Pieters, Hogeschool Antwerpen