LinuC-1 - 102試験 - 1.07:ネットワークの基礎 - 1.07.1 インターネットプロトコルの基礎

Last Update : January 02 2021 16:07:26

     

a. プロトコル

ネットワークにおいて、コンピュータ同士が正しく通信するためには、それぞれのコンピュータが共通の規則と手続きに従って通信を行う必要があります。この共通の規則と手続きを「プロトコル」と呼び、ネットワークに接続するコンピュータは、そのネットワークで利用されているプロトコルに応じたプログラム モジュールが必要になります。

プロトコルには、コンピュータ同士がやり取りするメッセージのフォーマットや、エラーが発生した場合の取り扱い方などが定められています。プロトコルには、ネットワーク媒体を通る信号を定義するものや、ネットワーク上の特定のコンピュータと通信を行うためのもの、特定のアプリケーションが通信を行うためのものなどさまざまな種類があり、1つのネットワークでも複数のプロトコルを組み合わせて利用しています。

ネットワーク全体をたった1つのプロトコルで定義しようとすると非常に大規模で複雑なものになり、プロトコルの設計や実装などを行うのが困難になります。そこで、複雑さを減らすために、通常はプロトコルをいくつかの層(layer)に分解して、階層的な構造として取り扱うことが広く行われています。ある特定の層のプロトコルは、その上の層へ提供するサービスと、下の層から提供されるサービスによって定義されます。プロトコルを層に分解することで、各プロトコルが単純化され、プロトコルの理解が容易になり、新たなプロトコルの設計や置き換えも容易になります。

現在のインターネットネットワークでは、TCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルが使われています。TCP/IPは複数のプロトコルからなり、その中心的な役割を果たす2つのプロトコル、TCP(Transmission Control Protocol)とIP(Internet Protocol)にちなんでTCP/IPと呼ばれるようになりました。


1.TCP

TCPはデータを正しく全部届ける役割をもっています。 TCPは1対1の通信しかできません。
通信の信頼性が保証されます。 通信の信頼性とは、「送ったデータが必ず届くこと」と「送ったデータが順番通りに届くこと」です。 これらの信頼性は、通信中の相手同志で何を送り何が届いたかを問い合わせ続ける事により実現しています。
インターネットでは、パケットがどこかでいきなりなくなる事があリます。 双方で何が届いたかを把握しているため、足りないものを再度送りなおす事が可能です。 このように再度送り直すことを再送と呼びます。 この再送により、通信の信頼性を実現しています。
TCPは、再送だけでなく輻輳制御も行います。 輻輳制御とは「混雑回避」を行うことです。 簡単に言うと、ネットワークが混んでいたら送るデータ量を減らす、混んでいなかったら送るデータ量を増やすという事をします。
TCPはコネクション型プロトコルです。


2.IP

インターネットにおいて情報の伝達を行うプロトコルであり、 インターネットの基礎部分となる重要な役割をもっています。 IPは目的地(宛先IPアドレス)ホストまでデータ(パケット)を運ぶ役目を負っています。
OSI参照モデルのネットワーク層にほぼ対応する機能を持っています。
IPは、最も基本的な通信単位であるパケットを間違えずに相手に送信する役割を担っています。パケットは、発信者、受信者(宛て先)などの情報を持つIPヘッダと、通信内容を格納するペイロードとで構成されます。パケットのうちIPが受け持つネットワーク層の部分はデータグラムと呼ばれます。発信者、受信者は、IPアドレスにより特定します。
IPは自己のインタフェース(ネットワークカードやモデムのこと)からパケットを送出するだけであり、相手まで確実にパケットが届くことに責任を持ちません(保証しない)。そのため、不慮の事故でパケットが失われた場合には単に到着しないことになります。
IPはコネクションレス型プロトコルです。


3.UDP

途中でデータが無くなってでも早く届けたい場合に有効です。スピード重視です。(音声や映像データなど)
一度に大量の受信者宛にデータを送信することができます。
「送りっぱなし」です。再送は行なわれず、送ったデータが相手に届く事は保証されません。 また、受信側でパケットが送られた順番通りに届く事も保証されません。
TCPの送ったものと届いたものの確認は非常に便利なものです。 しかし、確認の手間と送りなおしたり送る量を調節したりするための処理がかかり、データの転送に時間がかかってしまうことがあります。 UDPでは、何も考えずひたすら送りつけるだけなのでTCPと比較して即時性があります。
UDPはコネクションレス型プロトコルです。


b. IPアドレス

IPアドレスとは、ネットワーク上のデータを届ける場所を識別するためのものです。ネットワークに繋がれたコンピュータ機器にIPアドレスを割り当て、機器同士が相互にその宛先へデータを届けられるようにするために必要なものです。そのため、接続された機器の中で重複するIPアドレスがあってはいけません。

IPアドレスには、そのコンピュータがどのネットワークに属するかを示す部分と、そのコンピュータ自体を識別する部分があります。そして、所属するネットワークを示す部分をネットワークアドレス、そのコンピュータ自体を示す部分をホストアドレスと呼びます。
一つのIPアドレスからネットワークアドレスとホストアドレスを区別する役割を持つものがアドレス・クラス(address class)とサブネットマスクです。

アドレス・クラスとは、IPアドレスの値によって、IPアドレスを幾つかのカテゴリに分類したものである。IPアドレスの最上位部分のビット・パターンの値によって、「クラスA」から「クラスE」までの5つに分類されている。

  • クラスA
    最上位の1bitが「0」ならば、そのIPアドレスは「クラスA」になる。具体的には「0.0.0.0~127.255.255.255」がこのクラスAに該当する。これは全IPアドレス空間(≒42億個)のうち、半分に相当する。

    クラスAでは、ネットマスクの値は「255.0.0.0」となる。この結果IPアドレスは、1byteのネットワーク・アドレス部と3bytesのホスト・アドレス部に分けられることになる。クラスAでは、IPアドレスの最上位bitは常に「0」に固定なので、結局、ネットワーク・アドレスとしては、「0~127」までの全部で128個が利用でき、それぞれのネットワーク内には最大でそれぞれ約1600万台(0.0.0~255.255.255)のホストを収容できる。

  • クラスB
    最上位の2bitが「1-0」ならば、そのIPアドレスは「クラスB」になる。具体的には「128.0.0.0~191.255.255.255」が該当する。これは全IPアドレス空間のうち、4分の1に相当する。

    クラスBでは、ネットマスクの値は「255.255.0.0」となる。この結果IPアドレスは、2bytesのネットワーク・アドレス部と2bytesのホスト・アドレス部に分けられることになる。クラスBでは、IPアドレスの最上位の2bitは常に「1-0」に固定なので、結局、ネットワーク・アドレスとしては、「128.0~191.255」までの全部で1万6384個が利用でき、それぞれのネットワーク内には最大でそれぞれ約6万5000台(0.0~255.255)のホストを収容することができる。

  • クラスC
    最上位の3bitが「1-1-0」ならば、そのIPアドレスは「クラスC」になる。具体的には「192.0.0.0~223.255.255.255」が該当する。これは全IPアドレス空間のうち、8分の1に相当する。

    クラスCでは、ネットマスクの値は「255.255.255.0」となる。この結果IPアドレスは、3bytesのネットワーク・アドレス部と1byteのホスト・アドレス部に分けられることになる。クラスAでは、IPアドレスの最上位の3bitは常に「1-1-0」に固定なので、結局、ネットワーク・アドレスとしては、「192.0.0~223.255.255」までの全部で約200万個が利用でき、それぞれのネットワーク内には最大でそれぞれ約250台(0~255)のホストを収容することができる。

  • クラスD
    最上位の4bitが「1-1-1-0」ならば、そのIPアドレスは「クラスD」になる。具体的には「224.0.0.0~239.255.255.255」が該当する。クラスDは、マルチキャスト通信で使われる特別なIPアドレスであり、マルチキャスト通信を使ったマルチメディア・アプリケーションなどで使われる。例えば、同じ内容の音声や映像データなどをいっせいに「放送」するような用途で使われる。一般的なノードにクラスDのIPアドレスだけを付けることはない。

  • クラスE
    最上位の4bitが「1-1-1-1」ならば、そのIPアドレスは「クラスE」になる。具体的には「240.0.0.0~255.255.255.255」が該当する。ただし、このクラスは「実験的」な目的のためにTCP/IP(IPv4)の開発当初から予約されており、実際に使われることはない。

クラスA/B/CというIPアドレスの分類は、ネットワークの規模に応じてIPアドレスを使い分けるために決められたものである。だがIPアドレスの値による固定的なネットワーク・マスクでは、あまり柔軟にネットワークを構築することができないという問題点がある。
ユーザー自身が自由にネットワーク・アドレスとホスト・アドレスを決定できるようにするために、TCP/IPでは「サブネット分割」という手段が用意されている。これは、クラスごとのデフォルトのネットワークをさらに細かく分割して、より小さな「サブネット」として取り扱うという手法である。いままではIPアドレスを「ネットワーク・アドレス」と「ホスト・アドレス」の2つに分けていたが、サブネット対応のTCP/IPネットワークでは、新たに「サブネット・アドレス」部を設けている。つまりIPアドレスを「ネットワーク・アドレス」と「サブネット・アドレス」「ホスト・アドレス」の3つに分けるのである。

「サブネット・アドレス」は、もともとは「ホスト・アドレス」として使われていた部分である。ホスト・アドレスの上位何bitかをサブネットの番号として扱う(サブネット・アドレスは、ネットワーク・アドレスに隣接するように分ける)。元のネットワークをいくつのサブネットに分けるかはネットワークの構成に応じて自由に決めてよい。バイト単位で分けておくと、IPアドレスを10進数のドット区切り形式で表現した場合に分かりやすいというメリットがあるが、実際にはビット単位で任意に決めることができる。


CIDR

IPアドレスのうち、最上位の方から何bitをネットワーク・アドレス部に使うかという方法で管理している。サブネット分割の場合と違って、IPアドレスの「クラス」や「サブネット・アドレス部」というものを意識せずに(任意のIPアドレスと任意のネットマスク長を組み合わせることができる)、すべてのIPアドレスを「IPアドレス」と「ネットマスク(のビット数)」だけで統一的に管理している。

1.IPv4

IPv4は、32ビットの長さでIPアドレスを指定する方法です。通常は8ビットずつ「.」(ピリオド)で区切り、10進数で表記されます。


2.IPv6

IPv6は、128ビットの長さでIPアドレスを指定する方法です。


c. ポート

1. ポート

TCP/IPでホストを特定するためにIPアドレスを使いますが、IPアドレスだけでは1つのセッションだけとしか通信できません。実際には、1つのホストで同時に複数の通信プログラムを動かすことが可能です。
そのため、通信を識別するためにポート番号を使い、インターネット上では「IPアドレス:ポート番号」で1つの通信セッションを特定することができます。つまり、通信を行うためにソケットを開くには、IPアドレス(ホスト名)とポートを指定する必要があります。 ポート番号は 1~65535 までを指定することができます。他のアプリケーションで使用しているポート番号を使うとポートの競合が生じて正常な通信ができません。


2. ソケット

2つのアプリケーション間でデータのやり取りを行うためには、アプリケーションそれぞれにデータを出し入れするための受け口が必要となります。 ソケット(socket)とはTCP/IP通信プログラムを作る場合のTCP/IPインターフェースで、TCP/IPをAPI(Application Programming Interface)の形にしたものです。
元来は、TCP/IPソケットはBSD UNIXで開発されたきましたが、現在はLinuxやSolarisなどUNIX全般だけでなくWindowsやMacintoshでも採用され、ソケットを使って開発されたアプリケーションの移植性は高いです。
アプリケーションがソケットを使って通信する場合には、通信する側とされる側の両方でソケットを作成して、それらを接続する必要があります。

3. ソケットとポートの関係

プログラムでポートを用いて通信するには、一般にソケットと呼ばれる仕組みを用います(ソケットはBSDで開発されたため、特にBSDソケットとも呼びます)。ソケットとは通信の端点のことで、2台のコンピュータが通信しているとき、その通信路の両端、すなわちそれぞれのコンピュータにソケットが存在します。また、ソケットのインターフェースやソケットを扱うライブラリプログラムも併せてソケットと呼ぶこともあります。
ソケットを用いた通信は、以下のような手順で行われる。

  1. サーバでサービスを提供するプログラムは、ソケットを作成し、サービス固有のポート番号をソケットに割り当て (bind)、待ち行列を用意し (listen)、クライアントからの接続を待ち受ける (accept)。
  2. サービスを利用するクライアントプログラムは、ソケットを作成し、そのソケットの通信相手としてサーバのIPアドレスとサービスのポート番号を指定し (connect)、接続を行う。
  3. サーバは接続を受け付けると、新規にソケットを作成し、そのソケットとクライアントとの間に通信を確立する。
  4. もとのソケットは再び待ち受けに戻る
  5. 通信が終わると、2.および3.で作成したソケットは破棄される。

これらの手順に沿って通信を行うプログラムの形式は、ソケットプログラミングと呼ばれます。 WWW (HTTP) の場合、原則としてHTMLファイルや画像ファイルを1件取得するたびに上記2.~4.の手順が繰り返されるため、アクセスが集中するとサーバの負荷が非常に高くなります(ただしHTTP 1.1では1回の接続で複数件のデータを取得する動作がデフォルトとなっています)。
このように、ポート番号とはサーバ上のサービスを特定するための番号であるといえます。そのため、サーバ側のポート番号は重要であるが、クライアント側のポート番号は通常問題とされず、空いている番号を適当に自動で割り当てます。なお、上記手順の3.で作成されるソケットは、待ち受け用のソケットと同じIPアドレス・ポート番号・プロトコル (TCP/UDP) を有します。 すなわち、1台のサーバに、同じIPアドレス・ポート番号・プロトコルのソケットが複数存在する(ポートとソケットは一対多の対応となり得る)ことに注意が必要です。 この状態は、同時に複数の相手と通信を行っているWebサーバなどで、netstatコマンド(ソケットの通信状況を表示するコマンド)を実行してみるとよくわかります。

● 代表的なポート番号
 番号 プロトコル サービス
 20 TCP FTP データ転送ポート
 21 TCP FTP コントロールポート
 22 TCP SSH セキュアログイン、セキュアなファイル転送(scpやsftpなど)、ポート転送などで用いられる
 23 TCP Telnet 平文ベースのテキスト通信プロトコル
 25 TCP/UDP SMTP メール配信プロトコル
 53 TCP/UDP DNS
 80 TCP HTTP Webサービス
 110 TCP POP3 電子メール(受信)
 119 TCP NNTP ネットニュース
 137 TCP/UDP NetBIOS NetBIOS Name Service
 138 TCP/UDP NetBIOS NetBIOS Datagram Service
 139 TCP/UDP NetBIOS NetBIOS Session Service
 143 TCP IMAP 電子メール(IMAP2/IMAP4)
 161 TCP/UDP SNMP ネットワーク監視
 443 TCP/UDP HTTPS SSLを使ったHTTPS接続
 465 TCP SMTP over SSL SSLを使ったSMTP接続
 993 TCP IMAP over SSL SSLを使ったIMAP接続(IMAPS)
 995 TCP POP3 over SSL SSLを使ったPOP3接続(POP3S)


d. ネットワークコマンド

1.リモートホストと通信をする[ telnet ]

リモート・ホストに接続する。ポートを省略した場合、ポート23番で接続を行う。ctrl+](-eオプションにより文字を変更可能)を入力することでコマンド・モードに移行することができる。コマンド・モードで利用できる主なコマンドを以下に示す。


2.FTPサーバーに接続し、ファイル転送を行う[ ftp ]

リモート・ホストに接続しファイルの送受信を行う。ftpの実行後は、対話型のコマンド入力により操作を行う。主なコマンドは以下の通り。


3.ドメイン情報をDNSサーバーから取得する[ dig ]

ドメインの情報をDNSサーバーに問い合わせて表示する。例えば、ドメイン名からIPアドレスを調べられる。また、複数の問い合わせるバッチ・モードの利用が可能。


4.IPアドレスやドメインの情報を検索する[ whois ]

インターネット上でのドメイン名・IPアドレス・Autonomous System (AS) 番号の所有者を検索するためのプロトコルである。データベース検索を 用い、TCPベースでクエリ(質問)・レスポンス(応答)を行う。


z. 出題範囲概要

概要 :
  • TCP/IPネットワークの基礎を適切に理解していることを示すことができる。

詳細 :
  • ネットワークマスクとCIDR表記法。 サブネット化
  • プライベートとパブリックのドット区切り形式のIPアドレスの違い。
  • 一般的なTCPおよびUDPのポート(22/SSH, 25/SMTP, 53/DNS, 80/HTTP, 123/NTP, 443/HTTPS)
  • UDP、TCP、およびICMPの違いや主な機能
  • IPv4とIPv6の主な違い
  • IPv6の基本的な機能

  [ 例題 ] 


         

    www.it-shikaku.jp