アーキテクトに求められるTCP/IPの知識

昨年末、以前関わっていたプロジェクトでネットワーク周りでのトラブルが発生して、そのトラブルシューティングに奔走した際、TCP/IPについて不勉強だなと実感することがあり、今回はアプリケーションレイヤーの話ではなく、下のレイヤーのトピックを取り上げてみたいと思います。

顧客の基幹システムであり、現行IBMホストをWebシステムへとマイグレーションする案件なのですが、取引先からのSSLでのアクセス以外は基本的に企業内ネットワークで完結するため、セキュリティや性能要件としては、ECサイトなどに比べれば比較的ゆるいという状況です。

まだC/Oしてないこともあり、詳細は記述できないのですが、IEがネットワークエラーを検出してしまい、アプリケーションとしてはシステムエラーとして画面を返すという状態になりました。

その調査の過程では、クライアント、サーバー、ルーターやロードバランサなどのネットワーク機器にいたるまで、各種アクセスログの取得やクライアント側のパケットキャプチャの取得・解析まで実施しましたが、真因が判明するには至らず・・・。結局、アプリケーションレイヤー(フレームワーク)で特定のエラーコードにおけるハンドリングを実装して事無きを得たのですが、やはりネットワーク、特にTCP/IPの深い知識が必要だなと感じたという次第です。


さて、前置きが長くなったのですが、TCP/IPについて改めて調査してみてわかったのは、アプリケーションレイヤーよりも情報の陳腐化の度合いが低く、 2000年前半のWeb上の記事や書籍でも、まだまだ十分に通用するということです。もちろん、進化してないわけではありませんが、下のレイヤーほど安定 しているというのは事実で、IPv6などの新しいトピックはあれど、HTML5やスマートデバイスに対応したWebアプリケーションであっても、HTTP プロトコルで通信している点ではなんら変わりはありません。またクラウドの普及により、ネットワーク構成は複雑化していくものの、アプリケーションアーキ テクト/エンジニアがネットワーク・インフラ知識が求められる場面も増えてくるという意味でも重要でしょう。

下記にTCP/IP、ネットワーク技術関連のサイトをまとめてみました。これらを勉強してから、書籍や実務で深堀りしていくと、よりクオリティの高い知識・経験が得られるかと思います。

ちなみに、パケットキャプチャツールとしては、下記2つが有名ですね。私はWiresharkを利用してます。