Appletalk

Appletalk, i marknadsföringssyfte skrivet AppleTalk, är en uppsättning protokoll, för datorkommunikation, utvecklat av Apple Inc. Appletalk introducerades till Macintosh 1984 men har i dagens Macintosh-datorer, i allt högre grad, fått ge vika för TCP/IP. Några av Appletalk-protokollen finns kvar i Mac OS även idag, ett exempel på detta är AFP som kan användas för att dela filer.

Design

Avsikten med Appletalk 
Designen av Appletalk började sent under 1983 och främst för att adressera problem med dåvarande nätverkstyper. Det var både mycket dyrt och komplicerat att koppla upp en dator mot ett nätverk och detta passade sig inte för hemdatorn. Designen för Appletalk fokuserar speciellt på behoven hos persondatorer och dess användare. Dessutom var det viktigt att det skulle vara möjligt att koppla upp allt från enstaka enheter till tusentals datorer i ett WAN.

Målet med Appletalks design var att göra det användarvänligt och åstadkomma möjligheten att koppla in en dator i ett nätverk utan att göra några inställningar.Dessutom måste det gå att koppla samman datorer direkt utan att använda något centralt nav. Apple var noga med att Appletalk skulle vara oberoende av vilken fysisk nätverksteknologi som användes och dessutom att alla protokoll som skulle ingå i Appletalk skulle vara enkla att implementera. Protokollen behövde också vara såpass små att de presterade väl i nätverket när de kördes på en relativt långsam persondator.

Utöver detta var det viktigt att man kunde ansluta datorer till nätverket utan att det skulle påverka de användare som redan fanns i nätverket.

Uppbyggnaden 
Appletalks uppbyggnad baseras på OSI-modellen.

För att lyckas med att få Appletalk självkonfigurerande finns två viktiga protokoll. Det första är Appletalk Address Resolution Protocol, fortsättningsvis kallat AARP, som tillåter datorn att definiera sin egen nätverksadress. Det andra är Name Binding Protocol, fortsättningsvis kallat NBP, som binder adressen till ett namn i nätverket. AARP och NBP gör detta genom att "prata" med de andra datorerna i nätverket för att hitta en ledig adress och för att tala om sitt namn. AARP och NBP kan även användas tillsammans med en router för att hantera adress och namntilldelning.

Appletalk ger användaren möjlighet att inkludera varierade kabelstandarder i nätverket.

Appletalk är en öppen standard, vilket är viktigt för kompatibilitet med andra system.

Anslutningar

Localtalk 
Apple Localtalk kopplar samman Appletalk-enheter med hjälp av billig media. Localtalk använder sig av partvinnad kabel som tillåter att 32 stycken noder ansluts samtidigt. Kontakterna bygger på självterminerade anslutningsdon. LokalTalk använder sig av Localtalk Link Access Protocol för att hantera dataöverföring på mediet. Hastigheten för kommunikation i Localtalk är 230,4 kbit/s.

Phonenet, en alternativ kabelstandard för Localtalk lanserades av nätverkstillverkaren Farallon. Phonenet använde sig av helt vanlig partvinnad telefonkabel med vanliga RJ11-kontakter, vilket gjorde att nätverk kunde dras genom samma uttag som telefonväxlar. På grund av det lägre priset och kompatibiliteten med telefonlinor konkurrerade Phonenet på många ställen ut Apples version av Localtalk. En nackdel med systemet var att det till skillnad från Apples eget inte var självterminerande, utan den första och sista noden på bussen behövde en terminering i den andra kontakten på transceivern.

Ethertalk 
Apple Ethertalk kopplar samman Appletalk-enheter med koaxialkabel eller partvinnad kabel. Hastigheten för kommunikation i Localtalk är 10 Mbit/s. När Ethertalk  används måste Ethertalk Link Access Protocol användas som datalänk-protokoll.

Tokentalk 
Apple Tokentalk gör att Appletalk kan användas i industristandardiserade Token Ring-nätverk (IEEE 802.5). Tokentalk används främst för att ansluta datorer till redan befintliga Token Ring-nät. När Tokentalk används måste Tokentalk Link Access Protocol användas.

Protokoll

Localtalk Link Access Protocol 
Localtalk Link Access Protocol, fortsättningsvis kallat LLAP, är ett protokoll som används för att definiera och leverera data från en nod i ett LokalTalk-nätverk till en annan nod i samma nätverk. LLAP motsvarar data-länklagret i OSI-modellen, se figur.

LLAP:s huvuduppgifter är att 
 tillföra kontroll över länk.
 tillföra ett sätt att adressera noder. 
 utföra datasändning och mottagning.

Länkkontroll 
LLAP garanterar "best effort delivery" för paketen men garanterar inte att de levereras. Däremot garanterar LLAP att paketet med skador inte skickas ut på länken. LLAP använder sig av "Carrier Sense Multiple Access with Collision Avoidance" för att hantera kollisioner på länk. LLAP specificerar att alla noder väntar en bestämd tid plus ytterligare en slumpvis tid innan de börjar sända på länken.

Adressering 
LLAP adresserar enheter dynamiskt. Adressbredden är totalt 16 bitar, varvar 8 bitar används som nätadress då en router är närvarande och 8 bitar används som nodadress. Varje nod ger sig själv en ny nodadress när den aktiveras. Nodadressen används som länklageradress vilket gör att varje nod inte har en fast unik adress, jmf. Media Access Control.

När noden aktiveras kan den gamla nodadressen hämtas från ett permanent minne eller så slumpar noden en ny adress. Noden skickar sedan ut ett "LLAP Enquiry control"-paket för att kontrollera om nodadressen är ledig. Om en annan nod i nätverket använder samma nodadress kommer denna att svara med ett "LLAP Acknowledge control"-paket. Detta leder till att noden får gissa sig till en ny adress och utföra samma procedur igen ända tills inget "LLAP Acknowledge control"-paket återkommer.

Paket 
Ett LLAP-paket består av ett pakethuvud på 24 bitar och en variabel datadel på 0 till 4800 bitar. 
Huvudet består av 
 ett fält med 8 bitars destinationsadress.
 ett fält med 8 bitars källnodsadress.
 ett fält med 8 bitars LLAP-typ.

Appletalk Address Resolution Protocol 
Appletalk Address Resolution Protocol, fortsättningsvis kallat AARP,  används för att kunna översätta adresser för olika typer av protokollstackar. För att Appletalk skall kunna användas på olika sorters media används AARP för att översätta adresser från högre protokollstackar till fysiska adresser. I Localtalk översätter AARP högre adresser till nod-adresser. AARP filtrerar även inkommande paket för att avgöra om paketet tillhör den specifika datorn eller inte.

Datagram Delivery Protocol 
Datagram Delivery Protocol, fortsättningsvis kallat DDP, är ett förbindelselöst protokoll som erbjuder en paketöverföringstjänst utan leveransgaranti. LLAP och liknande protokoll medger endast förmedling av ett enda paket, DDP utökar detta genom att tillföra en överföringsmekanism socket till socket.

DDP erbjuder inte återhämtning från paketförluster.

Paket 
Ett typiskt DDP-paket innehåller ett 40 bitar långt huvud och en variabel datadel från 0 till 3 888 bitar. DDP-paketets huvud innehåller 
 Destinationssocket.
 Källsocket.
 Datans längd.
 Typ av paket. 

Det går även att utöka huvudet på DDP-paketen för att erhålla fält för bland annat en kontrollsumma. Med hjälp av denna kontrollsumma kan noder kontrollera om paketets innehåll har skadats eller inte.

Routing Table Maintenance Protocol 
Routing Table Maintenance Protocol, fortsättningsvis kallat RTMP, är ett protokoll för att hantera nätverkstopologier. Protokollet används av routrar för att delge andra routrar information om vilka länkar som den har anslutna. Varje router lagrar information om destionationsnätverk och antalet routrar som finns där emellan.

Paket 
Ett RTMP-paket innehåller 
 en 8-bitars nätadress.
 en 8-bitars nodadress till routern.
 24-bitars versionsinformation.
 ett datafält innehållande routinginformation. 

Varje router skickar, vanligtvis, ut ett RTMP-paket var tionde (10) sekund. Detta paket skickas på broadcast-adressen och når samtliga noder i nätet.

Appletalk Echo Protocol 
Appletalk Echo Protocol, fortsättningsvis kallat AEP, har en specifik uppgift. AEP är ett protokoll som lyssnar på ett bestämt socketnummer, nummer 4, och lyssnar efter paket. Om ett paket med rätt DDP-typ ankommer på denna socket kopieras paketet och skickas tillbaka till avsändaren.

På detta sätt kan man kontrollera ifall en nod är i drift, jmf. ICMP.

Name Binding Protocol 
Name Binding Protocol, fortsättningsvis kallat NBP, är ett protokoll för att utföra översättning mellan namn och nodadresser.

Network-visible entity 
En network-visible entity, kallad NVE nedan, är en entitet som är möjlig att kommunicera med i ett Appletalk-nätverk med hjälp av DDP-paket. Dessa entiteter är inte noder i nätverket utan tjänster på dessa noder. Exempelvis är en nätverksskrivare inte en NVE, men däremot är tjänsten som lyssnar efter utskriftsförfrågningar en NVE.

Entitets namn 
En NVE kan ge sig själv ett namn om detta behövs. Ett entitetsnamn är en sekvens av tecken, sträng, som består av tre fält med max 32 tecken var. Dessa fält är objekt, typ, samt zon och skrivs enligt modellen: objekt:typ@zon, exempelvis: Henrik:Mailbox@Macintosh.

Namnbinding 
Innan en namngiven entitet kan användas över ett Appletalk-nätverk måste adressen för denna entitet erhållas, detta kallas namnbindning. Det finns flera olika tillfällen att göra detta. En strategi är att binda namnet till adressen genom konfiguration av den nod som vill komma åt adressen, så kallad statisk bindning. Statisk bindning fungerar inte med Appletalk eftersom varje nod erhåller en ny nodadress när den ansluter till nätverket.

För att komma till rätta med detta problem används NBP för att hitta adressen på den nod som söks.

Namnbindningstjänsten 
En entitet kan registrera sitt namn i sin egen nods namntabell. Detta gör att enitetens namn blir synligt för den som gör en förfrågan hos denna nods NBP-tjänst. Innan eniteten kan registrera sitt namn måste denna kolla så att namnet inte redan används av någon annan entitet i den lokala zonen. Om namnet används måste processen avbrytas.

När en användare behöver ett namnuppslag skickas denna förfrågan till den lokala NBP-tjänsten. Här kontrolleras ifall det begärda namnet finns i den egna noden. Om namnet inte finns här skapas ett NBP-paket med en förfrågan. Paketet skickas med DDP över broadcast. Om ingen klient har denna adress kommer paketet att ignoreras, annars kommer ett NBP-paket med ett svar att skickas tillbaka. Eftersom paketet skickas med DDP kommer det att dupliceras och skickas ett antal gånger innan svaret från dessa returneras till användaren.

Zone Information Protocol 
Zone Information Protocol, fortsättningsvis kallat ZIP, är ett protokoll för att hantera zoner i ett Appletalk-nätverk. Zonerna är transparenta för alla enheter utom routrar i nätverket. En zon är ett del av ett nätverk som skapar ett sammanhang för användare. Exempelvis kan "Datavetenskap" vara en Zon på nätverket "Karlstads Universitet". En zon kan även innehålla flera delar av ett nätverk.

Appletalk Transaction Protocol 
Appletalk Transaction Protocol, fortsättningsvis kallat ATP, är ett protokoll för att hantera paketöverföringar på nätverket utan att paket förloras. ATP är designat för att vara enkelt och kostnadseffektivt. Till skillnad från TCP sätter inte ATP upp någon anslutning mellan sändare och mottagare. 

ATP kan hantera ifall
 begäran om en transaktion (Transaction Request (TReq)) går förlorad.
 konfirmationen om en transaktion (Transaction Response (TResp)) går förlorad.
 mottagaren blir okontaktbar.

Minst en gång-transaktion (At-least-once (ALO) transaction) 
Minst en gång-transaktion, nedan kallat ALO, används de gånger man vill vara säker på att transaktionen utfört en operation på mottagaren minst en gång. Data paketeras i ett ATP-Treq-paket, med en flagga som talar om att ALO används, och skickas nedåt i kommunikationsstacken. När paketet sedan har kommit till mottagaren utför denna operationen och skickar ett Tresp-paket tillbaka. Om Tresp-paketet går förlorat på länken kommer sändaren att efter en viss tid upptäcka detta och skicka en ny förfrågan. 

ALO medger att operationen kommer att utföras flera gånger på mottagaren eftersom en förfrågan skickas ut igen. Återsändning av datapaket görs ett visst antal gånger innan sändaren i så fall konstaterar att mottagaren inte är tillgänglig.

Exakt en gång-transaktion (Exactly-once (XO) transactions) 
Exakt en gång-transaktion, nedan kallat XO, används de gånger man enbart vill att en transaktion skall utföras en och endast en gång. Detta kan vara när duplicerade operationer kan ställa till med skada. Data paketeras även då i ett ATP-Treq-paket, men flaggas med att XO används, och skickas nedåt i kommunikationsstacken. När paketet har kommit till mottagaren lagras transaktionen i en lista innan den utförs. Efter att operationen har utförts skickas ett TResp-paket till avsändaren. Om detta paket går förlorat skickas samma TReq-paket ut på länken igen efter en viss tids väntan.

XO medger att operationen utförs endast en gång. Detta gör den genom att varje gång ett TReq-paket mottas kontrollera det mot listan över redan utförda transaktioner. Om paketet finns med i listan skickas enbart ett TResp-paket till mottagaren och ingen operation utförs. I annat fall utförs operationen och ett TResp-paket skickas ut.

Paket 
Ett ATP-paket består av 
 8 bitar kontrollinformation.
 8 bitar sekvensnummer.
 16 bitar transaktionsidentifierare.
 32 bitar användardefinierad data.
 samt en variabel datadel från 0 till 4 624 bitar.

Kontrollinformationen talar om ifall det är TResp eller TReq som skickas. Den talar dessutom om ifall ALO eller XO används och ger dessa metoder parametrar. 
Den användardefinierade datan ingår i huvudet men kontrolleras inte av ATP. Dock kan dessa bitar användas i fall det finns behov av att implementera ett högre protokoll baserat på ATP.

Printer Access Protocol 
Printer Access Protocol, fortsättningsvis kallat PAP, är ett protokoll för att hantera kommunikation med servertjänster. Dessa tjänster behöver inte nödvändigtvis vara skrivare, som protokollnamnet säger, eftersom inga specifika funktionaliteter för detta finns i protokollet. Namnet speglar dock avsikten med protokollet när det planerades.

PAP är ett asymmetriskt protokoll vilket betyder att implementationen i klient och server är olika. Dessutom är den data som skickas över PAP beroende av vilken typ av service som det gäller. Datans innehåll skiljer sig till och med om exempelvis två olika modeller av skrivare används.

PAP fungerar så att först begär klienten att en anslutning skall öppnas. Detta gör den genom att skicka ett PAPOpen-kommando innehållande hela sitt namn. PAP på serversidan anropar sedan NBP för att hämta adressen till klienten. När anslutningen sedan är öppen kan både klient och server skicka och ta emot data. Servern skickar sedan kommandot PAPRead till klienten för att begära att den skickar data till servern. Denna data skickas med ATP-XO-paket till servern. När överföringen är klar skickar antingen servern eller klienten en PAPClose för att stänga anslutningen.

Paket 
Det finns flera olika PAP-paket beroende på vilken typ av kommando som skall utföras.

Appletalk Session Protocol 
Appletalk Session Protocol, vidare kallat ASP, är ett sessionsprotokoll för två entiteter som vill kommunicera. ASP garanterar att de kommandon som skickas kommer fram, utan dubbletter, och i den ordning som de skickades. Dessutom kan ASP skicka tillbaka svar från servern till klienten. ASP är ett asymmetriskt kommunikationsprotokoll och en session skapas alltid av klienten. ASP tillåter att klienten skickar kommando till servern som tillåter ett svar på detta kommando. Däremot tillåter inte ASP att servern skickar ett meddelande direkt till klienten.

Det är alltid klienten som att få öppna en ASP-session hos servern som besvarar detta kommando, men både server och klient kan avsluta en session. Under en sessions livstid skickas med jämna mellanrum så kallade "tickle"-meddelanden mellan klienten och servern, samt servern och klienten. Syftet med dessa meddelanden är att tala om för server respektive klient att sessionen fortfarande är igång och att motparten fungerar och kan svara.

Eftersom servern inte kan begära att få skicka kommandon eller data till klienten måste den be klienten om dess uppmärksamhet. Servern kan skicka så kallade "attention"-meddelanden till klienten för att tala om att det finns saker som den vill meddela. Det är dock fortfarande klientens uppgift att ta emot meddelandet och att ge servern den uppmärksamhet som krävs.

Appletalk Data Stream Protocol 
Appletalk Data Stream Protocol, fortsättningsvis kallat ADSP, är ett protokoll som tillhandahåller anslutningsorienterade dataströmmar i full-duplex. Dataströmmen som tillhandahålls av ADSP är pålitlig, den data som skickas kommer att komma i fram till mottagaren i rätt ordning. Dessutom tillhandahåller ADSP en flödeskontroll för strömmen.

En anslutning kan öppnas mellan två sockets som stödjer full-duplex och pålitlig dataöverföring. ADSP reglerar strömmens hastighet baserat på tillgängligheten av buffertutrymme på mottagarsidan.
Den minsta datamängd som kan skickas med ADSP är 8 bitar, alltså en (1) byte och strömmen mellan två noder kan därför ses som en byte-ström.

Appletalk Filing Protocol 
Appletalk Filing Protocol, vidare kallat AFP, är ett protokoll för att ge arbetsstationer möjligheten till att dela filer. 

AFP använder sig av ASP för att överföra data på ett säkert sätt. En AFP-klient kan hämta information om filservern, ändra informationen, skapa och ta bort filer samt kataloger samt hämta och spara information i filer. Ett program på en klient kommer åt filer på en annan enhet genom de ordinära filsystemskommandon som operativsystemet tillhandahåller. Ett gränssnitt skickar de kommandon som rör filer på en nätverksvolym över Appletalk Filing Interface till filservern. Filservern utför kommandot på filen i fråga.

Senaste versionen av AFP agerar enbart över TCP-potokollet.

Källor 

Datornätverk
Apple-mjukvara