ネットワーク入門です。ネットワークも参照のこと。
放送大学「情報学へのとびら ('16)」を参考に執筆しました。
パケット通信は、たくさんのコンピュータやネットワーク機器が接続される現代のICT社会における、通信のやり方。
まず、データを小さな単位(パケット)に分割し、パケットに宛て先(IPアドレス)を付加し、空いているネットワーク回線にそのパケットを送り込み、ルータがそれをバケツリレー方式で転送し続け、自分宛のパケットを取り込み、自分宛でないパケットは隣接するルータに転送する。
ルータはパケット通信ネットワークにおける「どこにパケットを転送するか」という判断と転送を行う装置であり、ルーティングテーブルと呼ばれる経路表を持っている。個々のルータは、ネットワークの接続状況を自動的に選ばれた代表ルータに送り、集約してデータベースを作る。この経路表をネットワーク内の全てのルータに転送し、共有する。このようにすることで、どのIPアドレスならどのルータに送るのが一番近づけるかを判断し、パケットを転送する。そのように、芋づる式で経路表を作成している。
もし、ネットワークの外部へのパケットだった場合、パケットは契約しているISPに転送される。ISPは、宛先がISP傘下の組織であればその組織に、そうでなければさらに上位のISPにパケットを転送する。最上位のISPはTier1と呼ばれ、世界中に10社程度存在し、日本ではNTTコミュニケーションズ(OCN)がTier1である。もし、海外宛てであれば海底ケーブルを使ってパケットを転送する。場合によっては中小のISPは大きなISPに対して接続料金を支払う。このような場合のISPとISPの接続形態をトランジット(大きなISPから中小のISPへの有償の接続提供)あるいはピアリング(同程度のISP同士の無償の接続合意)と呼ぶ。
自分の書いたブログ「神々とともに生きる詩人」2021/01/27より。
ネットワークにおいては、パケットと呼ばれる単位でデータ通信を行う。
パケットにはIPアドレスという宛て先が記述されており、ルータと呼ばれる「どの機器にパケットを送れば目的の機器に近づくことができるか(経路情報)を知っている機器」にパケットを送り、バケツリレー方式でパケットを送り続けることで、インターネットにおけるネットワーク通信は行われる。
後日注記:IPアドレスはインターネット上の「住所」のことで、ネットワークインターフェース(有線LANや無線LAN)に設定する。TCP/IPにおいて、通信する機器を識別するために使う。このアドレスにより、インターネットでIPを通じた通信ができる。
ルータは、周辺の経路情報を芋づる式にひとつの代表ルータに集め、すべてのルータとの間で経路情報を共有することで、どのルータに送れば目的の場所にたどり着けるかを知っている。
後日注記:ルータには、データを転送するネットワークの最適ルートが、ルーティングテーブル(経路表)にあらかじめ学習されている。ルーティングを行うためには、データを転送するネットワークの情報を、ルーティングテーブルに登録しなければならない。ルーティングは、パソコンのルーティングテーブル、ブロードバンドルータのルーティングテーブル、インターネット上のルータのルーティングテーブル(ISPルータなど)を経由して、目的のコンピュータへとデータを転送する。
後日注記:ルータには家庭内ルータやISPのルータのほかに、「インターネット上のルータ」というのが存在し、これが膨大なルーティングテーブルを格納している。ルータによってルーティングを参照するためには、インターネット上のルータやISPルータを経由しなければならない。
LANは家庭内のネットワークであり、ネットワークとネットワークが家庭内のブロードバンドルータやISPやインターネット上のルータによって繋がったものが、インターネットである。
イーサネットは、もっとも普及しているLANの規格。イーサネットにおいては、MACアドレスとIPアドレスによって通信を行う。
MACアドレスは、ネットワーク機器の識別番号であり、リンクバイリンクで、各機種の間で変わる。
IPアドレスは、パケットの送受信の宛て先情報であり、エンドツーエンドで、最初から最後まで変わらない。
MACアドレスとIPアドレスを変換するには、ARPというプロトコルを用いる。
ARPにおいては、ブロードキャストパケットで全ての機器に、目的のIPアドレスを持っている機器(MACアドレス)を確認し、ユニキャストアドレスで応答する。
後日注記:IPアドレスはエンドツーエンドで、最初から最後まで変わらない。これに対してMACアドレスはリンクバイリンクで、ひとつのリンクごとに変わる。端末から最初のルータ、ルータからルータ、そしてサーバ、とったように毎回変わる。
ブロードキャストアドレス(ブロードキャストパケット)とは、1対多の通信で、ネットワーク上のすべてのホストに対する通信のこと。
ユニキャストアドレス(ユニキャストパケット)は、1対1の通信のこと。
後日注記:通常、IPアドレスはユニキャストアドレスで、1対1の通信を行うが、1対多の場合もある。1対多の通信は、たとえばブロードキャスト(同一ネットワークの全てのホストに送信する)やマルチキャスト(なんらかのグループ化がされた複数のホストに送信する)などの通信がある。
実際、IPアドレスは無限ではないため、ネットワーク部とホスト部に分かれており、ネットワーク部はインターネット上の一意のアドレスだが、ホスト部は家庭内で自由につけることができる。
IPアドレスをビットにした時に、ネットワーク部を1とし、ホスト部を0としたものをサブネットマスクと言い、たとえば255.255.255.0となる。
255 255 255 0 11111111 11111111 11111111 00000000
サブネットマスクにより、ネットワーク部とホスト部を識別できる。
後日注記:32bitのIPアドレスのうち、どこまでがネットワークアドレス(ネットワーク外部から通信に使うアドレス)でどこまでがホストアドレス(ローカルネットワークの内部で通信に使うアドレス)かを識別するために、サブネットマスクを使う。たとえばIPアドレスが192.168.0.11であれば、192.168.0までがネットワークアドレスで、11がホストアドレスである。この時、IPアドレスをビットにして、ネットワークアドレスを1、ホストアドレスを0とする。ここでは、サブネットマスクは255.255.255.0となる。これを、IPアドレスとセットで設定する。
また、インターネットにおける一意のアドレスをグローバルアドレスと言い、家庭内で自由につけられるアドレスのことをプライベートアドレスと言う。
この変換を行うシステムをNATと呼ぶ。
後日注記:グローバルアドレスは、インターネット上で他と衝突・重複しない一意のIPアドレス。グローバルアドレスは無限に存在しないため、グローバルアドレスには利用されることのない範囲のアドレスの中で、プライベートアドレスを使うことができる。NATは、プライベートアドレスとグローバルアドレスを相互にアドレス変換する技術。
また、IPアドレスと同時に使われるのがポート番号であり、どのアプリケーションに対して送受信を行うかを数値で指定し、たとえばHTTPであれば80番となる。
ポートはファイアーウォールによって通常は閉じられており、不正な通信を遮断しているが、あえてポートを開けることによって、HTTPサーバーなどを外部に公開することができる。
NATとファイアーウォールは、Linuxであればiptablesのようなシステムが行う。
後日注記:ポート番号は、パソコンやサーバ上で稼働しているアプリケーション(バックグラウンドで実行されるサービスの場合もある)の識別番号。自分でポートを開けることで、インターネット側から特定のコンピュータに通信を転送できる。通常はファイアーウォールによって遮断されるが、あえて通信を許可することで、インターネット上にサーバーなどのサービスを公開できる。
また、IPアドレスは機械にとっては識別しやすいが、人間にとっては理解し辛い。
このため、人間のためにドメインとホスト名によって、名前付けを行う仕組みをDNSと呼ぶ。
DNSで名前を解決することを「名前解決」と呼ぶ。
実際はDNS以外にも、ネットワーク上の名前をホスト名の羅列によって解決したり、NISなどによって設定することもあり、これらすべての解決をするシステムのことを「リゾルバ」と呼ぶ。
後日注記:0と1によるビットのIPアドレスは機械にとっては識別しやすいが、人間にとっては覚えづらいため、DNSと呼ばれる「IPアドレスを名前解決する技術」が存在する。DNSサーバに対して、ホスト名(IPアドレスに対する名前)とIPアドレスの対応を登録することで、ホスト名にhogehoge.comのようなドメイン名がつけられる。ホスト名の集まりをドメインと呼び、.comの部分をドメイン名と呼ぶ。
プロトコルとは、ネットワーク上のやり取りを行う上で、必要な「取り決め」のことであり、通常は「通信します、いいですか」「いいですよ、こちらからも通信します」「ではデータを送ります」といったような3ウェイハンドシェイクといったような取り決めが決められている。
プロトコルはOSI参照モデルという7階層のレイヤー分けがされており、上から下へ階層を下がる時にヘッダと呼ばれる通信や接続のための情報を付加し、通信を物理的に行った上で、ヘッダを除去して下から上へと上がる、リファレンスアーキテクチャを採用している。
こうすることで、別の階層に影響を与えることなく、目的の階層だけに処理を分割できる。
階層 | OSI基本参照モデル | TCP/IPプロトコルスイート | 用途 |
---|---|---|---|
第7層 | アプリケーション層 | アプリケーション層 | Webブラウザ、メールなど |
第6層 | プレゼンテーション層 | データ変換、暗号化など | |
第5層 | セッション層 | セッションの確立 | |
第4層 | トランスポート層 | トランスポート層 | データの信頼性の保持 |
第3層 | ネットワーク層 | インターネット層 | ネットワークの垣根を越えた通信 |
第2層 | データリンク層 | ネットワークインターフェース層 | ネットワーク内部のデータのやり取り |
第1層 | 物理層 | ケーブル・コネクタのハードウェア通信 |
(放送大学「情報学へのとびら ('16)」を参考に執筆しました。)
IPアドレスには経路情報をたどっていく機能があるが、これに信頼性とデータのセグメント分割を与えるのがTCPというプロトコル。
TCPには、データの再送制御や、ふくそう制御など、信頼性を確保する多くの機能がある。
これに対して、信頼性を犠牲にしても、効率やリアルタイム性を取るのがUDP。通常のネットワーク通信はTCP/IPによって行うが、動画や音声など、信頼性よりもリアルタイム性が必要な場合はUDPを使う。
TCPの機能 | 説明 |
---|---|
3ウェイハンドシェイク | 「接続して構いませんか?」 「構いません、こちらも接続して構いませんか?」 「こちらも構いません」 という3回の挨拶で接続を確立させ、その後にデータを送る |
ウィンドウ制御 | TCPセグメントの一度に送るサイズを決定する |
再送制御 | 接続中に、なんらかの原因で失われた、送られなかったデータを再送信する |
ふくそう制御 | ネットワークの混雑時に、送信するTCPセグメントを少しずつ増やすことで、混雑を回避する |
これに対してUDPにはデータを受け渡す以外、何の機能もないが、信頼性の必要のないリアルタイム処理(音声による電話通信など)などで使われる。他にも、ひとつのコネクションに制限されず一から多に送られるブロードキャスト・マルチキャストや、小さなデータを何度も頻繁に転送するDNSのような利用に適している。
(おうちで学べるネットワークのきほんを参考に執筆しました。)
また、さらに上のプロトコルには、HTTP, FTP, SMTP, POP, IMAP, NTPなどがあり、それぞれよく知られたポート番号(ウェルノウンポート番号)を用いる。HTTPは80番、HTTPSは443番、SMTPは25番あるいは587番(ISPがOP25Bのような迷惑メール対策のメール送信セキュリティ技術を使っている場合)、POP3は110番、IMAPは143番などとなることが多い。
以下は主なプロトコルの一覧。
プロトコル | 説明 |
---|---|
IP | インターネットの中心的なプロトコルで、インターネットの世界においてパケットを目的の相手に届ける。 |
TCP | トランスポート層のプロトコル。信頼性確保の機能がある。 |
UDP | TCPには機能が多い代わり速度が遅い。 信頼性が必要なく効率やリアルタイム性が必要な場合、機能のほとんどないUDPを使うことがある。 |
HTTP | Webの世界において、サーバとブラウザの間でHTMLページの送受信を行うプロトコル。 |
FTP | ファイル転送を行うプロトコル。WebサーバにHTMLページをアップロードするためによく使われる。 |
SMTP | メールを送信するためのプロトコル。 |
POP | メールサーバからメールを取り出すためのプロトコル。 |
IMAP | メールサーバ上でメールを閲覧するためのプロトコル。 |
DHCP | ネットワーク上のそれぞれのホストに自動的にIPアドレスを割り振るためのプロトコル。 |
NTP | ネットワークを用いて時刻を同期させるためのプロトコル。 |
(徹底攻略 応用情報技術者教科書 平成30年度、おうちで学べるネットワークのきほんを参考に執筆しました。)
ネットワーク機器においてはスイッチとルータがある。
スイッチは、ネットワークの中で、各機器において通信を行う。
ルータは、ネットワークとネットワークを繋げる。
デフォルトゲートウェイは、ネットワークの外部からの案内役であり、デフォルトゲートウェイのアドレスを指定する時は、通常はルータのアドレスを指定する。
後日注記:ゲートウェイは、ネットワークに外から入ってくる窓口のこと。基本的に、パソコンのデフォルトゲートウェイには、ブロードバンドルータのIPアドレスを設定する。スイッチは、同じネットワークの中で、各機器の間でデータ転送を行う。パソコンやサーバをネットワークに接続するには、スイッチのLANポートにパソコンやサーバを接続する。これにより、同じネットワーク内のパソコンやサーバは、LANポート間でデータ転送ができる。LANポートに設定された機器のアドレスのことをMACアドレスと呼ぶ。ルータやスイッチに複数のLANポートがある場合、LANポートごとにMACアドレスが割り振られる。
後日注記:ルータは、ネットワークとネットワークの相互接続を行う。ネットワークはルータによって接続される。ルータのインターフェースには、スイッチあるいは直接パソコンやサーバが接続されている。ブロードバンドルータは、家庭内ネットワークとISPルータの間のネットワーク。
以下の書籍が参考になります。(上記「ネットワークの基本」の内容は以下の書籍を参考にして書きました。)
Linuxネットワーク、Linuxカーネル(ソケット)、ifconfig、netstat、Linuxファイアウォール、iptables、ネットワーク機器、DNSサーバなどを参照のこと。