順不同で、同じボックス内の2つのCPUの最も一般的な物理層インスタンスは次のように見えます:
- デイジーチェーンSPI(JTAGで使用されるなど)
- スレーブごとのワイヤ選択SPI
- 「TTLレベルのRS-232」(別名「非同期のスタート/ストップシリアル通信」)(1つのCPUのUART TXピンを別のCPUのUART RXピンに直接接続)
- I2C
- 8ビットデータ+ストローブ(IEEE 1284プリンターポートパラレルポートなど)
- 共有メモリ(一度に1つのCPUのみがアドレス/データ/制御バスを駆動します)
これらの物理層インスタンス(および別々のボックスにある2つのCPUのその他の物理層インスタンス)は、通常、通信システムの上位レベルを実装するソフトウェアにバイトストリームを提供します。
スマートプログラマーは、ハードウェア担当者が1つの物理層インスタンスを削除して完全に異なる物理層インスタンスに置き換えることを決定したときに、バイトの出力ストリームを供給するためにいくつかの関数を書き換えるだけでソフトウェアを記述します。ハードウェアに送信し、ハードウェアからバイトのストリームを読み戻します。すべての高レベルのプロトコルは変更されずに動作し続けます。
1つのCPUから別のCPUに情報を送信するプロトコルでは、ほとんどの場合、バイトストリームを一連のパケットとして解釈します。
- 前文
- ヘッダ
- (おそらくエスケープされた)シリアル化されたデータ
- トレーラー
一部の人々は、(2)多くの種類のヘッダー構造の1つと(3a)多くの種類のシリアル化データの1つ、(3b)多くの種類の1つ、 (4)多くの種類のトレーラーの1つを使用して、シリアル化されたデータをエスケープします。
データをパケットにカプセル化するための最も簡単なプロトコルには次のものがあります。
データをパケットにカプセル化するためのやや複雑なプロトコルには次のものがあります。
プロトコルの長いリストがあります
プロトコル設計の誤りを説明するRadia Perlmanによる「Protocol Design Folklore」をお楽しみください
。