オルタナティブ・ブログ > プログラマー社長のブログ >

プログラミングでメシが食えるか!?

リンクレイヤーを理解するとネットワークが良くわかる!

»

一般的な通信プログラムはTCPやUDPを使って通信するようなプログラムを作ります。もっとも、WEBシステムも通信プログラムと考えると、TCPを直接扱うことすら少なく、通信部分はアプリケーションサーバやミドルウェアが何とかしてくれることも多いでしょう。

当社が得意としている技術の一つが、リンクレイヤーでパケットを扱うプログラムの開発です。リンクレイヤーとは、データリンク層とも呼ばれ、OSIの7階層でいう所の、2層目で、LAN媒体に接続された2ノード間でのデータ転送のためのプロトコルです。EthernetやPPPが相当します。その上にIPやARPが存在し、さらに上にTCPやUDPがあります。

Image019_2

製品で考えると、

・不正接続検知/排除システム:IntraGuardian2IntraGuardian2 EX
・回線遅延シミュレータ:EthdelayEthdelayExEthdelayPro
・コンパクトパケットキャプチャ:Ethcapture
・メール宛先制御システム:BridgeFilter
・大規模向けDHCPサーバ:ProDHCP
・キャリアグレードDHCPv6サーバ:ProDHCPv6

なんと、ほとんどの製品がリンクレイヤーでパケットを扱っています。

さらに、特注品の開発でも、

・特殊ブリッジ
・特殊ルーター
・特殊無線傍受システム

など、数々の開発を行ってきました。

なぜか、プログラマーはDBやUIは得意でも、ネットワークは苦手という人が多く、TCPやUDPのプログラミングでも手を出したくない人が多いようですが、リンクレイヤーとなるとますますできる人が少ないようです。しかし、リンクレイヤーを理解しているとメリットが多いのです。

・ネットワークシステム障害の切り分けができる
 パケットキャプチャは基本的にリンクレイヤーでキャプチャしますので、そこから理解できているとほとんどのことを理解できる。
・ネットワーク構成の問題も理解できる
 ネットワークを構成するスイッチングHUBやルーターなどの役割を理解でき、ネットワークの仕組みがわかる。
・リンクレイヤーならほとんどの要求に対応できる
 リンクレイヤーから扱えるということは、ソフトウエアでできることが全てできるということになります。普通のTCPやUDPでは対応ができないような仕組みも作り出すことができます。あまり大きな声では言えませんが、他人の通信を妨害したり、LANをダウンさせたりすることもできてしまいます。悪用はいけません。。

そんなわけで、私としてはネットワークに興味が少しでもあるプログラマーには、是非ともリンクレイヤーの技術を身につけて欲しいと思っています!

リンクレイヤーのプログラミングが一番やりやすいのはLinuxです。BSDはもう少し面倒で、Solarisはとても面倒です。Windowsだと素の状態ではリンクレイヤーでパケットを送出できません。幸いなことにLinuxはとても普及しているので、環境面ではそれほど困らないでしょう。

あとはとにかくやってみればいいのですが・・・とりあえず自分が関与した書籍を紹介しておきます。。

メンバーの種田君との共著です。前著「C for Linux 2」の改訂版みたいな感じです。分厚い本ですが、サンプルソースもたくさん出ていて、まずは動かしてみると理解できるものです!
Photo
まだAmazonに登場していませんが、まもなく発売になる著書です。ブリッジやルーターを自作することにより、パケットの流れを理解しよう、という感じの内容です。

Amazonにも登場しました!

なんとなく著書の宣伝みたいになってしまいましたが、リンクレイヤーで遊べるようになると、ネットワークがとてもよく理解できます。是非チャレンジしてみてください!

Comment(2)