ネットワークセキュリティ入門

攻撃方法から学ぶ、自己防衛の方針

last update 2000/9/3

TCP/IPの概略

TCPコネクション

 前章では,TCP/IP全体について簡単に述べた。ここでは上記のうち、TCPを中心として説明を行う。

 TCPは相手ときちんと通信ができるようにするため、いくつか特徴的な通信方法を使用する。

 まず一つはポート番号(この仕組みはUDPでも使用する)、もう一つは3way-handshakeと呼ばれる仕組みである。

 まずポート番号について。これは、コンピュータが通信をするときに、同時に何種類もの異なった通信を行うことを可能にするための仕組みであると言ってよい。この仕組みがないと、「メールを受信しながらゲームをダウンロードしつつ、WWWブラウザでページを見る」と言ったことができなくなる(ここでは同時に3種類の異なった通信を行っている)。

 この仕組みは、以下の方法による。

 まず、相手のコンピュータと通信をはじめる際に、あらかじめアプリケーションプロトコルに割り振られているポート(例:SMTPは25番、FTPは20番と21番、HTTPは80番、先の例と同順)に対し、任意のポート番号から通信開始のデータを送る。この時、通信相手のポート番号とこちらのポート番号(加えてIPアドレスとプロトコル)の組み合わせが重ならない限り、別々の通信として制御される。

 また、このポート番号は1〜65535の範囲で存在し、重なり合うことはない様,制御されている。この仕組みにより、多くの種類の通信を同時に制御することが可能となっている。

 先にも触れたが、通信を受ける(通信開始のデータを受ける)側については、その通信内容(通信を受けるプログラム)それぞれに決められたポート番号を使うことになっている。例えば、HTTPを使うためにはポート番号80番に対して通信開始のデータを送信しなければならない。この取り決めを悪用し、攻撃の前段階の調査である、ポートスキャンが実行される。

 次に3way-handshakeについて。

 まず、通信をはじめようとする際、SYNパケットと呼ばれるデータを送信する。ここで、パケットとはひとかたまりのデータである。

 通信相手が、通信を許可する場合、SYNパケットを送った相手(パケットの中には送った相手のIPアドレスが入っているのでそこに送る)にACK/SYNパケットを送信する。言ってみれば通信していいぞ、返事をくれ、と言ったところだろうか。

 相手からACK/SYNパケットを受け取ったところで、もう一度相手に今度はACKパケットを送る。これが相手に届いたところで通信開始である。

 また、最初の通信開始(SYNパケット)を受けたコンピュータが、「繋がない」とした場合、通信拒否のパケット(RSTパケット)を送信する。

 非常に煩雑な印象を受けるが、これらの手順を踏むことによって、信頼性の高い通信が可能となる。

前に戻る目次に戻る次に進む