ネットワークの仕組み

はじめに

サーバを設置するということは、イントラであれインターネットであれ、他のコンピュータと通信を行うこと。したがってネットワークの知識は不可欠ですが、非常に高い能力が要求され、私の能力の範囲ではありません。みんなと一緒に勉強できればうれしいです。

なお、以下の説明は、複雑な部分を省略して、わかりやすいように細工がしてあります。

ネットワーク・プロトコルとは

コンピュータネットワークとは、複数のコンピュータがお互いの情報をやり取りする仕組み(決まり)をいいますが、単にコンピュータ同士をケーブルでつないだけでは通信ができません。

プロトコルとはコンピュータの共通言語です。目的や用途によっていろいろありますが、インターネットの世界では「 TCP / IP 」という言語が有名です。「 TCP / IP 」は、「 TCP 」と「 IP 」というプロトコルの総称で、多くのプロトコルの集合体になっています。だから、これだけでプリントアウトできたり、インターネットできたり、FTP ができたりします。

ネットワークの階層構造

TCP/IP層

プロトコル

通信相手を認識する方法

アプリケーション層

http ftp telnet smtp

ntp dns nfs

URLや メールアドレス

トランスポート層

tcp

udp

ポート番号

ネットワーク層

IP ICMP

IPアドレス

データリンク層

イーサーネット PPP PPPoE

MACアドレス

物理層

イーサネットカード ケーブル 電話回線など

 

【表の見方】

インターネットにつなげて WWW ページを見る場合には、電話線を通じて(物理層)、接続を確立し(データリンク層)、どこどこのコンピュータを識別(ネットワーク層)し、TCP プロトコルで通信(トランスポート層)、http でページを表示(アプリケーション層)するといった調子です。これを、流れるパケットの中身で説明すると、以下のようにプロトコルが順次付け加えられて、物理層をパケットが流れているということになります。

TCP/IP層

 

データのパケットの構造

アプリケーション層

-------------->

データ本体

トランスポート層

-------------->

送信元・先ポート番号

ネットワーク層

-------------->

送信元・先IPアドレス

データリンク層

-------------->

送信元・先MACアドレス

だから、ネットワークのトラブルシューティングを実施するためには、一番下に表記されているデータリンク層から上に向かってやればよいということになります。

TCP は「コネクション型」といわれ、通信を行うための経路(ポート)を確立し、データの順序やエラーの確認などを行い、相手先にデータを正しく送り届けるためのプロトコル。「送信しますよ」とか「送ったけどデータは正確?」などと問いかけ、「準備できました」とか「はい大丈夫です。」などと、問いかけながら送信するプロトコル。UDP は「コネクションレス方」といわれ、一方的にデータを送信し、相手が正しくデータを送信しているかなどは保証しません。一方的に「送るぞ」「送ったぞ」方式のプロトコル。

物理層は、ネットワークを構成するインターフェイスの規格、電気的形状と特性といったネットワークメディア(媒体)の規格という側面が強いそうだが、この分野のお仕事をしている方以外は、単純に物理的に接続するための媒体と理解した方がわかりやすいのでは?ないかな。

IP・ICMP

IP アドレスの仕組み---ここが一番難関(^^;です。コンピュータの識別番号です。このうちインターネットの世界で利用できるのがグローバルアドレス、イントラネットで使用できるのがプライベートアドレスです。IP アドレスは、4 つの数字( 0 〜 255 )をピリオドで区切って表現します。

たとえば192.168.0.1という具合です。実は、コンピュータは 2 進数しか理解できないため、

11000000.

10101000.

00000000.

00000001

という、8 個( 8 ビット= 1 バイト)の数字を 4 組( 4 バイト)組み合わせています。一つのペアをオクテットと呼び、頭の方から第1オクテット、第2オクテッオクテットなどと呼びます。こんなの覚えられませんよね。ちなみに、10 進数を 2 進数に変換するにはアクセサリーに含まれている電卓を「関数電卓」仕様で使ってみてください。

以上の 32bit 仕様を IPv4 (インターネットプロトコルバージョン 4 )と呼び、単純計算で世界の約 43 億の PC にしかグローバルアドレスをつけられなくて、いずれ不足するだろうといわれています。そこで、登場したのが128bit仕様にしたIPv6であり、世界中のPCにグローバルアドレスが割り当てられるといわれています。( 2 の 128 乗個、約 340 × 10 億 × 10 億 × 10 億 × 10 億個だそうで、想像を絶します。)
<IPv6の表記例>

21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A

128 bit のアドレスを 16 bitごとに 8 つに区切り、それそれを 16 進数で表記したものを「:でつないで表すようです。これが 2 進数でどう表されるべきかは、例のごとく関数電卓でやってみてください。

それよりこちらのほうが重要です!192.168.0 という頭から 3 桁までがネットワーク部、最後の 1 桁がコンピュータ名(ホスト部)からなっています。

このうちホスト部が 0 または 255 は特別の意味を持っていて特定の機器に割り当てることはできません。192.168.0.0 はネットワーク全体をあらわし、192.168.0.255 はブロードキャストと呼ばれ、そのネットワークのすべてのホストに IP パケット(信号の固まり)を送る場合に利用されます。

以上の説明は下記のクラスCの場合を前提にしています。

すなわち同一のネットワークとして通信できるかどうかは、サブネットマスクによって決定されます。
たとえば「 255.255.255.0 」の場合は、2進数で「 11111111.11111111.11111111.00000000 」と表現されますが、このうち「1」が連続している部分までをネットワークとすることになっているからで、ルータを介在させず通信するためには、この第3オクテットまでが同一である必要があります。

 

IP プロトコルは、コネクションレス型のプロトコルだから、IP パケットが正しく到達したかどうかは保障しない。たとえば、HTTP であるホームページを表示しようとしたら表示できないという場合に、必ずしも、ページが存在しないだけではなく、もしかしたら IP パケットが正しく届いていないのかもしれないし、IP アドレスは届いていてもHTTPサーバがダウンしているのかもしれない。この問題の切り分け(ネットワークのトラブルシューティング)を実施するためには、IP が正しく送信されているか?だけでも調査することが非常に役立つ。もしIP パケットが届いていなければIP 層から物理層までのトラブルを疑えばよいことになるからだ。このときに利用されるプロトコルが ICMP というプロトコルだ。もっとも利用される pingtraceroute コマンドがこのプロトコルを使用している。IP プロトコルを補助するためのプロトコルだ。しかし、ネットワークのトラブルの原因になりやすいことや、セキュリティ情報の漏洩という問題もあるために、無効に設定されている場合も多いそうだ。

ポート番号

前記ネットワークの階層構造の表で、「 TCP プロトコルで通信(トランスポート層)、http でページを表示(アプリケーション層)する」という具合に説明しましたが、TCP プロトコルでは FTP も可能であり、これを区別できるのはなぜか。

それがポート番号というものです。TCP や UDP にはヘッダ情報に「ポート番号」と呼ばれる情報が含まれており、アプリケーション層のどのプロトコルに対するデータなのかを識別するための情報を有しています。そのおかげで、http は WWW サーバに、FTP プロトコルは FTP サーバへと振り分けできるのです(これをポートフォワーディングというそうです)。

ポート番号は 0〜 65535 番までの番号で表現されます。このうち 49152 〜 65535 は自由に使用することができます。1024 〜 4915 はアプリケーションによって割り当てがありますが、登録されているアプリケーション以外で使用しても大きな障害にはなりません。0 〜 1023 は以下のように決定されており、自由に使用できません。

ポート番号

プロトコル

説明

20 ftp−data ftpのデータ
21 ftp ftpの制御
22 ssh セキュアなシェル
23 telnet telnet
25 smtp SMTP(メールの送受信)
53 domain DNS
70 gopher gopher
80 http WWW
110 pop3 pop(メールの取り込み)
119 nntp ネットニュース
143 imap IMAP(メールの取り込み)
443 https セキュアな WWW

詳しくはこちら

 

外部にサーバを公開するということは、特定のホスト(IPアドレス)に設置したサービスへのポートへフォワードさせるということを意味するので、これを逆に利用すると特定のホスト、特定のポート以外にフォワードさせないという設定がセキュリティを高めることになります。

どのポートが開いているかSygate Online Service で確認してください。セキュリティについては、セキュリティ情報コーナールータによるIPフィルターの設定方法を参考にしてください。