AppleTalk

**AppleTalk**（アップルトーク）は、主にApple製パソコンのMacintosh (Mac) で利用された通信プロトコル群の総称。
AARP、DDP、RTMP、AEP、NBP、ZIP、ATP、PAP、ASP、ADSP、AFPといった複数のプロトコルを組み合わせて利用する技術だった。

## 概説
AppleTalkはTCP/IPとは全く別のものである。初期のTCP/IPはユーザや管理者による複雑な設定を必要としたのに対し、AppleTalkは「ケーブルを繋げばすぐ使える」ネットワークであった。ただし、基本的なフレームワークが全く異なり、相互互換性がない。TCP/IP (IPv4) が32ビットのIPアドレスで個体の識別を行なうのに対し、AppleTalkでは24ビット（16ビットのネットワーク部と8ビットのノードアドレス）を用いた。

AppleTalk対応機器は、電源投入時あるいはネットワーク接続時にブロードキャスト信号を流し、自動的にアドレスとマシン名を割り当てる。また、ネットワーク上のファイルサーバやプリンターを発見することができる。すなわち、AppleTalkのみのネットワークでは、ユーザは何の設定も行なわず、繋いだ途端にファイル共有や印刷が行なえるようになっていた。こうしたユーザの手を煩わせない自動設定の仕組みはTCP/IPよりも先行していた。ただし、この機能の実現のためネットワークに大きな負荷をかけた。

やがてインターネットが普及して接続にはTCP/IPを用いるのが主流となると、AppleTalkとTCP/IPを共存させる必要性が出てきた。結果的にユーザと管理者は両立のための複雑な設定を余儀なくされた。また、TCP/IPとはプロトコルの構造が異なるため、一般的なルーターでは他のネットワークに接続できず、AppleTalk対応ルーターを用意する必要があった。

一方で、TCP/IPも時代とともに技術が進み、自動設定のプロトコルが登場するようになった。DHCPプロトコルは、AppleTalkのAARPやNBPをヒントに開発されたといわれている。

現在のAppleの製品はBonjourを実装している。これはAppleTalkにおける自動設定と同様の機能をTCP/IP上で実現し、更にネットワーク負荷を小さくするものである。

## 終焉
Mac OS X v10.2からBonjour（当時Rendezvous）の登場により現在主流のプロトコルである前述のTCP/IP上で同等あるいはそれ以上の機能を実現しているため、AppleTalkの機能は徐々に縮小され、Mac OS X v10.5ではプリンターが使用可能となる程度となり、Mac OS X v10.6にて完全になくなった。

## 登場背景
Macintosh登場当初はWYSIWYGを実現するため1ポイント=1ピクセルとなる72dpiを画面表示の解像度としており、スケーラブルなイメージを表現するためにQuickDrawを利用していた。
このため画面表示用の演算は初期のMacintoshでも本体のMPU (68000) とメモリで実現可能であった（Macintosh自体がある時期までモノクロ表示だったことも影響する）。
しかし、印刷用となると72dpiでというわけにはいかず、プリンター内に本体と同等以上のMPUとメモリを必要とした（特に高解像度のデータを展開するには大量のメモリを必要とした）。
このため、プリンターの価格が高くなりワークグループでプリンターを共有するために、早急にネットワーク環境を構築する必要があった。
そこでMacintoshに標準搭載されていたシリアルポートのRS-422を物理媒体にしたLANのプロトコルとして登場することとなった。
なお、Apple IIGSにもLocalTalkは搭載されている。

## 歴史
最初のAppleTalkは1984年に開発された。

次のAppleTalk Phase 2は1989年に公開された。これは規模の大きいネットワーク環境のための拡張であった。

これ以降はTCP/IPが主流になってきたため、AppleTalk自体には大きな進化は見られず、TCP/IPとAppleTalkを共存させる手法が一般的になる。

IPをAppleTalkでカプセル化するMacIPや、これとは逆にAppleTalkをIPでカプセル化するIPTalkもあったが、現在は使われていない。

サーバのブラウジングはAppleTalkのNBPが使われていたが、Mac OS 8.5からTCP/IPベースのSLPも採用され、更にMac OS X v10.2からBonjourへと移行した。

プリンター共有はAppleTalkのPAPが使われていたが、Mac OS XからはLPR、IPP、SMB (CIFS) 等も利用できるようになった。AirMacベースステーションやTime CapsuleではUSB接続したプリンタに対してネットワーク越しに印刷できる機能があるが、これはIPベースの印刷でありAppleTalkは使われない。

ファイル共有はAFP over TCPへと移行した。漢字Talk7.5.5にOpen Transport J-1.1.2以降をインストールすればAFP over TCPが利用できる。

Mac OS X v10.4ではNBPによるAFPサーバのブラウジングは可能であったが、ファイルサーバへの接続はAppleTalkではなくAFP over TCPのみになった。

Mac OS X v10.5ではAppleTalkプリンターの使用が可能であるだけで、それ以外の機能はほとんど残っていない。

Mac OS X v10.6でついにAppleTalkの対応がなくなった。

## 物理層およびデータリンク層
初期は物理層のRS-422をも含めてAppleTalkと称したが、後に別の物理媒体も使えるようになったため、AppleTalkは主にプロトコルを示すものとし、物理層と分けて考えるようになった。物理層とAppleTalkパケットの間に位置するデータリンク層のプロトコルを**LAP** (Link-Access Protocol) と呼ぶ。

それまでのRS-422を用いたものをLocalTalkと呼び、新たに使えるようになったものをEtherTalk、TokenTalk、FDDITalk等と呼んで区別する。

LocalTalkより後のものは、IEEE 802.2によるLLC (Logical Link Control) を用いてAppleTalkのパケットをカプセル化する方法をとったため、LLCさえサポート出来ればさまざまな物理媒体が使えることとなった。結果、ずっと後に登場したIEEE 802.11による無線LAN上でもAppleTalkが利用できる。

また、これらとは別に、AppleはARA (Apple Remote Access) やOpen Transportと呼ばれるソフトウェアを開発し、これらを使えば電話回線を通じて遠隔地のMacとAppleTalkで接続できるようにした。

### LocalTalk
初期の頃に使われた。物理層はMacなどのプリンターポートのRS-422を想定している。
プリンターやモデム用のRS-422ケーブルを双方に直に挿すだけでOS標準の機能だけで2台のMacでファイル交換ができたりもした。3台以上の場合はMac本体やプリンタのRS-422の先に二股のRS-422のつく接続キットを用いる。
米Farallon Computingが、両端がRS-422で中間にRJ-11コネクタの6線式電話線を2口備え、電話線が使えるようにした「PhoneNet」を開発した。このFarallon Computing式の電話モジュラーケーブルによる接続がEtherTalkが一般的になるまでは実質LocalTalkの物理層の3台以上の小規模接続の主流となった。作りが簡単なため多くの互換品が市場にでまわり、ついにApple自身もPhoneNet互換の電話線用モジュラーケーブルを利用するLocalTalk接続キットを発売していた。PhoneNetは登録商標であるため、互換品では**PhoneTalk**と称する場合がある。
またLoaclTalkの物理層としてRS-422の先に取り付ける赤外線が使える製品などもサードパーティーから出ていた。
RS-422上でAppleTalkを使うプロトコルを**LLAP** (LocalTalk Link-Access Protocol) と呼ぶ。

### EtherTalk
イーサネットを用いたものをEtherTalkと称する。LLCによってAppleTalkのパケットをカプセル化するデータリンク層のプロトコルを**ELAP** (EtherTalk Link-Access Protocol) と呼ぶ。
現在AppleTalkが使われるとすれば、このEtherTalkが多いであろう。

### TokenTalk
トークンリングを用いたものをTokenTalkと称する。LLCによってAppleTalkのパケットをカプセル化するデータリンク層のプロトコルを**TLAP** (TokenTalk Link-Access Protocol) と呼ぶ。

### FDDITalk
FDDIを用いたものをFDDITalkと称する。FDDIはIEEE 802によって定められたものではないが、LLCを使えるためAppleTalkを利用することができる。LLCによってAppleTalkのパケットをカプセル化するデータリンク層のプロトコルを**FLAP** (FDDITalk Link-Access Protocol) と呼ぶ。

### IRTalk
赤外線ポートを用いたものをIRTalkと称する。これはApple独自の赤外線ポートであり、以下のIrDAとは別である。

### IrDA
最初にMacに搭載された赤外線通信であるIRTalkは独自の規格であったが、後により一般的なIrDAを用いてAppleTalkやTCP/IPを利用できるようになった。

### IPTalk
IPTalkは特定の物理層を用いるものではない。IP上でAppleTalkのパケットをカプセル化するプロトコルである。すなわちAppleTalk over IPである。詳しくはIPTalkを参照。

### 無線LAN
IEEE 802.11による無線LANを用いたAppleTalkに関しては特に固有の名称はない。IEEE 802.11はEthernetによく似た規格でありLLCを使えるため、基本的にEtherTalkと同一と考えてよい。したがって、Apple製、他社製を問わず一般的な無線LAN製品で何ら問題なくAppleTalkパケットを扱うことができる。Ethernetと並んで現在多く用いられているであろう。

### 電話回線
ARA (Apple Remote Access) やOpen Transportのためのソフトウェアをインストールすると、アナログ回線、ISDN等を問わず電話回線経由で遠隔地のMacとAppleTalkで接続することができた。このためのプロトコルとしては、**ARAP** (Apple Remote Access Protocol) とPPPの二種類がある。ARAPはApple独自のプロトコルである。PPPは元々NCP (Network Control Protocol) によってAppleTalkも使えるように設計されたプロトコルである。

## 各プロトコル
ユーザサイドから考えれば、ファイル共有のためのAFPと印刷のためのPAPが有名であるが、実際にはもっと多くのプロトコルの組み合わせで動作している。ネットワーク層（第3層）のDDPとAARPが動作すればAppleTalkの最低条件が整い、他のプロトコルはこれらの上で動作することになる。

### AppleTalk Address Resolution Protocol
**AARP**はAppleTalkのノードアドレスと物理アドレスのマッピングを行なうネットワーク層（第3層）のプロトコルである。TCP/IPにおけるARPと同等である。

### Datagram Delivery Protocol
**DDP**は最下位でデータグラムを配送するネットワーク層（第3層）のプロトコルである。TCP/IPにおけるIPに相当する。

### Routing Table Maintenance Protocol
**RTMP**はDDPパケットのルーティングに用いられるトランスポート層（第4層）のプロトコルである。

### AppleTalk Echo Protocol
**AEP**はDDP上でEchoを送受信するトランスポート層（第4層）のプロトコルである。TCP/IPではpingを用いたICMPのechoに近い。

### Name Binding Protocol
**NBP**はAppleTalkの名前解決、すなわちノード名とアドレス名の解決やlookupを行なうトランスポート層（第4層）のプロトコルである。

### Zone Information Protocol
**ZIP**はネットワークとAppleTalk Zoneのマッピング等を行なうセッション層（第5層）のプロトコルである。

### AppleTalk Transaction Protocol
**ATP**はAppleTalkのトランザクションを実現するトランスポート層（第4層）プロトコルであり、DDP上に実装される。

### Printer Access Protocol
**PAP**はプリンタ共有のためのセッション層（第5層）プロトコルであり、ATP上に実装される。AppleTalkプリンタは、すなわちPAPサーバとして動作している。

### AppleTalk Session Protocol
**ASP**は高位のネットワークサービスを行なうセッション層（第5層）のプロトコルであり、ATP上に実装される。

### AppleTalk Data Stream Protocol
**ADSP**はAppleTalkで全二重通信を実現するためのセッション層（第5層）のプロトコルである。

### AppleTalk Filing Protocol
**AFP**はファイル共有のためのプレゼンテーション層（第6層）とアプリケーション層（第7層）にまたがるプロトコルであり、ASP上に実装される。数あるAppleTalkのプロトコルのうち、このAFPだけがTCP/IPに移植されている。AFP Version 2.1迄がAppleTalkベースであり、2.2からはTCP/IPベースである (AFP over TCP)。AppleTalkを使用しなくなったことから、名称が**Apple Filing Protocol**に変更された。
詳しくはApple Filing Protocolを参照。AFPによるファイル共有のことをAppleShareと呼ぶ場合がある。

### Appletalk Update-Based Routing Protocol
**AURP**はRFC1504で公開されたAppleTalkのルーティングをWANに拡張するためのトランスポート層（第4層）のプロトコルである。

### MacIP Protocol
**MacIP**はAppleTalk上でIPのパケットをカプセル化するプロトコルである。すなわちIP over AppleTalkである。詳しくはMacIPを参照。

### Timelord Protocol
**Timelord Protocol**は時刻合わせのプロトコルである。メルボルン大学で開発されたものであり、サーバソフトウェア「Timeload」にはMac OS用とCAP用がある。クライアントソフトウェアは「tardis」という。
仕様書は特に存在しないため、netatalkはCAP用Timeloadのソースをリバースエンジニアリングして実装を行なっている。
Mac OS 8.5以降はTCP/IPの時刻プロトコルであるNTPクライアント機能を実装しているため、Timelordの必要性は薄まっている。

## OSI参照モデル

ゾーン情報を取得するには、ZIP over DDPが用いられる。

Macから他のノードを発見するには、NBP over DDPが用いられる。

プリンタへの印刷は、PAP over ATP over DDPが用いられる。

ファイル共有には、AFP over ASP over ATP over DDPが用いられる（AFP over TCPに関してはApple Filing Protocolを参照）。

## セレクタ
Mac OS 9までのアプリケーション「Chooser」、「セレクタ」やMac OS X v10.4までの「ネットワーク」では、他のノードを発見し選択することができるが、
これらが起動している間は常にネットワークへNBPによるブロードキャスト信号を流す。このため、開いたままにしておくとネットワークトラフィックの増加を招くので使用後はすぐに終了させたほうがよいとされた。

また、ネットワーク上の他のマシン（接続先のプラットフォームは問わない）を接続し、その内容を表示していると、「常にウィンドウ内容の変化を監視する」動作を行うMac OSの仕組みにより、ローカルディスクのみならずネットワーク上デバイスのウィンドウも逐一内容更新を行うため、やはりネットワークに負荷がかかった。

現在のBonjourでは、なるべくトラフィックを少なくする工夫がされている。

## ルーター
TCP/IPとはプロトコルの構造が異なるため、遠隔地へ接続するためには専用のルーターが必要になる。ルーターを接続した際には「ゾーン名」の設定が必要になる（AppleTalkルーターが存在する環境で「セレクタ」を開くと、画面左下に選択肢が現れる）。

## 他のオペレーティングシステムでの利用
Unix系オペレーティングシステム (BSD, Linux, Solaris) には、Macintoshのファイルサーバ/プリントサーバとして利用するためにnetatalkというパッケージが存在する。kernelがDDPとAARPを実装し、それ以外のプロトコルをnetatalkが受け持つ仕様である。

かつてはコロンビア大学にて開発されたColumbia AppleTalk Package (CAP) というパッケージが存在したが、現在はサポートを停止している。

また、Windows NT以前に一世を風靡したサーバソフトのNetWareや、Windowsサーバ製品でもAppleTalkのファイルサーバ/プリントサーバ/ルーティング機能を実装している（Windows NT 3.1 Advanced Server以降。2000 Professional以降ではプリンターのみのサポート）。

## 外部リンク
* Inside Macintosh:Networking
* Inside AppleTalk Second Edition (pdf)
* AppleTalk Filing Protocol Version 2.1 and 2.2 (pdf)
*  - AppleTalk Management Information Base
*  - AppleTalk Management Information Base II
*  - The PPP AppleTalk Control Protocol (ATCP)
*  - Appletalk Update-Based Routing Protocol: Enhanced Appletalk Routing
*  System 7.x.x: AppleTalk and ADSP Versions
* 株式会社インテリジェントワークス/技術情報 - Apple Talkのプロトコル
* Internetworking Technology Handbook - Apple Talk - Cisco Systems
* Apple Talk Protocol suite
* CITES UIUCnet documentation: AppleTalk on the Urbana-Champaign Campus
* AppleTalk Directory &amp; Informational Resource

## 関連項目
* Apple Filing Protocol
* Bonjour
* TCP/IP
* MacTCP
* Open Transport
* AppleShare
* MacIP
* IPTalk (通信)
* CAP
* netatalk

## 出典