ポイントツーポイント接続

ここまでは、LANを中心としたTCP/IPの動作を説明してきました。

 それでは、LANで使用できるTCP/IPの仕組みを公衆回線(電話回線など)を経由して利用できるようにするためにはどうすればよいのでしょうか?

 この仕組みがあれば、遠く離れた場所にある端末との通信にTCP/IPの仕組みが利用できますが、TCP/IPだけの機能では実現することができません。

 実現するためには、TCP/IPを包み込んで(カプセル化)してから公衆回線に送り出す必要があります。

 そのために、ポイントツーポイント接続を行うプロトコルが存在します。それが、PPPやSLIPといったプロトコルです。これらのプロトコルはデータリンク層に位置します。

 データリンク層は、ネットワーク上で直結されている機器同士での通信方式を定めたものです。この隣接2点間の通信を可能にするデータリンク層のプロトコルでTCP/IPのデータをカプセル化することで、遠く離れた場所にある端末とのTCP/IP通信を可能にします。

 一般的なポイントツーポイントにおける通信の構成は、2つのエンドポイントを通信リンクで接続したものになります。

 ポイントツーポイント接続を行うためのプロトコルには、SLIPやPPPがありますが、現在のダイヤルアップ接続プロトコルには、そのほとんどがPPPが使用されています。

SLIP

 SLIPは、「Serial Line Internet Protocol」の略で、略称「スリップ」とも呼ばれ、RS-232CやRS-422等のシリアル回線でIPを動作させるためのデータリンク層のプロトコルです。

1980年代初めに、アメリカの3Comが開発し、RFC1055として標準化されています。

 SLIPは、一般的に、RS-232Cにおいて、使用されるプロトコルだと思われがちですが、電話回線などを通じて、インターネットなどのTCP/IPネットワークに接続するためにも使用されます。

 しかし、SLIPでは、ネットワーク層のプロトコルにIPしか利用できません。AppleTalkやNetwareなどのプロトコルが利用できません。また、SLIPは、多くの問題も抱えています。セキュリティが低いのも一つの問題点です。そこで、現在では、PPPが主に利用されています。

SLIPは、8bitデータを透過的に送信するポイントツーポイント接続に使用します。

 END(0xc0)で始まり、その次に、実際のIPパケットデータと続き、END(0xc0)に終わります。それ以外の機能は何もありません。とてもシンプルな作りとなっています。

SLIPでは、データの一かたまりを示すのに区切りマークとして、「0xc0」を使用します。

データの中に、END(0xc0)が含まれると不都合です。

その場合、下のように2オクテットの特別な送信を行うことで対処します。

END(0xc0) ・・・  ESC(0xdb) ESC_END(0xdc)

これでデータ中に、「0xc0」が現れないことになります。

しかし、ESC(0xdb)をデータとして送りたい場合に、不都合が起こります。

この場合には、下のように2オクテットの特別な送信を行うことで対処します。

ESC(0xdb) ・・・  ESC(0xdb) ESC_ESC(0xdd)

このように、SLIPでは、IPフレームを単純にカプセル化を行っています。