【CCNA】(2)通信プロトコル

第2章 通信プロトコル

TCP/IPの階層モデル

今回出てくる用語

・TCP/IPの階層モデル
・TCP/IPのカプセル化と非カプセル化

なるはや<br>ちゃん
なるはや
ちゃん

第1章で、ネットワークの基礎とOSI参照モデルの概念に関してご紹介してきました。

なるほど<br>くん
なるほど
くん

通信プロトコル、通信する時のルールのことでしたよね。

そうです!
そして、通信のルールや問題を、機能や役割で分けて考えやすくしたのがOSI参照モデルでした。

はい!ちゃんと覚えてますよ!

良いですね!
では、次はTCP/IPに関して、もっと詳しく見ていきます。

TCP/IPは確か、インターネットで通信する時の通信プロトコルでしたよね?

そうです。そして、このTCP/IPにも階層モデルが存在します。

TCP/IPにも階層モデルがあるんですね?

はい!皆さんがよく使うインターネット通信でよく使われる通信プロトコルで、TCP/IPではデータをどのように処理しているかをご説明していきます。

はい!お願いします!

TCP/IPと階層モデル

この用語のポイントを簡単に!

・通信プロトコルだよ
・データ通信時にデータをどのように処理しているかの説明だよ
・TCP/IPにも4階層のルールがあるよ

TCP/IP(Transmission Control Protocol/Internet Protocol)は、現在のインターネット通信およびイントラネット通信において最も利用されている通信プロトコルです。

TCP/IPは複数のプロトコルからなりますが、中心的な役割を果たすのがTCPとIPであることから TCP/IP と呼ばれるようになりました。

※IP通信で使用するプロトコル群( IP, ICMP, TCP, UDP, HTTP, SMTP, SSH,TELNETなど)を総称してTCP/IPと呼んでいます。

TCP/IPの階層モデル

TCP/IPにおける階層モデルは以下の4階層から構成されています。
TCP/IPモデルとも呼ばれますので、覚えておきましょう。

・アプリケーション層
・トランスポート層
・インターネット層
・ネットワークインターフェース層

の4つです。
ネットワークインターフェース層は単にネットワークアクセス層とも呼ばれています。

OSI参照モデルとTCP/IP階層モデルの対応は以下になります。

上図の通り、TCP/IPの階層モデルにおけるアプリケーション層は、OSI参照モデルのアプリケーション層、プレゼンテーション層、セッション層に相当します。

TCP/IPのトランスポート層はOSI参照モデルにおけるトランスポート層に相当して、TCP/IPの階層モデルのインターネット層はOSI参照モデルのネットワーク層に相当して、ネットワークインターフェース層は、OSI参照モデルのデータリンク層と物理層に相当します。

各階層の役割は以下になります。

TCP/IPプロトコルスタック各層の役割
アプリケーション層主にアプリケーションごとの固有の規定。
この層ではHTTP, FTP, SMTP, SSHなどのアプリケーション層のプロトコルにより、通信アプリケーションの機能が実現されます。
トランスポート層主にノード間のデータ転送の信頼性を確保するための規定。
この層では、TCPまたはUDPのプロトコルを使用します。
TCPを使用する場合、信頼性の高い通信を実現してUDPを使用する場合、信頼性ではなく効率重視のデータ転送を実現することになります。
インターネット層主にネットワーク間のエンドツーエンドの通信のための規定。
この層では、IPが代表的なプロトコルになります。
IPにより、ネットワーク上のノードに対し自分の位置情報となる論理アドレス(IPアドレス)を割り当てられるのでエンドツーエンドの通信を実現します。
ネットワーク
インターフェース層
主に直接的に接続されたノード間の通信のための規定。
この層では、LANプロトコルはイーサネット、WANプロトコルはPPPが代表的なプロトコルです。
イーサネットでは、セグメント上のノードに対して、自分の位置情報となる物理アドレス(MACアドレス)を割り当てることができるので、ローカルでのノード間の通信が実現することになります。

TCP/IPのカプセル化と非カプセル化

では、具体的にデータの流れを見てみましょう。
その前に、皆さんはデータのカプセル化というのを覚えていますか?

忘れた方は第1回目を参考に↓
https://naruhaya.me/ccna-1/

TCP/IPでも、データを送信する場合カプセル化を行い、各層でデータにヘッダ情報が追加されます。受診側では逆にヘッダ情報を取り除く非カプセル化が行われます。

具体的には下記の図をみてください。


まず、送信側のコンピュータでは
「アプリケーション層」 ⇒ 「トランスポート層」⇒ 「インターネット層」 ⇒ 「ネットワークインターフェース層」 ⇒ 「通信ケーブル」の順番でカプセル化を行いデータが送出され、

受信側のコンピュータでは
「通信ケーブル」 ⇒ 「ネットワークインターフェース層」 ⇒ 「インターネット層」 ⇒ 「トランスポート層」 ⇒ 「アプリケーション層」の順番で非カプセル化を行って送信側で付加したヘッダを取り除いていきます。

これは、OSI参照モデルの場合と同様の考え方です。

まとめ

・TCP/IPの階層モデルとは
→インターネット通信で最も使われていおり、4階層のルールがあります。

・TCP/IPのカプセル化と非カプセル化とは
→OSI参照モデルと同様で、データを送受信する際にデータにヘッダ情報を追加して、データをやり取りしています。

IPとは

今回出てくる用語

・IPとは
・IPヘッダとは

この章から、プロトコル1つ1つの機能の特徴や説明をしていきます。

まずは、IPからですね。

そうです。IPアドレスというキーワードでもお馴染みのIPについての説明です。しっかりと覚えておきましょう。

はい!お願いします!

IP( Internet Protocol )は、TCP/IPの IP のことです。
IPは、文字通り、インターネット用のお約束事でしたね。

OSI参照モデルではネットワーク層で動作するプロトコルであり、TCP/IPの階層モデルにおいてはインターネット層で動作するプロトコルのことです。

IPは論理アドレス(IPアドレス)を各ノード(機器)に割り当てることで、各ノードを識別することができます。
※ノードとはコンピュータやルータなどの機器のことです。今後は割愛していきますので、覚えておきましょう!

このIPアドレスの宛先を確認することで、あるノードから別のノードへデータを送信することができます。

IPアドレスの宛先情報についてはIPヘッダに含まれています。それではこのIPヘッダを見ていきましょう。

IPヘッダとは

この用語のポイントを簡単に!

・ネットワーク上を流れるデータの中身の一部だよ
・IPで使う情報が書かれているよ

IPヘッダとは、IPパケットのヘッダ部のことです。
これだけだと分かりづらいですね。

なので、具体例を用いながらご説明していきます。

では、説明しますね。

まず、ここにリンゴ🍎が一つあったとします。

食べたいです。

このリンゴを私はなるほど君に送ろうとしました。

やったー!ありがとうございます!

とはいえ、むき出しのまま送るわけにもいきませんから、
ダンボール箱に入れて梱包して送ることにしました。

そうしてもらえると嬉しいですね。

ダンボールに包まれたリンゴは、トラックに積まれ、港に運ばれます。

私、どこに住んでいる設定でしょうか?

そして、トラックで港に運ばれたダンボールに包まれたなるほど君のリンゴは、トラック毎フェリーに乗せられ、海外に発送されます。

私、海外在住だったのですね!

フェリーに乗せられたトラックの中にあるダンボールに包まれたなるほど君のリングは、なるほど君の元へ向かうのでした。

めでたし、めでたし。

やったー!リンゴが届きました🍎

と、こんな感じに何か商品を送ろうとした時に、ダンボールに梱包したり、宛先を書いたりと様々な情報や工程が必要ですよね?

確かに。

実は、インターネットのネットワークを流れるデータでも、これと同じことが起こっています

えぇ!なるほど!
分かりやすい。

そして、このヘッダというのを使って、TCP/IP通信をする時のお約束ごとを決めているのです。

なるほど!だから、IPヘッダは宛先情報が書かれていると前に出てたのですね!

そうです!
では、実際にTCP/IP通信で説明してみますね。

まず送りたいデータがあります。

そこに「TCP」というお約束事に従って通信するために必要な情報がくっつけられます。
このときにくっつけられた情報は「TCPヘッダ」と呼ばれています。
この状態のデータは「TCPパケット」です。
※今回はIPヘッダの説明でしたが、TCP/IP通信では4層構造で、各層でヘッダが付けられます。なので、ここで一通り説明はしておきます。

ちなみにヘッダは「そのデータに関する説明書き」です。
「どこに運んでくださいね~」とか書いてあります。
お手紙でいう「封筒」ですね。

「TCPってお約束事で使う、そのデータに関する説明書き」が「TCPヘッダ」です。

また、パケットは「通信用に細切れにしたデータ」です。

「TCPってお約束事に従って通信できるようになったデータ」の意図で「TCPパケット」と表現します。

話が少し逸れてしまったので、戻します。

データに「TCP」というお約束事に従って通信するために必要な情報がくっつけられて、TCPパケットになりました。

次に、このTCPパケットに「IP(アイピー)」というお約束事に従って通信するために必要な情報がくっつけられます。

このときにくっつけられた情報が「IPヘッダ」です。
なお、この状態のデータは「IPパケット」と呼ばれます。

これでIPヘッダの説明は終わりですが、せっかくなのでもう少し見てみましょう。

次に、このIPパケットに「イーサネット」というお約束事に従って通信するために必要な情報がくっつけられます。
このときにくっつけられた情報は「イーサネットヘッダ」です。
この状態のデータは「イーサネットフレーム」と言います。
「パケット」が「フレーム」に代わってしまいましたが、気にしないでください。
どちらも「通信用に細切れにしたデータ」を指す用語です。

その後もいろいろくっつけられたデータは、ネットワークの線を通って、通信相手の元に向かいます。

今回挙げた例でいえば、元々あったデータは、まずTCPヘッダを付けられてTCPパケットになり、それにIPヘッダを付けられてIPパケットになり、それにイーサネットヘッダを付けられてイーサネットフレームになりました。

このように、送りたいデータにいろいろくっつけて送ることによって、通信は成り立っているのです。

ここからはおまけです。

◆ IPプロトコルの特徴
IPプロトコルには特筆すべき3つの特徴があります。

IPプロトコルの特徴説明
コネクションレス型通信ネットワーク通信に際して、事前にコンピュータ間でコネクションを確立しないで
いきなりデータ伝送をはじめる通信のことです。ただし、上位層プロトコルにTCP
を使用すれば、コンピュータ間の通信でみればコネクション型の通信となります。
ベストエフォート型通信ネットワーク通信に際して、最善の努力(ベストエフォート)は尽くすが、必ずしも
十分な品質は保証しない通信のことです。しかし上位層プロトコルにTCPを使用
することで、IPを使用した通信でもパケット損失がないように見せることができます。
階層型アドレッシングIPプロトコルにより割り当てられる論理アドレス(IPアドレス)は、コンピュータが
所属しているグループ(ネットワーク部)と、そのネットワークに接続されている
コンピュータを識別する番号(ホスト部)のこれら2階層により構成されています。

上記の通り、IPプロトコル自体は信頼性のあるものではありません。

信頼性のある通信にするかどうかは上位層のTCPに任せています。
TCPを使用すれば信頼性の高いTCP/IPの通信となります。

まとめ

・IPとは
→OSI参照モデルではネットワーク層で動作するプロトコルであり、TCP/IPの階層モデルにおいてはインターネット層で動作するプロトコルのこと。

論理アドレス(IPアドレス)を各ノード(機器)に割り当てることで、各ノードを識別することができる。

・IPヘッダとは
→IPパケットのヘッダ部のこと。ノードへの宛先情報が書かれたIPアドレスが書かれていたりする。

ARPとは

今回出てくる用語

・ARPとは
・ARPリクエストとは
・ARPリプライとは

ここまでで、データを送るルール(方法)は学べましたね。

はい!インターネット通信では、TCP/IPがよく使われているんですよね!

そうです!では、次は、データを送る相手の住所をどうやって判断しているかをお話ししていきます。

なるほど。相手の住所がわからないとデータを届けられませんもんね。

その通り!大事なポイントですので、しっかり覚えましょう!

ARPは「Address Resolution Protocol」の略で、日本語に直訳すると
Address=アドレス、Resolution=解決、Protocol=お約束ごと、ルール
つまり、アドレス・解決・プロトコルという意味です。

ARPは「このIPアドレスに対応するMACアドレスは何?」な疑問を解決するときに使うお約束事です。

ここで、事前知識として「IPアドレス」と「MACアドレス」に関して簡単に説明しておきます。

●IPアドレスとは

「コンピュータさん向けのネットワーク上の住所」です。
通信において、送信先を特定するときに使う情報です。
「198.51.100.10」のような形式になっています。

●MACアドレスとは

MACアドレスは「ネットワーク機器に割り当てられる住所」です。
通信において、データの受け渡し先を特定する際に使われます。

IPアドレスとMACアドレスは、どちらも「住所」に相当する情報です。
ただし、用途が違います

IPアドレスは「最終的にどこに届けるか」を表現するときに使う情報です。
一方のMACアドレスは「次に、どこに届けるか」を表現するときに使います。

以上を踏まえて「このIPアドレスを使っている機器のMACアドレスは何ですか~?」を調べる仕組みが「ARP(アープ、エーアールピー)」です。

言い方を変えると「IPアドレスをMACアドレスに変換する仕組み」です。

ARPの仕組み

ARPには「ARPリクエストARPリプライ」という2種類のパケットがあります。

意味はその名の通りで、
ARPリクエストが「宛先となるMACアドレスを教えてくれ〜」とリクエストを出すのに対して、ARPリプライが「これがMACアドレスだよ〜」と返信をするという意味です。

ARPは、これら2種類のパケットを利用し、宛先となるIPアドレスを持つノードのMACアドレスの情報を得ます。

具体的にみてみましょう。

下図において、コンピュータAがコンピュータBと通信したいとします。その場合は先ずコンピュータAからARPリクエストを同じセグメントの全ての端末に送信するためにARPリクエストを送信します。

このARPリクエストのパケットの中には、MACアドレスを知りたいノードのIPアドレス情報が入っています。

ARPリクエストは、全ノード(機器)に送信されます。
そして、探しているIPアドレスが自分(192.168.0.2)と分かったコンピュータBは、コンピュータBのMACアドレス情報をコンピュータAに伝えるためにARPリプライのパケットをコンピュータAだけに送ります。

これでコンピュータAはBのMACアドレスを知ることができるので、LAN上での通信ができるようになります。

まとめ

・ARPとは
→IPアドレスをMACアドレスに変換する仕組み

・ARPリクエストとは
→宛先となるノードのMACアドレスを知りたいとリクエストを出すこと

・ARPリプライとは
→ARPリクエストをもとにMACアドレスを知らせること

GARP(Gratuitous ARP)とは

今回出てくる用語

・GARPとは

◆ GARPとは

GARP(Gratuitous ARP)はARPパケットの1つであり、以下の2つの役割を持っているプロトコルです。

① 自分自身に設定するIPアドレスが重複していないかどうかを検出
② 同一セグメントのネットワーク機器上のARPキャッシュを更新させる

GARPとは、自分自身に設定するIPアドレスに対するARPのことです。通常のARPでは宛先のIPアドレスに対して宛先のMACアドレスを得ようとしますが、GARPでは自身のIPアドレスに対して自身のMACアドレス を得ようとします。

自身のMACアドレスは知っているはずなのに、なぜ、自身のIPアドレスに対してARPを行うのかは、上記の2つの役割を実現するためです。では、その2つの役割を以降で詳細に解説していきます。

◆ GARPの役割 – その1

GARPにより、自分自身にIPアドレスがアサインされる際に他のホストが同じIPアドレスを使用していないかどうかを確認することができます。

以下の①~③の流れとなります。Windows Server 2012 や Windows 8以降では、デフォルトの動作でアドレス重複確認のためのARPとGARPを送信します。

Windows Server 2008R2、Windows 7では修正プログラム(KB2811463)を適用することでアドレス重複確認のためのARPに加えて、SPAに自身のIPアドレスをセットしたGARPも送信するようになります。

◆ GARPの役割 – その2
GARPには、アドレス重複の検出の役割だけでなくもう1つの役割があります。GARPは、同じセグメントのネットワーク機器上のARPキャッシュを更新することによって、VRRPやHSRPなどで切り替わりが発生した機器とすぐに通信できるようにするためにも使用されます。


  

◆ ARP、RARP、GARPの違い

ARP / RARP/ GARP説明
ARP ・ 相手のIPアドレスからMACアドレスを得るためのプロトコル
RARP ・ MACアドレスから自身のIPアドレスを得るためのプロトコル
GARP ・ 自身のIPアドレスが重複していないかどうかを検出するプロトコル
 ・ 同一セグメントのネットワーク機器上のARPキャッシュを更新させるプロトコル

まとめ

・GARPとは
→ARPパケットの1つで、以下2つの役割がある。
 ① 自分自身に設定するIPアドレスが重複していないかどうかを検出
 ② 同一セグメントのネットワーク機器上のARPキャッシュを更新させる

ARPキャッシュとARPテーブル

今回出てくる用語

・ARPキャッシュとは
・ARPテーブルとは

◆ ARPキャッシュとARPテーブル

一度、ARPリクエストとARPリプライによりARPの情報がやりとりされるとARPキャッシュとして一定時間情報が残ります。

その場合、ARPリクエストとARPリプライの通信をすることなくLANでの通信が可能です。
ARPのキャッシュ情報は、ARPテーブルというところに保存されていて、PCの場合はコマンドプロンプトで arp -a と入力すればその情報を確認できます。

以下の画面はパソコンで arp -a を実行した結果となります。
※動的に得られたARP情報は一定時間の後に消えますが、今すぐ削除したい場合は arp -d で削除できます。

     ◆ Windows 7 の場合

Windows VISTA以降のOSでは、コマンドプロンプトの結果が日本語で表示されるようになります。また、デフォルトで静的に定義されているARPキャッシュ(青枠部分)が存在します。192.168.0.255についてはこのネットワークのブロードキャストアドレス。224.0.0.22と239.255.255.250アドレスはマルチキャストアドレス、255.255.255.255はブロードキャストアドレスです。

詳細は「ブロードキャストの種類」の通り。

arp -a の表示結果
( インターフェース: 192.168.0.2 — 0x8 )自分自身のIPアドレス情報
( インターネット アドレス )通信の宛先となるIPアドレス情報
( 物理アドレス )通信の宛先となるMACアドレス情報 ( ARPリクエストにより得られた情報 )
( 種類 )ARPが動的に学習された場合は 「 dynamic 」 と表示
ARPを手動で登録した情報は「 static 」と表示(保存される情報)


今度はルータ側のARPテーブルを見てみましょう。Cisco機器でARPテーブルを確認するためには以下のとおり”show ip arp” というコマンドを入力します。

Ciscoルータでは自分自身のIPアドレスとMACアドレスの情報もARPテーブルにのせます。

CiscoルータのインターフェースのIPアドレスは192.168.0.254となりますが、自身の情報はARPのキャッシュ時間の項目(Age)のところに「 – 」が表示されます。このキャッシュは消えません。

 

なお、Cisco IOS SoftwareのARPエントリのタイムアウトはデフォルト値で240分(4時間)となっています。


◆ ARPパケットのフォーマット

ARPパケットのフォーマットは以下の通りです。これを正確に理解して全ての項目を暗記する必要はなくARPはIPと同様にOSI参照モデルのネットワーク層で動作するという点、そしてこれはIPパケットではなくARPパケットである点、そしてこのARPパケットはイーサネットフレームにカプセル化(L2ヘッダの付加)されるという3点を理解して覚えておけば OK です。

先に紹介したARPの仕組みは完全に理解しましょう。


   

各フィールド英語表記ビット数各フィールドの説明
ハードウェアタイプHardware
Type
16 bitハードウェアの種別情報が入る。イーサネットの場合は「0x0001」。
プロトコルタイプProtocol
Type
16 bitプロトコルの種別情報が入る。IPの場合は「0x0800」の値。
ハードウェア
アドレス長
Hardware
Length
8 bitハードウェアアドレス(MACアドレス)の長さが入る。固定値で「6」になる。
プロトコル
アドレス長
Protocol
Length
8 bitプロトコルアドレス(IPアドレス)の長さが入る。固定値で「4」になる。
オペレーションOperation16 bit
ARPリクエストまたはARPリプライなのかを識別するための情報が入る。
ARPリクエストの場合は「0x0001」、ARPリプライの場合は「0x0002」となる。
送信元のMACアドレスSender MAC address48 bit
送信元のMACアドレス情報が入る。これは当然ARPのデータとして扱われる。
つまり、通信に必要な「送信元MACアドレス」の情報は「L2ヘッダ」にある。
送信元のIPアドレスSender IP address32 bit
送信元のIPアドレス情報が入る。これは当然ARPのデータとして扱われる。
つまり、通信に必要な「 送信元IPアドレス 」の情報は「 L3ヘッダ 」にある。
探索するMACアドレスTarget
MAC address
48 bit
宛先のMACアドレス情報が入る。これは当然ARPのデータとして扱われる。
つまり、通信に必要な「 宛先MACアドレス 」の情報は「 L2ヘッダ 」にある。
ARPリクエストの場合は 「 00-00-00-00-00-00 」 の値が入る。
探索するIPアドレスTarget
IP address
32 bit
宛先のIPアドレス情報が入る。これは当然ARPのデータとして扱われる。
つまり、通信に必要な「 送信元IPアドレス 」の情報は「 L3ヘッダ 」にある。
この情報が自分のものであった場合、受信したノードはARPリプライを返す。

まとめ

・ARPキャッシュとは
→ARPリクエストとARPリプライにより一定時間情報が残ることをARPキャッシュと言う

・ARPテーブルとは
→ARPキャッシュが保存されている場所

IPプロトコル番号一覧表

今回出てくる用語

・IPプロトコル番号一覧表とは

◆ プロトコル番号 ( IP Protocol Number )

プロトコル番号は、上位層のプロトコルを識別するための番号であり、IPヘッダに 8 ビット情報であります。
例えばプロトコル番号が 6 の場合はTCP、17 の場合はUDPとなります。プロトコル番号の枠は0~255です。
以下は主要なプロトコル番号表です。

    


 ※ プロトコル番号 4 は「IP in IP」のプロトコル番号であり IP のプロトコル番号ではありません。そもそも
 以下の一覧情報が、IPの上位層のプロトコル番号を識別するための番号であることを考えれば分かりますよね。
 IANAがプロトコル番号 4 のKeywordを「IP」とするから紛らわしい。「IPinIP」とすれば良かったのですが。

プロトコル番号KeywordProtocol
1ICMPInternet Control Message
2IGMPInternet Group Management
4IPIP in IP ( encapsulation )
6TCPTransmission Control
7CBTCBT
8EGPExterior Gateway Protocol
9IGPany private interior gateway
17UDPUser Datagram
41IPv6Ipv6
43IPv6-RouteRouting Header for IPv6
44IPv6-FragFragment Header for IPv6
45IDRPInter-Domain Routing Protocol
46RSVPReservation Protocol
47GREGeneral Routing Encapsulation
50ESPEncap Security Payload
51AHAuthentication Header
55MOBILEIP Mobility
58IPv6-ICMPICMP for IPv6
59IPv6-NoNxtNo Next Header for IPv6
60IPv6-OptsDestination Options for IPv6
88EIGRPEIGRP
89OSPFOSPF
94IPIPIP-within-IP Encapsulation Protocol
103PIMProtocol Independent Multicast
112VRRPVirtual Router Redundancy Protocol
113PGMPGM Reliable Transport Protocol
115L2TPLayer Two Tunneling Protocol


◆ プロトコル番号 全一覧 ( 0 ~ 255 )

プロトコル番号KeywordProtocol
0HOPOPTIPv6 Hop-by-Hop Option
1ICMPInternet Control Message
2IGMPInternet Group Management
3GGPGateway-to-Gateway
4IPIP in IP ( encapsulation )
5STStream
6TCPTransmission Control
7CBTCBT
8EGPExterior Gateway Protocol
9IGPany private interior gateway
10BBN-RCC-MONBBN RCC Monitoring
11NVP-IINetwork Voice Protocol
12PUPPUP
13ARGUSARGUS
14EMCONEMCON
15XNETCross Net Debugger
16CHAOSChaos
17UDPUser Datagram
18MUXMultiplexing
19DCN-MEASDCN Measurement Subsystems
20HMPHost Monitoring
21PRMPacket Radio Measurement
22XNS-IDPXEROX NS IDP
23TRUNK-1Trunk-1
24TRUNK-2Trunk-2
25LEAF-1Leaf-1
26LEAF-2Leaf-2
27RDPReliable Data Protocol
28IRTPInternet Reliable Transaction
29ISO-TP4ISO Transport Protocol Class 4
30NETBLTBulk Data Transfer Protocol
31MFE-NSPMFE Network Services Protocol
32MERIT-INPMERIT Internodal Protocol
33DCCPDatagram Congestion Control Protocol
343PCThird Party Connect Protocol
35IDPRInter-Domain Policy Routing Protocol
36XTPXTP
37DDPDatagram Delivery Protocol
38IDPR-CMTPIDPR Control Message Transport Protol
39TP++TP++ Transport Protocol
40ILIL Transport Protocol
41IPv6Ipv6
42SDRPSource Demand Routing Protocol
43IPv6-RouteRouting Header for IPv6
44IPv6-FragFragment Header for IPv6
45IDRPInter-Domain Routing Protocol
46RSVPReservation Protocol
47GREGeneral Routing Encapsulation
48MHRPMobile Host Routing Protocol
49BNABNA
50ESPEncap Security Payload
51AHAuthentication Header
52I-NLSPIntegrated Net Layer Security
53SWIPEIP with Encryption
54NARPNBMA Address Resolution Protocol
55MOBILEIP Mobility
56TLSPTransport Layer Security Protocol
57SKIPSKIP
58IPv6-ICMPICMP for IPv6
59IPv6-NoNxtNo Next Header for IPv6
60IPv6-OptsDestination Options for IPv6
61any host internal protocol
62CFTPCFTP
63any local network
64SAT-EXPAKSATNET and Backroom EXPAK
65KRYPTOLANKryptolan
66RVDMIT Remote Virtual Disk Protocol
67IPPCInternet Pluribus Packet Core
68any distributed file system
69SAT-MONSATNET Monitoring
70VISAVISA Protocol
71IPCVInternet Packet Core Utility
72CPNXComputer Protocol Network Executive
73CPHBComputer Protocol Heart Beat
74WSNWang Span Network
75PVPPacket Video Protocol
76BR-SAT-MONBackroom SATNET Monitoring
77SUN-NDSUN ND PROTOCOL-Temporary
78WB-MONWIDEBAND Monitoring
79WB-EXPAKWIDEBAND EXPAK
80ISO-IPISO Internet Protocol
81VMTPVMTP
82SECURE-VMTPSECURE-VMTP
83VINESVINES
84TTPTTP
85NSFNET-IGPNSFNET-IGP
86DGPDissimilar Gateway Protocol
87TCFTCF
88EIGRPEIGRP
89OSPFIGPOSPFIGP
90Sprite-RPCSprite RPC Protocol
91LARPLocus Address Resolution Protocol
92MTPMulticast Transport Protocol
93AX.25AX.25 Frames
94IPIPIP-within-IP Encapsulation Protocol
95MICPMobile Internetworking Control Protcol
96SCC-SPSemaphore Communications Sec. Pro.
97ETHERIPEthernet-within-IP Encapsulation
98ENCAPEncapsulation Header
99any private encryption scheme
100GMTPGMTP
101IFMPIpsilon Flow Management Protocol
102PNNIPNNI over IP
103PIMProtocol Independent Multicast
104ARISARIS
105SCPSSCPS
106QNXQNX
107A/NActive Networks
108IPCompIP Payload Compression Protocol
109SNPSitara Networks Protocol
110Compaq-PeerCompaq Peer Protocol
111IPX-in-IPIPX in IP
112VRRPVirtual Router Redundancy Protocol
113PGMPGM Reliable Transport Protocol
114any 0-hop protocol
115L2TPLayer Two Tunneling Protocol
116DDXD-II Data Exchange (DDX)
117IATPInteractive Agent Transfer Protocol
118STPSchedule Transfer Protocol
119SRPSpectraLink Radio Protocol
120UTIUTI
121SMPSimple Message Protocol
122SMSM
123PTPPerformance Transparency Protocol
124ISIS over IPv4
125FIRE
126CRTPCombat Radio Transport Protocol
127CRUDPCombat Radio User Datagram
128SSCOPMCE
129IPLT
130SPSSecure Packet Shield
131PIPEPrivate IP Encapsulation within IP
132SCTPStream Control Transmission Protocol
133FCFibre Channel
134RSVP-E2E-IGNORE
138-252Unassigned
253-254Use for experimentation and testing
255Reserved


◆ Ciscoで使用する拡張ACLの理解

拡張ACL (100 ~ 199) の permit/deny の後に、IPまたはIPプロトコル番号を入力することによってCiscoの拡張ACLを定義できます。

また、Cisco機器ではIPプロトコル番号を入力する代わりにキーワードを指定することができます。

例えば、TCP上でACL制限をかけたい場合 6 ではなくTCPと入力可能です。
① access-list 100 permit tcp any any eq www
② access-list 100 permit 6 any any eq 80

①と②は同じ効能のACLですが、一般的な書き方は①であり②を入力しても①に変換されてしまいます。
以下のキーワードは全てIPプロトコル上で動作する事になりますが、先に申し上げた通りIPは例外です。
※ プロトコル番号とは、IP上で動作するプロトコルのことであり、IPにはプロトコル番号はありません。


 IOS(config)#access-list 100 permit ?

 <0-255> An IP protocol number
 ahp   Authentication Header Protocol
 eigrp   Cisco’s EIGRP routing protocol
 esp   Encapsulation Security Payload
 gre    Cisco’s GRE tunneling
 icmp   Internet Control Message Protocol
 igmp   Internet Gateway Message Protocol
 ip     Any Internet Protocol
 ipinip   IP in IP tunneling
 nos    KA9Q NOS compatible IP over IP tunneling
 ospf    OSPF routing protocol
 pcp   Payload Compression Protocol
 pim    Protocol Independent Multicast
 tcp   Transmission Control Protocol
 udp    User Datagram Protocol

まとめ

・IPプロトコル番号一覧表とは
→上位層のプロトコルを識別するための番号を一覧にしたもの

ICMPとは

今回出てくる用語

・ICMPとは

◆ ICMPとは

ICMP ( Internet Control Message Protocol ) は、IPプロトコルの「エラー通知」や「制御メッセージ」を転送するためのプロトコルです。

TCP/IPが実装されたコンピュータ間で、通信状態を確認するために使用されます。

ICMPはインターネット層(OSI参照モデルのネットワーク層)で動作するプロトコルです。
※ネットワーク診断プログラムの ping(ピング)や traceroute(トレースルート)はこのICMPプロトコルを使用したプログラムです。



◆ ICMPのフォーマット

ICMPがネットワーク層で動作するとはいえ、下図の通り正確にはIPプロトコルの上位に位置しています。

   


ICMPメッセージは「タイプ」「コード」「チェックサム」「データ」の4つのフィールドにより構成。

各フィールド英語表記ビット数各フィールドの説明
タイプType8 bit ICMPメッセージの機能タイプの値が入る。値は下表を参照。
コードCode8 bit ICMPメッセージの詳細な機能コードの値が入る。値は下表を参照。
チェックサムChecksum16 bit エラーがないかどうかをチェック。
データData可変長 ICMPの「タイプ」により長さが異なる。


◆ ICMPの2種類のメッセージ

ICMPメッセージは大きく2種類あります。1つは問い合わせ(Query)のメッセージです。このQuerryによりあるノードから特定のノードに対する通信状態を確認することができます。

このQueryを利用した代表的な通信プログラムがpingとtracerouteです。

もう1つは、エラー通知(Error)のメッセージです。

ノード間の通信で経路途中でパケットが廃棄されたりした場合に、その原因を送信元のノードにエラー通知します。

主なICMPメッセージの「タイプ」と「コード」の組み合わせ一覧
タイプコード内容意味種類
0
( Echo Reply )
0Echo Replyエコー応答Query
3
(Destination
Unreachable)
0Net Unrechable宛先ネットワークに到達できないError
1Host Unreachable宛先ホストに到達できない
2Protocol Unreachableプロトコルに到達できない
3Port Unreachableポートに到達できない
4Fragment Needed and DF was Setパケットの分割が必要であるが
分割禁止フラグ(DF)が
立っているので、パケットを破棄
5Source Route Failedソースルーティングが失敗
6Destination Network Unknown宛先ネットワークが不明
7Destination Host Unkown宛先ホストが不明
8Source Host Isolated送信元ホストが使用されていない
9Communication with Destination
Network is Administratively Prohibited
宛先ネットワークとの通信が管理上
禁止されている
10Communication with Destinaltion
Host is Administratively Prohibited
宛先ホストとの通信が管理上
禁止されている
11Destination Network Unreachable for ToS指定された優先制御値では、
宛先ネットワークに到達できない
12Destination Host Unreachable for ToS指定された優先制御値では、
宛先ホストに到達できない
13Communication Administratively Prohibited通信が管理上が禁止されている
14Host Precedence Violationホストの優先度が違反している
15Precedence cutoff in effect優先制御が事実上切断された
5
Redirect )
0Redirect Datagram for the Networkネットワークへの最適経路変更を通知Error
1Redirect Datagram for the Hostホストへの最適経路変更を通知
2Redirect Datagram for the ToS and Network優先制御でネットワークへの最適経路を通知
3Redirect Datagram for the ToS and Host優先制御時にホストへの最適経路を通知
8
( Echo Request )
0Echo Requestエコー要求Query
11
( Time Exceeded )
0Time to Live exceeded in Transit転送中にTTLの値が超過したError
1Fragment Reassembly Time Exceeded分割パケットを組み立て中に時間が超過した

まとめ

・ICMPとは
→IPプロトコルの「エラー通知」や「制御メッセージ」を転送するためのプロトコル

ICMPとは – ping コマンド

今回出てくる用語

・ICMPのpingコマンドとは

◆ ping(ピング)とは
ping とは、ICMPプロトコルを使用したネットワークの診断プログラムです。

PCやネットワークの機器などで実際に使用するコマンドも “ping” という単語を使用します。

このpingにより宛先となるノードと通信できるか(IPの到達性があるか)どうかを確認することができます。

pingが成功すれば送信元と宛先とでIPの通信に問題がないことが証明されて、pingが失敗すればIP上の通信に問題があると判断できます。

◆ Windows の PING – Reply From(からの応答)
以下はWindowsのコマンドプロンプトでpingを実行した結果。

「ping 192.168.0.1」と入力してEnterを押した結果です。

192.168.0.1に ping が成功しており、pingコマンドを実行したPCとIPでの通信ができることを証明しています。

Windowsの場合は、デフォルトで4回のICMPメッセージが送信されます。


  


 ① Windows 7 以降の表示( ping 192.168.0.1 の実行結果)

192.168.0.1 に ping を送信しています 32 バイトのデータ:
192.168.0.1 からの応答:バイト数 = 32 時間 <1ms TTL=128
192.168.0.1 からの応答:バイト数 = 32 時間 <1ms TTL=128
192.168.0.1 からの応答:バイト数 = 32 時間 <1ms TTL=128
192.168.0.1 からの応答:バイト数 = 32 時間 <1ms TTL=128

Reply from 192.168.0.1: byte=32 time<1ms TTL=128( 英語表示の場合 )
Reply fromPINGが成功した場合に表示。
byte=32ICMPパケットのデータサイズ。デフォルトで32byteのデータが送信。
time<1msICMPパケットの応答までに経過した時間。今回は1ミリ秒(0.001秒)時間を要したことが分かる。
TTL=128何台のLayer3機器を通過することができるのかを示す。残り128台通過できることが分かる。


◆ Windows の PING – Request time out(要求がタイムアウトしました)

以下のように「要求がタイムアウトしました」と表示される場合、宛先の機器と通信できないことを意味しています。

ただし、WindowsファイアウォールのようにICMPだけをブロックしているケース、経路途中にあるルータなどでセキュリティ上の観点でICMP通信を制限しているケースなどでは、このメッセージが出力されても通信できないのはICMPの通信だけであり、TCP/IPにおける通信が問題ないケースがあります。


 


 ② Windows 7 以降の表示( ping 192.168.0.1 の実行結果)

192.168.0.1 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。




◆ Windows の PING – Destination net unreachable(宛先ネットワークに到達できません)

以下のように「宛先ネットワークに到達できません」と表示されている場合はPINGが失敗しています。
172.16.0.1にPINGをした結果、172.16.0.1からの応答はありませんが、代わりに 192.168.0.254 が
応答している状態です。

これは、192.168.0.254 まではパケットが到達したけれど、ルータの時点でルーティング情報がなくて、宛先ネットワークに対してパケット転送できなかったことを示しています。
※ Ciscoルータのインターフェースに、ICMPを拒否するアクセスリストを適用している時も、同じICMPメッセージをPCは受信。

  


③ Windows 7 以降の表示( ping 172.16.0.1 の実行結果)

172.16.0.1 に ping を送信しています 32 バイトのデータ:
192.168.0.254 からの応答:宛先ネットワークに到達できません。
192.168.0.254 からの応答:宛先ネットワークに到達できません。
192.168.0.254 からの応答:宛先ネットワークに到達できません。
192.168.0.254 からの応答:宛先ネットワークに到達できません。

◆ Windows の PING – Destination host unreachable(宛先ホストに到達できません)

以下のように「宛先ホストに到達できません」と表示されている場合もPINGが失敗しています。この
エラーは「net」ではなく「host」です。このエラーメッセージは192.168.0.254のルータまでは到達 して宛先のネットワークへの到達性があるが、該当する機器(ホスト)に到達できない事を意味します。
または、この機器(172.16.0.1)へのルーティングが見つけられないことを意味するメッセージです。

※ Ciscoルータの場合、172.16.0.1へのルーティングが見つけられないと、pingを実行したホストに対してこのメッセージを返答。


 


④ Windows 7 の表示( ping 172.16.0.1 の実行結果)

172.16.0.1 に ping を送信しています 32 バイトのデータ:
192.168.0.254 からの応答:宛先ホストに到達できません。
192.168.0.254 からの応答:宛先ホストに到達できません。
192.168.0.254 からの応答:宛先ホストに到達できません。
192.168.0.254 からの応答:宛先ホストに到達できません。

◆ Windows の PING – TTL expired in transit(転送中にTTLが期限切れになりました)

その他のエラーメッセージに「 192.168.0.254からの応答: 転送中にTTLが期限切れになりました 」があります。

TTLの超過によるエラーを 192.168.0.254 からpingを実行したホストに伝達しています。
つまり、宛先にパケットを届けるために128台以上のルータ(L3)を経由することが必要となった結果、途中でパケットが廃棄されたことを意味します。

しかし、このエラーメッセージが出力される場合にはルータ側の設定ミスによるルーティングループが原因であることがほとんどです。

⑤ Windows 7 の表示( ping 172.16.0.1 の実行結果)

172.16.0.1 に ping を送信しています 32 バイトのデータ:
192.168.0.254 からの応答:転送中に TTL が期限切れになりました。
192.168.0.254 からの応答:転送中に TTL が期限切れになりました。
192.168.0.254 からの応答:転送中に TTL が期限切れになりました。
192.168.0.254 からの応答:転送中に TTL が期限切れになりました。

まとめ

・ICMPのpingコマンドとは
→ICMPプロトコルを使用したネットワークの診断プログラムのこと

ICMPとは – ping オプションコマンド

今回出てくる用語

・ICMPのpingオプションコマンドとは

◆ pingのオプション
pingコマンドは「ping + 宛先IPアドレス」に実行可能なコマンドですが、この後にオプションの値を追加することができます。以下の通り「 ping 」とだけ入力すれば、オプションの情報が出力されます。

 


例えば、ネットワーク通信試験を実施する際にpingを打ち続けたいとします。その場合は「 -t 」の
オプション値を入力すれば実現できます。この ping 実行を停止したい場合「Ctrl + C」を押せばOK。

 


例えば、pingのデータ部のサイズをデフォルトの32byteではなく1500byteで送信したい場合は以下。

 


よく使用されるpingオプションは上記の2つと「-f」です。pingオプションの全ての説明は以下の通りです。

オプションオプションの説明
-tなし中断されるまで指定したホストに対してpingを実行し続ける。中断するためには「Ctrl+C」を押す。
-aなしpingの宛先に指定したIPアドレスである場合、DNSから逆引きしてホスト名を表示。
-n送信するICMPエコー要求の数。デフォルトの数は 「4」 回。
-lサイズICMPパケットのデータ部のサイズ。デフォルトのサイズは「32」バイト。
-fなしIPパケットの分割(フラグメント)を禁止する。デフォルトはフラグメントを許可。
-iTTLIPパケットのTTLを指定した値に変更する。デフォルトのTTLは「128」。
-vTOSIPパケットのTOSを指定した値に変更。
-rなしIPパケットのオプション部に経由したルータのアドレスを記録。
-sなしIPパケットのオプション部に経由したルータのアドレスと時間を記録。
-jhost-list経由すべきルータのアドレスを最大9個まで指定できる。指定されていないルータも経由できる。
-khost-list経由すべきルータのアドレスを最大9個まで指定できる。指定されていないルータは経由しない。
-wミリ秒pingのタイムアウトの時間を指定する。デフォルトは「4000」ミリ秒。つまり4秒。

※ Cisco IOSで実行するpingのタイムアウトのデフォルト値は2秒です。詳細はCisco IOS – ping / trace / debug をご参照下さい。

◆ pingの1回目が “Request timed out.” となる理由

以下のping結果は172.16.0.1のPCから192.168.0.1のPCに対してpingを実行した結果です。

1回目のICMPエコー要求が失敗していますが、その後は全てのエコー応答が得られています。

このような現象は異なるネットワーク間でPINGを行う際に、ホストでルータのARP情報が得られていない時に発生します。

 

異なるネットワークと通信する場合、ホストはルータのMACアドレス情報が必要となるのでルータに対しARPを実行します。

MACアドレス情報が得られれば、デフォルトゲートウェイへパケットを送出しはじめますが、このARPを行っている間にPINGが失敗してしまう訳です。

当然異なるネットワーク間の通信でも一度ルータのARP情報を得て、ARPテーブルにキャッシュされている限りはこのような現象は発生しません。

◆ ping の宛先アドレスにドメイン名を指定
pingコマンドでは、例えば “ping 192.168.0.254” のように宛先IPアドレスを実行してpingを行う方法と例えば “ping www.yahoo.co.jp” のように宛先IPアドレスではなく、ドメイン名を指定して ping を実行できます。

前提として、パソコン側で正しくDNSサーバのアドレスを指定していることが必要となります。
DNSサーバで名前解決( www.yahoo.co.jp等のホスト名からIPアドレスを導くこと )が行われています。

   

まとめ

・ICMPのpingオプションコマンドとは
→pingコマンド後に追加できる、オプションコマンド。通信の詳細な情報がわかる。

ICMPとは – tracerouteコマンド

今回出てくる用語

・ICMPのtracerouteコマンドとは

◆ tracerouteとは

traceroute (トレースルート)は、ICMPプロトコルを使用したネットワークの診断プログラムです。
使用するコマンドはWindowsの場合は tracert、Cisco機器の場合は tracerouteというコマンドです。
このコマンドによって、あるホストから宛先のホストまでに到達するためにどのネットワーク経路を使用しているのかが分かり、結果、宛先ノードまでのネクストホップアドレスの一覧が表示されます。
※ ネクストホップアドレスとは、ルーティングで次にパケットを転送する隣接ルータのIPアドレス。

◆ tracerouteが使用するプロトコル

tracerouteは、ICMPプロトコルまたはUDPプロトコルのどちらかを使用します。

WindowsのtracertはICMPプロトコルを使用しますが、LinuxやCisco IOSではUDPを使用します。

このようにOSにより使用プロトコルは異なるので、WindowsでのtracertとCisco IOSでのtracerouteの結果が異なる場合がある。
※ ルータでのpingはOK、しかしtracerouteはNGという結果が得られた場合、上記内容を思い出そう。


◆ tracert の仕組み

以下解説のtracerouteの仕組みは「ICMP」を使用した場合のものですが、「UDP」を使用する場合でもその考え方は基本的に同じ。

下図でホストAからホストBにWindows上のコマンドプロンプトで tracert 192.168.3.100 を実行します。
tracerouteではICMPパケットを送る際に、IPヘッダのTTL値を「1」にします。1台目を経由するルータがこのパケットを受信するとTTL値が「0」になるので、ルータはパケットを破棄してICMP Time Excceedのメッセージを送信します。

なぜこのような事をするのかというと、このICMPメッセージを受信することでホストAは、宛先の機器に到達するまでに経由するルータが分かる(通過する伝送経路が分かる)からです。


   

次に、ホストAはTTL値を1つ増やして「2」にします。

ルータAでTTL値が1つ減らされ、ルータBでTTL値が1つ減らされるので、今度はルータBの時点でTTL値が「0」になります。

そうなると、先ほど同様に、今度はルータBがICMP Time ExceededのメッセージをホストAに送信します。これにより、2台目の経由ルータは「 192.168.2.2 」だと分かります。

これによりホストAは、ルータAとルータBまで通信できると分かります。


  

ホストAは、今度はTTL値をさらに1つ増やして「3」にします。

ルータAで、TTL値が1つ減らされて、ルータBでTTL値が1つ減らされますが、残り「1」のTTL値は減らされないのでホストBにICMPエコー要求が到達します。

ICMPエコー要求を受信したホストBは、ホストAにICMPエコー応答のメッセージを送信します。

ICMPエコー応答を受信したホストAは、tracertによるICMPパケットの送出をこれで終了。

  

以下は、ホストAでtracertを実行した結果です。

応答時間(ミリ秒)が3回表示されているが、Windowsでは1回のtracertの実行につき、デフォルトで3回パケットが送信されるので、3回の応答時間が表示されています。
表示されているアドレスは宛先機器までの伝送経路にある経由するルータのアドレスです。

ここに表示されているアドレスがネクストホップアドレス。

ただし最後のIPアドレスは宛先機器である「ホストB」となります。


ちなみに、pingコマンドと同様にtracertコマンドでも、以下のように宛先IPアドレスではなく、代わりにドメイン名を指定しtracertを実行できます。

前提としてPCで正しいDNSサーバを指定する必要があります。
 C:\> tracert www.yahoo.co.jp

まとめ

・ICMPのtracerouteコマンドとは
→あるホストから宛先のホストまでに到達するためにどのネットワーク経路を
使用しているのかが分かり、結果、宛先ノードまでのネクストホップアドレスの一覧が表示される。

TCPとは

今回出てくる用語

・TCPとは
・ポート番号とは

◆ TCPとは

TCP (Transmission Control Protocol) は、IPと同様にインターネットにおいて標準的に利用されているプロトコルです。

TCPは、IPの上位プロトコルでトランスポート層で動作するプロトコル。ネットワーク層のIPとセッション層以上のプロトコル(例:HTTP、FTP、Telnet) の橋渡しをする形で動作しています。

TCPは、信頼性の高い通信を実現するために使用されるプロトコルであるのに対して、同じく、IPの上位プロトコルのUDPは信頼性が高くはないが、高速性やリアルタイム性を求める通信に使用されるプロトコル。
このようにどちらかが優れているということではなく、通信特性によりTCPまたはUDPを使い分けされます。

◆ ポート番号とは
ポート番号とは、コンピュータが通信を行うために通信先のアプリケーションを特定するための番号のこと。
コンピュータ間の通信で通信する宛先のIPアドレスが分かれば、そのIPアドレスにデータを送信できますがそのデータを受信したコンピュータが、どのアプリケーションでそれを受信するのか判断するために必要です。

例えば下図の通り、コンピュータ上でWebブラウザとメーラーを起動させていたとします。

Webブラウザでインターネットの閲覧をするために、コンピュータ内でデータをWebブラウザに送り届ける必要があります。
TCPヘッダにポート番号情報が付加することで、どのアプリケーションなのかを識別しこれを実現しています。



ポート番号は「0~65535」の範囲で割り当てられます。このポート番号は以下の3つに分類されています。

ポート番号のタイプポート番号の範囲説明
ウェルノウンポート番号0~1023 IANAで管理。サーバのアプリケーションに割り当てられるポート番号。
登録済みポート番号1024~49151 IANAで管理。独自に作成したアプリケーションに割り当てられるポート番号。
ダイナミックポート番号49152~65535 クライアント側のアプリケーションに自動的に割り当てられるポート番号。


ウェルノウン(well-known)ポート番号は“よく知られた”ポート番号であるので、サーバのアプリケーションに割り当てられます。登録済みポート番号は独自に作成されたアプリケーションに割り当てられます。

これはIANAにより管理されています。ダイナミックポート番号はアプリケーションプロセスの要求に応じて動的に割り当てられるポート番号のことです。

ダイナミックポート番号はクライアント側のアプリで使用される番号。
※ 登録済みポート番号は一般的にサーバに割り当てられますが、登録済みポート番号がクライアントに割り当てられる時もあります。

下図でクライアントPCがWebページを開こうとすると、クライアントPCは宛先ポート番号を「80」と指定しアクセスを行います。WebブラウザとWebサーバのデータ送受信はHTTPプロトコル(ポート番号80)を使用。

そして、サーバからのWebページの情報を得るためにはクライアントPC側にもポート番号が必要です。

このポート番号はアプリケーションがランダムに動的に割り当てます。

今回の場合、Webブラウザが自身のポート番号を54321と割り当てたので、それを自身のポート番号(送信元ポート番号)としてパケットを送出します。

WebサーバがクライアントPCからのパケットを受信すると、送信元のIPアドレスと宛先のポート番号の情報 が分かるので、この送信元の情報を宛先の情報にしてデータを送り返すことにより双方向の通信が成立します。

  


なお、クライアントPCが複数のWebブラウザを開いている場合、そのWebブラウザごとに正しくWebページを表示させるためにWebブラウザごとに異なるポート番号がランダムに割り当てられます。

下図はイメージ図。

    

まとめ

・TCPとは
→信頼性の高い通信を実現するために使用されるプロトコル

・ポート番号とは
→コンピュータが通信を行うために通信先のアプリケーションを特定するための番号のこと

TCPとは – TCPヘッダ

今回出てくる用語

・TCPヘッダとは

◆ TCPヘッダのフォーマット

TCPセグメント(TCPパケット)は以下の通り「TCPヘッダ」と「TCPペイロード」で構成されます。
TCPヘッダの中身は以下です。TCPペイロードはTCPより上位のプロトコルを含むデータのことです。

    

各フィールドビット数各フィールドの説明
送信元ポート番号16 bit送信元のポート番号の値。
宛先ポート番号16 bit宛先のポート番号の値。
シーケンス番号32 bit送信したデータの順序を示す値。「相手から受信した確認応答番号」の値。
確認応答番号32 bit確認応答番号の値。「相手から受信したシーケンス番号」+「データサイズ」。
データオフセット4 bitTCPヘッダの長さを示す値。
予約6 bit全ビット「0」が入る。将来の拡張のために用意されている。
コントロールフラグ6 bitURG、ACK、PSH、RST、SYN、FINの6つのビットで構成されている。
これらのビットは「1」の値が入る(フラグを立てる)場合に意味をなす。 
ウィンドウサイズ16 bit受信側が一度に受信することができるデータ量を送信側に通知するために
使用される。送信側は、この値のデータ量を超えて送信することはできない。
チェックサム16 bitTCPヘッダとデータ部分のエラーチェックを行うために使用される値が入る。
緊急ポインタ16 bitコントロールフラグのURGの値が「1」である場合にのみ使用されるフィールド。
緊急データの開始位置を示す情報が入る。
オプション可変長TCPの通信において、性能を向上させるために利用する。例えば
TCPコネクションの際に、MSSを決定するために使用されたりします。
パディング可変長TCPヘッダの長さを32ビットの整数にするために
詰め物(Padding)として空データの 「 0 」 の値を入れることにより調整する。

 以下の表は、TCPヘッダのフィールドにある「コントロールフラグ」の6 bitの詳細となります。

コントロールフラグの詳細
ビット値が「1」である(フラグが立っている)時の意味
 URG (Urgent)緊急に処理すべきデータ含まれていることを意味する。
 ACK (Acknowledgement)確認応答番号のフィールドが有効であることを意味する。コネクション確立時以外は値が「1」。
 PSH ( Push )受信したデータをバッファリングせずに、即座にアプリケーション(上位)に渡すことを意味する。
 RST ( Reset )コネクションが強制的に切断されることを意味する。何らかの異常を検出した場合に送信される。
 SYN ( Synchronize )コネクションの確立を要求することを意味する。
 FIN ( Fin )コネクションの正常な終了を要求することを意味する。


これらのTCPヘッダの値はTCPの特徴である「ポート番号を使用」、「コネクションの確立、維持切断」「順序制御」、「再送制御」、「ウィンドウ制御」、「フロー制御」で、しっかりと生かされています。

・TCPヘッダとは
→TCPパケットの一部。フォーマット内部構造は上記を参照。

TCPとは – 3ウェイハンドシェイク

今回出てくる用語

・TCPの3ウェイハンドシェイクとは

◆ TCP – コネクションの確立と切断

TCPはコネクション型プロトコル(通信相手の応答があってはじめて通信を開始する)であることから、データ転送を行う前にコネクションの確立を行います。

このTCPにおいて使用されるコネクションの確立のことを3ウェイハンドシェイクといいます。以下の手順の通り “3回のやりとり” によって確立されます。


        



① ホストAからホストBにコネクション確立の要求をします。

つまり、TCPヘッダの中にあるSYNビットは「1」でありACKビットが「0」であると分かります。

シーケンス番号は最初だけはランダムな値が割り当てられます。

今回は例として「0」とします。確認応答番号(いわゆるACK番号)は通信の開始にはありません。

② ホストBはホストAのコネクション要求に応えます。

そしてホストBからもコネクション確立を要求します。
つまりSYNは「1」ACKは「1」であることが分かります。シーケンス番号は最初だけランダムな値が割り当てられます。

例えば「0」として、確認応答番号は「相手から受信したシーケンス番号」+「データサイズの値」ですが、3ウェイハンドシェイクでは「相手から受信したシーケンス番号」に「1」を加算した値となります。

③ ホストAもホストBからのコネクション要求に応えます。SYNは「0」、ACKは「1」であると分かります。
シーケンス番号は「相手から受信した確認応答番号」なので「1」となり、確認応答番号は②と同じ考え方なので「相手から受信したシーケンス番号」に「1」を加算した値となります。

つまり、今回の場合は「1」です。

次に、3ウェイハンドシェイクにより確立したコネクション上でデータをやりとりする時の流れを見てみます。

         


④ ホストAからホストBに例えば100byteのデータを送ります。

データ転送では、3ウェイハンドシェイク後のシーケンス番号と確認応答番号の値が引き続き使用します。

従って、上図の④のとおり両方とも「1」です。

⑤ 今度はホストBからホストAに例えば1300byteのデータを送ります。

シーケンス番号は、「相手から受信した確認応答番号」を使用するので「1」となります。

確認応答番号は「相手から受信したシーケンス番号」にデータサイズを加えた値なので「101」となります。

⑥と⑦も同じ考え方なので上図で記した値となります。
最後に、データのやりとりが完了してから通信を終了(コネクションの切断)する時のやりとりを見てみます。
コネクションの接続は “3回”のやりとりでしたが、コネクションの切断は “4回” のやりとりが必要となります。

        

⑧ ホストBからホストAへのデータ送信が完了したので、ホストBはコネクションの切断要求を送信します。
従ってFINビットが「1」となります。

今回は、⑦でホストBからAへデータを送信した後、さらに連続してホストBからAへパケットを送信しています。

この場合のシーケンス番号は「直前の自分のシーケンス番号」+ 「自分が送信したデータサイズ」となります。

シーケンス番号は「2601」。確認応答番号はそのまま「301」。

⑨ FINを受信したホストAはコネクションの切断要求への確認応答をします。

「ACK」や「FIN」は上図通り。
シーケンス番号は「相手から受信した確認応答番号」だから「301」となり、確認応答番号は、今回のようにFINへの確認応答の場合「相手から受信したシーケンス番号」に「1」を加算します。

つまり「2602」となる。

⑩ ホストBもコネクションの切断要求を送信します。

この場合、シーケンス番号と確認応答番号はそのまま。

⑪ FINを受信したホストBはコネクションの切断要求への確認応答をします。

シーケンス番号は「相手から受信した確認応答番号」だから「2602」となり、確認応答番号は、今回のように FIN への応答確認の場合は「相手から受信したシーケンス番号」に「1」を加算して「302」となります。TCPコネクションが正常に終了。

◆ TCP – 3ウェイハンドシェイクの際に伝えられる「MSS」について
3ウェイハンドシェイク時に伝えられる情報の1つとして、TCPヘッダのオプションにある「MSS」があります。
MSS(Maximum Segment Size)は、1つのTCPパケットで運ぶことができるデータ量のことを指しています。
一般的なTCP/IP環境での最大サイズのEthernetフレーム(1518byte)では、MSSは「1460バイト」になります。
従ってホストAからホストBに14600バイトのTCPデータを送信したい場合、10回のTCPパケットを送出します。


MSSは、3ウェイハンドシェイクの際のSYNパケットで双方向に伝えられて、両者の値のうち小さい値が採用されて双方向通信の際に使用されます。

例えばホストAがMSSを「1460」と通知し、ホストBはMSSを「2000」と通知するとします。

その場合、ホストAとBとの通信で使用するMSSは「1460」となり双方向通信をします。

まとめ

・TCPの3ウェイハンドシェイクとは
→TCPにおいて使用されるコネクションの確立のこと

TCPとは – 順序制御、再送制御

今回出てくる用語

・TCPの順序制御とは
・TCPの再送制御とは

◆ TCP – 信頼性の確保(順序制御)

TCPでは全てのTCPパケットにシーケンス番号を付与します。

以下では、ホストAからホストBに対して2600byteのデータを分割して送信しています。

TCP/IPでは、一度に送信できるデータのサイズ(MSS)に上限があるためこのようにデータの分割を行う必要があります。

以下では1300バイトと1300バイトに分割していますが、シーケンス番号の値があるため受信側はもとのデータを正しく組み立てられます。


  

◆ TCP – 信頼性の確保 ( 再送制御 )

TCPでは、データ送信の度に無事にデータが到達したことを知らせるために確認応答(ACK)を行います。
ホストAからBへデータを送り無事に届けば、ホストBはAに確認応答としてACKビットを立てて返信します。
または、この確認応答がない場合はネットワーク伝送経路の途中でパケットが破棄された可能性があります。
TCPでは一定時間内にACKが帰ってこない場合は、パケットが破棄されたと判断して再度データを送ります。

   

まとめ

・TCPの順序制御とは
→TCPパケットにシーケンス番号を付与し、一度に送信するデータ量を制御して安全に送信を行うこと

・TCPの再送制御とは
→一定時間内にACKが帰ってこない場合は、パケットが破棄されたと判断して再度データを送ること

TCPとは – ウィンドウ制御、フロー制御

今回出てくる用語

・TCPのウィンドウ制御とは
・TCPのフロー制御とは

◆ TCP – 通信効率の向上 ( ウィンドウ制御 )

TCPでは、ACKの応答確認により信頼確保されていますが、パケット送信の度にACKを送信していては さすがに通信速度が遅くなってしまいます。

そこでTCPヘッダにあるウィンドウサイズを利用することで この問題を解決しています。

ウィンドウサイズとはACKを待たずに一度に送信できるデータ量のことです。

例えば3900バイトのデータを3回に分けて送信する時、1300バイトのデータを送るたびにACKを待っていると通信速度は遅いですが、ウィンドウサイズが「3900」であることを相手側のホストに伝えた場合、送信側はACKを待つことなく3900バイトのデータを送信することができるので、通信速度が速まります。

  



しかし、これではウィンドウサイズ分のデータを送信した後、ACKを受信するまでの間の待ち時間が発生してしまいます。

ウィンドウ制御では、この待ち時間を解消するためにスライディングウィンドウと呼ばれる技術を使用しています。

スライディングウィンドウでは、受信側(ホストB)はデータを受信する度にACKを送ります。

最初のACKを受信したらその分のウィンドウをスライドさせるので送信側(ホストA)はそのACKを待つことなくウィンドウサイズ分(3900バイト)のデータを下図の図解通り送り続けられます。

  


◆ TCP – 通信効率の向上 ( フロー制御 )

ウィンドウサイズの値は、3ウェイハンドシェイクの際にお互いに伝えられます。

送信側ホストは受信側のウィンドウサイズが分かれば、そのサイズになるまでACKを待つことなく送信することができます。

そしてスライディングウィンドウにより実際には連続的にデータを送り続けられます。

これがウィンドウ制御です。

しかし、多数の送信側ホストが同時にデータを送信して負荷が高まると、受信側はデータを処理しきれない場合が発生します。

このような場合、受信側はウィンドウサイズを小さくしその値を送り直します。

そして受信可能な状態になればウィンドウサイズを大きくして通知します。

この処理の事をフロー制御と言います。


まとめ

・TCPのウィンドウ制御とは
→TCPヘッダにあるウィンドウサイズを利用することで通信速度を早くする制御のこと

・TCPのフロー制御とは
→送信負荷が高まった時に、受信側はウィンドウサイズを小さくし、受信可能な状態になればウィンドウサイズを大きくして通知する制御のこと

UDPとは

今回出てくる用語

・UDPとは

◆ UDPとは

UDP (User Datagram Protocol) とは、IPやTCPなどと同様にインターネットにて標準的に利用されているプロトコルです。

UDPはIPの上位プロトコルでトランスポート層で動作するプロトコル。

ネットワーク層のIPとセッション層以上のプロトコル( 例:DNS、NTP、DHCP )の橋渡しをするかたちで動作しています。

UDPのポート番号の考え方についてはTCPと同様です。

しかし、TCPのように3way handshake、確認応答順序制御、再送制御、ウィンドウ制御、フロー制御などの機能はなく、ほとんど何もしないプロトコルです。
UDPは、TCPと比べて信頼性が高くはないが、速さやリアルタイム性を求める通信に使用されるプロトコル。

◆ UDPヘッダのフォーマット

   

各フィールドビット数各フィールドの説明
送信元ポート番号16 bit送信元のポート番号の値。
宛先ポート番号16 bit宛先のポート番号の値。
パケット長16 bit「UDPヘッダ」の長さと「UDPデータ」の長さを合計サイズの値。
チェックサム16 bitUDPヘッダとデータ部分のエラーチェックを行うために使用される値。


◆ UDPの特徴

UDPは、コネクションレス型のプロトコルであることから、TCPに比べると信頼性がないものの高速に転送を行うことができます。

また、UDPヘッダサイズ(8byte)が少ない事から、その分アプリケーションのデータを多く送受信することができます。

ただし、パケットが到達する保証がないことから、パケットロスなどの場合アプリケーション側で再送処理をして通信を成立させるかパケットロスが容認できるアプリの必要があります。

◆ UDPの用途

① 音声や映像などのリアルタイム性のあるデータを転送する場合
音声のデータを転送する場合、TCPのようにデータを送るごとに確認応答をしているようでは、音声通話が途切れたり、聞き取れなかったりしてしまいます。

このようなリアルタイム性が求められるデータ通信では信頼性よりも高速なデータ転送の方が求められます。

従って、音声通信ではUDPの方が品質が高まります。

② 複数の相手に同じデータを同時に転送する場合
TCP通信では、通信相手と1対1でコネクションを確立する必要があるのでユニキャスト通信しかできません。
1つのパケットを複数の宛先に送るようなマルチキャスト通信やブロードキャスト通信では、TCPを使用することができません。

このように1対Nの通信を行うためにはコネクション確立の必要がないUDPが適しています。

③ 信頼性が必要なく、少量のデータ転送をしたい場合
例えばDNSサーバとのクライアントPCとのデータ通信は、クライアントPCからの1回の問い合わせとそれに対するDNSサーバからの応答1回のデータ伝送で通信が完了します。このようなやりとりに3way handshakeで3回のやりとりをしていては効率が悪いです。

少量のデータ転送で完了する通信にはUDPが適しています。

◆ TCPとUDPとの比較

プロトコルTCPUDP
通信方式コネクション型コネクションレス型
信頼性高い低い
転送速度低速高速
上位プロトコルHTTP、Telnet、FTP、POP・・・DNS、NTP、DHCP,SNMP ・・・
主な用途 Webの閲覧、メールの送受信、ファイル転送、共有 音声通話、Videoストリーミング、マルチキャスト通信
 ブロードキャスト通信、少量のデータ転送
主な特徴・ ポート番号を利用した上位プロトコルへの
  データの受け渡し
・ コネクションの確立、維持、切断
・ 順序制御、再送制御、ウィンドウ制御、フロー制御
・ ポート番号を利用した上位プロトコルへの
  データの橋渡し
・ オーバーヘッドが少ない ( ヘッダが8byte )
・ 信頼性がない (パケットロスしても再送しない等)

まとめ

・UDPとは
→IPの上位プロトコルでトランスポート層で動作するプロトコル。ネットワーク層のIPとセッション層以上のプロトコル( 例:DNS、NTP、DHCP )の橋渡しをするかたちで動作するプロトコル

TCP/UDPポート番号一覧表

今回出てくる用語

・TCP/UDPポート番号とは

◆ ポート番号とは

ポート番号はTCP/UDP上のサービスを識別するための番号。TCP/UDPヘッダに16ビットの情報にあります。
例えば、ポート番号が 25 はSMTPであり、69 はTFTPとなります。ポート番号の枠は 0 ~ 65535 ですが、ポート番号には以下の3つの種類があります。

ポート番号の種類ポート番号ポート番号の意味
① Well Known Port Number0 ~ 1023IANAで正式に登録されているポート番号
② Registered Port Number1024 ~ 49151IANAで正式に登録されているポート番号
③ Dynamic Port Number49152 ~ 65535IANAで正式に登録されていないポート番号

①、②のポート番号はサービスを提供するサーバ側で主に使用されるのに対して、③はクライアント側で主に使用されるポート番号。

①ウェルノウンポート番号はサーバのアプリケーションに割り当てられます。②登録済みポート番号は独自に作成されたアプリケーションに割り当てられます。

③のダイナミックポート番号はサーバとのプロセスに応じクライアントのアプリケーションに動的に割り当てられます。

②はクライアントに割り当てる時もあります。

TCP/UDPのポート番号について詳しく知りたい方、TCP/IPをはじめから分かりやすく知りたい方はマスタリングTCP/IPがお勧めです。
マスタリングTCP/IPはネットワークエンジニア、サーバエンジニアなど全てのIT技術者が大絶賛しているTCP/IP参考書のバイブル本。

◆ TCPの代表的なウェルノウン番号

ポート番号TCP/UDPサービス名説明
1TCPtcpmuxTCP Port Service Multiplexer
7TCPechoEcho
9TCPdiscardDiscard
11TCPsystatActive Users
13TCPdaytimeDaytime (RFC 867)
17TCPqotdQuote of the Day
19TCPchargenCharacter Generator
20TCPftp-dataFile Transfer [Default Data]
21TCPftpFile Transfer [Control]
22TCPsshSSH Remote Login Protocol
23TCPtelnetTelnet
25TCPsmtpSimple Mail Transfer
37TCPtimeTime
42TCPnameserverHost Name Server
43TCPnicnameWho Is
49TCPtacacs+TACACS+
53TCPdomainDomain Name Server
70TCPgopherGopher
79TCPfingerFinger
80TCPhttp ( www-http)World Wide Web HTTP
88TCPkrb5 kerberos-secKerberos
95TCPsupdupSUPDUP
101TCPhostnameNIC Host Name Server
102TCPiso-tsapISO-TSAP Class 0
109TCPpop2Post Office Protocol – Version 2
110TCPpop3Post Office Protocol – Version 3
111TCPsunrpcSUN Remote Procedure Call
113TCPauth ( ident )Authentication Service
115TCPsftpSimple File Transfer Protocol
117TCPuucp-pathUUCP Path Service
119TCPnntpNetwork News Transfer Protocol
123TCPntpNetwork Time Protocol
143TCPimapInternet Message Access Protocol
163TCPcmip-manCMIP/TCP Manager
164TCPcmip-agentCMIP/TCP Agent
177TCPxdmcpX Display Manager Control Protocol
179TCPbgpBorder Gateway Protocol
194TCPircInternet Relay Chat Protocol
220TCPimap3Interactive Mail Access Protocol v3
389TCPldapLightweight Directory Access Protocol
443TCPhttpshttp protocol over TLS/SSL
465TCPsmtpsSMTP over SSL
515TCPprinterPrinter spooler ( lpr )
587TCPsubmissionSubmission
636TCPldapsldap protocol over TLS/SSL
989TCPftps-dataftp protocol, data, over TLS/SSL
990TCPftpsftp protocol, control, over TLS/SSL
993TCPimapsimap4 protocol over TLS/SSL
995TCPpop3spop3 protocol over TLS/SSL

◆ UDPの代表的なウェルノウン番号

ポート番号TCP/UDPサービス名説明
7UDPechoEcho
9UDPdiscardDiscard
11UDPsystatActive Users
13UDPdaytimeDaytime (RFC 867)
17UDPqotdQuote of the Day
19UDPchargenCharacter Generator
37UDPtimeTime
39UDPrlpResource Location Protocol
42UDPNameserverHost Name Server
49UDPtacacsLogin Host Protocol (TACACS)
53UDPdomainDomain Name Server
67UDPbootpsBootstrap Protocol Server
68UDPbootpcBootstrap Protocol Client
69UDPtftpTrivial File Transfer
88UDPkrb5 kerberos-secKerberos
111UDPsunrpcSUN Remote Procedure Call
123UDPntpNetwork Time Protocol
137UDPnetbios-nsNETBIOS Name Service
138UDPnetbios-dgmNETBIOS Datagram Service
139UDPnetbios-ssnNETBIOS Session Service
161UDPsnmpSNMP
162UDPsnmptrapSNMPTRAP
177UDPxdmcpX Display Manager Control Protocol
201UDPat-rtmpAppleTalk Routing Maintenance
202UDPat-hbpAppleTalk Name Binding
204UDPat-echoAppleTalk Echo
206UDPat-zisAppleTalk Zone Information
213UDPipxIPX
520UDProuterRIP
546UDPdhcpv6-clientDHCPv6 Client
547UDPdhcpv6-serverDHCPv6 Server

まとめ

TCP/UDPポート番号とは
→TCP/UDP上のサービスを識別するための番号

MTU/MSS/RWN

今回出てくる用語

・MTUとは
・MSSとは
・RWNとは

◆ MTU(Maximum Transmission Unit)
MTU とは、一回のデータ転送にて送信可能な [ IPデータグラムの最大値 ] のことです。

例えば、Ethernet型LANの環境においてはEthernetフレームが最大 1518 byte なので、Ethernetヘッダ ( 14byte ) と FCS ( 4byte ) を除く 1500byte がMTUサイズとなります。

Ethernet型LANにおけるMTUの算出
Ethernet frameEthernet header & FCS=MTU
 1518181500


PPPoEの場合、Ethernetフレームにカプセル化する前に、PPPとPPPoEもカプセル化する必要があり、PPPとPPPoEヘッダの8byteを含めて 1500byte 以内にする必要があります。
従い、PPPoEが実装されるLANではMTU上限が理論上1492byteであることが分かります。

PPPoEが実装されているEthernet型LANにおけるMTUの算出
Ethernet frameEthernet header & FCSPPPoE headerPPP header=MTU
 151818621492




◆ MSS ( Maximum Segment Size )

MSSとは、TCPが格納するユーザデータで「受信可能なセグメントサイズの最大値」のことです。
Ethernet型LANでは、Ethernetフレームが最大 1518byte なので、Ethernetヘッダ ( 14byte ) FCS( 4byte ) TCPヘッダ( 20byte ) IPヘッダ( 20byte ) を除く1460byteがMSSサイズとなります。
MSSは、MTUからTCP/IPヘッダ(40byte)をマイナスした値で常に「MSS = MTU – 40」となります。

Ethernet型LANにおけるMSSの算出
Ethernet frameEthernet header & FCSIP headerTCP header=MSS
 15181820201460


PPPoEの場合は、PPPとPPPoEにもカプセル化する必要があり、これらPPPヘッダとPPPoEヘッダの
合計8byteを含めて1460byte以内にする必要があります。

従ってPPPoEでは接続元のクライアントが接続先サーバにTCPコネクションを確立する際に最大1452byteのデータを要求できることになります。

PPPoEが実装されているEthernet型LANにおけるMSSの算出
Ethernet
frame
Ethernet header
& FCS
PPP
header
PPPoE
Header
IP
header
TCP
header
=MSS
1518182620201452


◆ RWIN ( Receive Window Size )

RWINとは、相手側の確認応答 ( Ack ) を待たずに、一度に送信出来るデータサイズのことです。
通信時の SYN/ACK のコネクションの際に、TCPが受信可能なMSSとRWINを相手に通知します。
RWIN は、回線速度やPCの CPU/Memory などにより最適なサイズが異なります。

Windows7 のRWIN は可変であり、RWIN値を自動的に調整してくれますが、以前のOSでは固定されていました。
※ RWINのデフォルト値 – Win95 / 98 / NT ( 8192byte ) Win2000 / ME ( 16384byte ) WinXP ( 65535byte )

現在のあなたのPC値は https://www.speedguide.net/analyzer.php から確認することができます。



◆ Ethernetフレーム、PPPoEフレームのフォーマット

  

まとめ

・MTUとは
→一回のデータ転送にて送信可能な [ IPデータグラムの最大値 ] のこと

・MSSとは
→TCPが格納するユーザデータで「受信可能なセグメントサイズの最大値」のこと

・RWNとは
→相手側の確認応答 ( Ack ) を待たずに、一度に送信出来るデータサイズのこと

Path MTU Discovery その1

今回出てくる用語

・Path MTU Discoveryとは

◆ Path MTU Discovery

MTUは、一回のデータ転送で送信可能なIPデータグラムの最大値のことです。

この値は固定で設定する方法と、Path MTU Discoveryによる自動検出により設定される方法の2つがあります。
PMTUD ( Path MTU Discovery ) は、経路上にあるリンクの最小MTU値を検出して、送信元へICMP(type 3 code 4)でその最小MTU値の情報を送信して、MTUサイズを自動修正させます。

        

◆ Path MTU Discovery(RFC1191)の動作

ルータは、着信パケットが大きすぎてDFビットが設定されている場合、そのパケットを破棄してICMP(Type 3 Code 4)を送信元ホストへ送信します。

そのICMPを受信したホストはMTU値を自動調整して再度パケットの転送を行い正常に通信することができるようになります。

ちなみにルータは、着信パケットが大きすぎてもDFビットが設定されていない場合はフラグメントを行いパケットを送信することができますが、その場合は、その処理のためにスループットが落ちます。


     

◆ Path MTU Discoveryブラックホール(RFC2923)の動作

経路上に異なるMTU値が存在していても、以上のとおり Path MTU Discovery によって通信することができるようになりますが、適正なMTU値を伝達するためのICMP(type3 code4)パケットを送信元に送信しない設定や、途中の経路でICMPがフィルタリングされている場合には、以下のような問題が発生します。

以下のような状態の事をPath MTU Discovery Black Holeといいます。


      


このPMTUDブラックホールの問題はいくつかの解決方法があるので次回はそれを紹介します。

まとめ

・Path MTU Discoveryとは
経路上にあるリンクの最小MTU値を検出して、送信元へ ICMP(type 3 code 4)でその最小MTU値の情報を送信して、MTUサイズを自動修正させます。

Path MTU Discovery その2

◆ Path MTU Discoveryブラックホールの問題解決 その1

異なるMTU値が定義されたルータ上で適正なMSSサイズを定義することにより、通信開始となる
3 way-handshake 時に、ルータに設定されたMSSサイズが送信先に通知されるため、送信元で
作成されるIPデータグラムが、ルータのMTU値を超えることなく正常に通信することができます。

ルータでMTUを小さく設定したとしても、自動的にMSS値が調整されてI/Fに適用されるわけでは
ないので、MTU値が小さくなるI/FのルータでMSS値を設定することは推奨というより必須です。

以下の設定で、Ciscoルータを通過するTCP SYNのMSSが「1360」となり送信先へ通知されます。

 Cisco(config-if)# ip tcp adjust-mss 1360


◆ Path MTU Discoveryブラックホールの問題解決 その2

DF=1(分割禁止)で受信したIPデータグラムを、着信インターフェース上でDFビットをクリアすること(DF=0)によって、ルータ上でフラグメントが可能にすることでも、この問題を解決できます。
ただし着信パケットに対してその都度、IPフラグメントを発生させるとスループットが著しく落ちます。
※ 送信元PCによるデータ分割と、ルータでの着信パケットに対するデータ分割とでは意味が違います。

問題解決 1 の方法でも解決せず、PMTUD Black Holeによって通信できなくなる状態が発生した時の
苦肉の策として使用する手法と言えます。以下はCiscoでroute-mapを使用し DF=0 にする設定例です。


 Cisco(config)# interface fastethernet 0/0
 Cisco(config-if)# ip policy route-map R-df

 Cisco(config)# route-map R-df permit 10
 Cisco(config-route-map)# match ip address 101
 Cisco(config-route-map)# set ip df 0

 Cisco(config)# access-list 101 permit ip any any


      


その他、ネットワーク上でGREトンネリングを実装しているルータのTunnelインターフェース上で
MTU値を1500に上げる手法もありますが、この手法でもルータ上でIPフラグメントが発生します。
ちなみに、Path MTU Discoveryが有効になっているホストでは一般的に全てのTCP/IPパケットに
DFビットが立ちます(DF=1)が、例えばPINGのICMP datagramにはIPでDFビットが立っておらず
WindowsからDFビットを立ててPINGするためには [ -f ] のパラメータをPINGコマンドに必要です。

◆ ICMP(type3 code4)メッセージの制限

Ciscoルータでは、DoS攻撃に対してCPUを保護するために、送信するICMP(type 3 code 4)のメッセージを1秒につき2パケット(=500msあたり1パケット)に制限しています。

デフォルトでCiscoルータでは [ ip icmp rate-limit unreachable DF 500 ] と定義されています。

従いまして、1秒につき2パケット以上のICMP(type3 code4)メッセージを出す必要のある環境ではこの値を調整するか、以下のように [ no ] で打ち消してICMPメッセージの制限を無効にする事もできます。

 Cisco(config)# no ip icmp rate-limit unreachable DF




◆ ICMPのフィルタリング設定について

Path MTU Discoveryが失敗するのは、一般的にICMPのフィルタリング設定が原因とされています。
システム管理者は、ICMPフィルタリングをACLなどで実装する時、特定のICMPのメッセージタイプだけのブロックでなく、全てのICMPタイプをブロック(deny icmp any any)する傾向があります。
ICMPのフィルタリング設定を実装する場合は、Cisco機器では以下のACL101で実装しているように最低限 [ code3=unreachable ] [ code11=time-exceed ] は、許可することが推奨とされています。


 Cisco(config)# access-list 101 permit icmp any any unreachable
 Cisco(config)# access-list 101 permit icmp any any time-exceeded
 Cisco(config)# access-list 101 deny icmp any any
 Cisco(config)# access-list 101 permit ip any any

DHCPとは

今回出てくる用語

・DHCPとは

◆ DHCPとは

DHCP ( Dynamic Host Configuration Protocol ) は、ネットワーク接続するのに必要なIPアドレスなどの情報を自動的に割り当てるアプリケーション層プロトコルです。

DHCPを使用すれば、IPアドレスに関する知識がないユーザでも、パソコンをケーブルに接続するだけで簡単にネットワーク接続することができます。

◆ DHCPの構成要素

DHCPの環境はDHCPサーバとDHCPクライアントから構成されます。

それぞれの特徴は以下のとおりです。

構成要素役割使用される機器
DHCPサーバIPアドレスの設定情報などを
DHCPクライアントに割り当てる
Windowsサーバ、Linuxサーバ、Ciscoルータなど
DHCPクライアントIPアドレスの設定情報などを
DHCPサーバから割り当てられる
Windows OSなどのパソコン、IP電話など


◆ DHCPのパケット

DHCPプロトコルはUDP上で動作するプロトコルです。

DHCPサーバ宛にパケットを送る場合のポート番号は 「67」を使用し、DHCPクライアント宛にパケットを送る場合はポート番号に「68」を使用します。

下図のDHCPメッセージ部分に、例えばDHCPサーバがDHCPクライアントに割り当てるIPアドレス情報があります。




◆ DHCPの仕組み

最初はDHCPクライアントは自身のIPアドレスも知らなければ、DHCPサーバのIPアドレスも知らないので全ての宛先(ブロードキャスト)にDHCP Discoverメッセージを送信して、ネットワーク全体に問い合わせ。

  


次に、DHCPサーバはクライアントに割り当てるIPアドレス設定などをアドレスプールから選択して提案。
DHCPサーバの仕様によりDHCP Offerはブロードキャストで送信するので、その場合は宛先MACとIPはブロードキャストアドレスになります。今回の解説では、ユニキャストを送信することが前提の内容です。

  


次に、DHCPクライアントは提案されたIPを使用する事を通知するためにDHCP Requestをブロードキャスト。

  


最後に、DHCPサーバはDHCPクライアントが使用するIPアドレスなどの設定情報をDHCP Ackで送信します。

  

これで、DHCPクライアントは自身のIPアドレスを「192.168.0.1/24」として稼動できるようになります。

◆ DHCPサーバ

DHCPサーバにはWindowsサーバ、Linuxサーバ、Ciscoルータ等がなることができます。

当然、設定方法は 異なりますが設定項目自体は共通です。

DHCPサーバには色々な設定項目がありますが、DHCPクライアントにIPアドレスを割り当てる範囲のアドレスプール、サブネットマスク、デフォルトゲートウェイのアドレス、DNSサーバのIPアドレス、リース期間( IPアドレスの貸し出し期間 )などが、基本的な設定項目となります。

まとめ

・DHCPとは
→ネットワーク接続するのに必要なIPアドレスなどの情報を自動的に割り当てるアプリケーション層プロトコル

DHCPリレーエージェント

今回出てくる用語

・DHCPリレーエージェント

◆ DHCPリレーエージェント

DHCPサーバとDHCPクライアントとの通信ではブロードキャストアドレスが使用されるので、DHCPサーバとDHCPクライアントは同じネットワーク(サブネット)にいる必要があります。

が、現在のLANネットワークは多くのサブネットが存在し、そのサブネットをルータやL3スイッチで分離しています。

ルータやL3スイッチはブロードキャストを通過させないのでDHCP環境を構築したい場合、サブネットごとにDHCPサーバを導入する必要がありますが、コスト的に現実的ではありません。

そこで、DHCPリレーエージェント機能が役立ちます。

DHCPリレーエージェント機能により、DHCPサーバとDHCPクライアントが異なるサブネットに存在してもDHCPクライアントから受信したブロードキャストをユニキャストに変換して、DHCPサーバに転送します。
現在では、ルータやL3スイッチのネットワーク機器でDHCPリレーエージェント機能を持たせるのが一般的。

まとめ

・DHCPリレーエージェントとは
→DHCPサーバとDHCPクライアントが異なるサブネットに存在してもDHCPクライアントから受信したブロードキャストをユニキャストに変換して、DHCPサーバに転送できる機能。

DNSとは

今回出てくる用語

・DNSとは

◆ DNSとは

DNS ( Domain Name System ) は、ドメイン名(コンピュータを識別する名称)をIPアドレスに自動的に変換してくれるアプリケーション層プロトコルです。

DNSの仕組みにより、覚えにくいIPアドレスではなくローマ字でURLを入力しWebアクセスしたり、ローマ字でメールアドレスを入力してメール送信ができます。
 DNSの仕組みがないと、例えばYahooのWebサーバにアクセスするために「https://www.yahoo.co.jp/」と入力するのではなく「https://124.83.167.212」のようにIPを入力してアクセスすることが必要になります。

◆ ドメイン名の構造

DNSはドメイン名をIPアドレスに変換してくれるのですが、先ずそのドメイン名の構造について解説します。
ドメイン名は、コンピュータを識別する名称のことです。

ドメイン名はホスト名や組織名を識別するために階層構造がとられており、英字がピリオドによりつながれています。

下図の通りドメイン名の一番右側からトップレベルドメイン、セカンドレベルドメイン、サードレベルドメイン、フォースレベルドメインと続く。

           

「www」のホスト名を省略せずに指定した記述形式「www.yahoo.co.jp」は FQDN (Fully Qualified Domain Name) といいます。

ドメインレベル説明ドメイン名の例
トップレベルドメイン
( Top Level Domain )

トップレベルドメイン(TLD)では、国別、地域、商用などを表すドメインとなっている。
jp (日本) us (アメリカ) com (商用)
セカンドレベルドメイン
( Second Level Domain )

セカンドレベルドメイン(SLD)では、組織の種類を表すドメインとなっている。
ただしトップレベルドメインによりこのポリシーは異なる。 ※1
co (一般企業) ac (教育機関) go (政府機関)
サードレベルドメイン
サードレベルドメインでは、具体的な企業名や組織などを表すドメインとなっている。
ただし、トップレベルドメインによりこのポリシーは異なる。
yahoo (ヤフー) keio (慶応義塾) ntt (NTT)
フォースレベルドメイン
フォースレベルドメインは、「ホスト名」に位置づけされるドメインです。
一般的にWebサーバであれば「www」として、FTPサーバであれば「ftp」とする。

※1 トップレベルドメインに「com」を選んだ場合、セカンドレベルドメインは「cisco」等の組織名を表すドメイン名となります。


ドメインはツリー構造となっています。

ドメインの頂点にルートドメインが存在し、ルートドメイン配下にトップレベルドメインがあり、その配下にセカンドレベルドメインと、このように階層構造となっています。

  


◆ DNSの構成

DNS (Domain Name System) はDNSサーバとリゾルバにより構成されます。

DNSサーバは各階層ごとに存在します。

ルートドメインに位置するルートDNSサーバは全世界で13組あります。

ルートDNSサーバは、下位のDNS(jp のDNSサーバ、com のDNSサーバ) のIPアドレスを管理しています。

つまりDNSサーバはそのドメインのドメイン名とIPアドレスの対応表だけでなく下位DNSサーバのIPアドレスも管理しています。

DNSの構成役割使用される機器
DNSサーバ ドメイン名とIPアドレスの対応表を保持するホスト、
 またはソフトウェアのこと。各階層ごとに存在する。
Windowsサーバ、Linuxサーバなど
リゾルバ DNSサーバに問い合わせを行うホスト、または
 ソフトウェアのこと。DNSクライアントとも呼ばれる。
Windows OSなどのパソコンなど


各階層のDNSサーバは耐障害性を考慮して複数のDNSサーバにより構成されます。

DNSサーバはゾーン情報のマスターデータを管理するプライマリDNSサーバと、バックアップとなる1台以上のセカンダリDNSサーバによって構成されます。

これらのサーバが同じ情報を共有するために、プライマリDNSサーバはセカンダリDNSサーバに定期的にゾーン情報を転送することによって同期を取っています。

このことをゾーン転送といいます。
※ ゾーン情報は、あるドメインについてその中のドメイン名とIPアドレスなどが対応付けられたデータベース。

   

例えば yahoo.co.jp のDNSゾーンで、プライマリDNSサーバに ns1.yahoo.co.jp、セカンダリDNSサーバにns2.yahoo.co.jp、ns3.yahoo.co.jp、ns4.yahoo.co.jpがあるとします。

ns1.yahoo.co.jpのサーバに障害が発生しても ns1はns2,ns3,ns4と同期を取っているので ahoo.co.jp ドメインでは問題なく名前解決されます。
※ ゾーン転送は、セキュリティ上の観点からそのドメイン内のセカンダリDNSサーバ以外と行わないのが基本。

◆ DNSのパケット

リゾルバがDNSサーバに行うドメイン名からのIPアドレスの名前解決にはUDP(ポート番号53)を使用します。
一方、DNSサーバとDNSサーバとがゾーン情報のファイル転送を行う場合 TCP(ポート番号53)を使用します。


            


※ ゾーン情報のファイル転送を行わないDNS通信でも、512バイトを超えるDNS応答を取り扱う場合はUDPではなくTCPを使用。



◆ DNSによる名前解決の仕組み

Webブラウザで「https://www.cisco.com/」と入力するとそのPCで指定したDNSサーバに問い合わせます。
対応表がそのDNSサーバのゾーン情報になくキャッシュにもない場合、ルートDNSサーバへ問い合わせます。
同じような流れで問い合わせと通知が下図の通り行われます。しかし実際には、リゾルバやローカルのDNSサーバに一度調べた情報がキャッシュに残っているため、毎回このようなルートへの問い合わせはしません。

    

 ローカルDNSサーバに対して④ではcomのDNSサーバ名/IPアドレスを回答、⑥ではcisco.comのDNSサーバ名/IPアドレスを回答。

まとめ

・DNSとは
→ドメイン名(コンピュータを識別する名称)をIPアドレスに自動的に変換してくれるアプリケーション層プロトコル

DNS – ゾーンファイルとリソースレコード

今回出てくる用語

・DNSのゾーンファイルとは
・DNSのリソースレコードとは

◆ DNS – ゾーンファイルとリソースレコード

DNSサーバはリソースレコードと呼ばれるドメイン名とIPアドレスの対応するデータを多数持っています。
そして、リソースレコードの集合体であるデータベースは、一般的にゾーンファイルと呼ばれています。
DNSサーバのソフトウェアとして最も使用されているBINDによるゾーンファイルの書き方を解説します。

       

 ※ ゾーンファイルは省略ルールに従って省略表記可能ですが、省略しすぎると理解しにくいので上記の書き方が一般的です。

項番項目説明
$TTLDNSサーバがゾーンファイルのデータをキャッシュする時間を指定(デフォルト:86400秒)
$ORIGIN対象ドメイン名を補う。例えば「 IN NS ns1.infraeye.com. 」を IN NS ns1 のように省略可。
@ドメイン名を表す。このゾーンファイルでは @ は「 infraeye.com 」と同じ意味をあらわす。
ns1.infraeye.com.このゾーンファイルのデータを持つプライマリーDNSサーバ
postmaster.infraeye.com.このドメインの管理者のメールアドレス。管理者との連絡用に使用。
「 postmaster.infraeye.com. 」 = 「 postmaster@infraeye.com 」
Serial ( 2012062501 )ゾーンファイルのバージョンを表す数字。管理者が自由に記載する。
ゾーンファイル更新日+管理番号を表す ( YYYYMMDDNN ) の10桁使用が多い。
DNS情報を更新する場合、このシリアル番号を現在よりも大きな値として更新される必要がある。
DNS情報を更新した場合、自動で更新される場合はこの更新値を意識する必要はない。
Refresh ( 10800秒 )セカンダリDNSサーバが、プライマリDNSサーバにゾーン転送後に再度ゾーン情報を取得しようと試みるまでの時間
Retry ( 3600秒 )セカンダリDNSサーバが、Refreshでゾーン情報の更新が失敗した場合に再度Refreshを試みるまでの時間。
EXPIRE ( 604800秒 )セカンダリDNSサーバが、ゾーン情報のリフレッシュができない状態が続いた場合、セカンダリDNSサーバが持っているゾーン情報をどれだけの時間利用するかの時間。
Minumum TTL (86400秒)存在しないドメイン名のキャッシュを維持する時間。存在しないドメイン名を問い合わせると、キャッシュサーバは他の正規な情報と同様、この存在しないドメイン情報も指定時間保持する。


◆ DNS – リソースレコードの省略表記

リソースレコードは省略した表記が可能です。そのリソースレコードの省略ルールは以下の通りです。

① デフォルトのTTLと同じTTLの場合、TTLの値を省略可能。デフォルトのTTLは「 $TTL 」で指定。
② 前行と同じラベルで始まる行は、ラベルを省略可能。
③ ORIGINと同じドメインは省略可能。ORIGINの値は「 $ORIGIN 」で指定。

※  明示的にORIGINを指定しない場合、そのゾーンファイルのドメイン名が暗黙に指定される。
※  ORIGINと同じドメイン名は @ で記載される。 例 – infraeye.com. ⇒ @
※  ORIGINの前にホスト名を付加する場合はそのホスト名を記載して最後に「. 」をつけない。例 – www.infraeye.com. ⇒ www
⇒  ドメイン名の最後に「. 」をつけるとFQDNと解釈される。「 . 」をつけないと ORIGIN の内容が末尾に付加されることになる。

       

◆ DNS – リソースレコードの種類

リソースレコードは以下のフォーマットであり1行に1つずつ書く必要があります。

以下のリソースレコードは「Aレコード」と呼ばれるリソースレコードで「ホスト名に対応するIPアドレスの情報」を示しています。

例えば「 www.infraeye.com. のIPアドレスは 192.168.0.1です。」という情報です。
「クラス」の項目にはいくつかの種類がありますが IN (= Internet) 以外は基本的に使用されません。

ラベルTTLクラスタイプリソースデータ
www.infraeye.com.86400INA192.168.0.1


主なリソースレコードは以下の通りです。

なお、その他のリソースレコード一覧はこちらで確認できます。

   

レコード種別レコード種別
(詳細)
意味
SOAStart of uthority
ゾーンファイルの最初のリソースレコード。以下のDNSサーバの各種管理情報の指定。
・ ドメインのDNSサーバ名 ・ ドメイン管理者のメールアドレス ・ シリアル番号
・ 更新間隔 ・ 転送再試行時間 ・ レコード有効時間 ・ 否定的キャッシュ有効時間
NSName Server
ドメイン名と、そのドメイン名を管理するDNSサーバを対応付けたレコード。
(例) infraeye.com. IN NS ns1.infraeye.com.
→ infraeye.com というドメインのDNSサーバは、ns1.infraeye.com であるという意味。
AAddress
ホストのIPアドレスを指定。
(例) intra1.infraye.com. IN A 192.168.0.1
→ intra1.infraeye.com のIPアドレスは 192.168.0.1 であるという意味。
PTRPointer
IPアドレスに対応するホスト名を指定。(逆引きで使用)
(例) 192.168.0.1 IN PTR intra1.infraeye.com.
→ 192.168.0.1 のホスト名は intra1.infraeye.com であるという意味。
CNAMECanonical AME
ホストの別名を指定。構文は、「 エイリアス名 IN CNAME 本当のホスト名 」 となる。
(例) www.infraye.com. IN CNAME intra1.infraeye.com.
→ intra1.infraye.com の別名(エイリアス名)はwww.infraeye.comであるという意味。
MXMail exchange
ドメインのメールサーバを指定。
(例) infraye.com. IN MX 10 mail1.infraeye.com.
→ 例えば cool@infraeye.com のメールはmail.infraeye.comに転送すれば届くという意味。
TXTtext strings
ホストへのテキスト情報を指定。
(例) www.infraye.com. IN TXT “I’m cool”
→ www.infraeye.com ってサイトはクールなサイトという意味。


◆ CNAMEについて

最後にCNAMEについて詳細に解説します。

例えばホスト名「 intra1 」ドメイン名「 infraeye.com 」というWebサーバがあるとします。

イントラネットまたはインターネット接続時にユーザから intra1.infraeye.com ではなく www.infraeye.com を指定してそのWebサーバにアクセスしてもらいたい場合、CNAMEレコードで
別名(エイリアス)を指定することで実現可能 ⇒ 「www.infraeye.com. IN CNAME intra1.infraeye.com.」

まとめ

・DNSのゾーンファイルとは
→リソースレコードの集合体

・DNSのリソースレコードとは
→ドメイン名とIPアドレスの対応するデータのこと

DNS – リゾルバとフォワーダー

今回出てくる用語

・DNSのリゾルバとは
・DNSのフォワーダーとは

◆ DNS – 用語理解
重要用語に「スタブリゾルバとフルサービスリゾルバ」「DNSキャッシュサーバとDNSコンテンツサーバ」「再帰問い合わせと反復問い合わせ」 の大きく3つがあります。それでは詳細を以降で解説していきます。
   




◆ DNS – リゾルバとは

リゾルバとは簡単に言うとDNSクライアントのことです。

厳密に言うと、ドメイン名からIPアドレスの情報を検索したり、IPアドレスからドメイン名の情報を検索する名前解決を行うソフトウェアプログラムのこと。
リゾルバには以下の2種類があり、DNSサーバにもPC同様にリゾルバのソフトウェアは組み込まれています。

リゾルバの種類説明
スタブリゾルバ DNSリクエストを送信するだけのクライアントPC、またはDNSサーバ。
フルサービスリゾルバ 再帰問い合わせ(Recursive)によって完全にDNS解決を行えるDNSサーバ

※ クライアントPCのDNSのキャッシュ情報は ipconfig /displaydns で確認可能で、ipconfig /flushdns でキャッシュを消せます。


◆ DNS – 2種類のDNSサーバ

DNSサーバには、DNSキャッシュサーバとDNSコンテンツサーバの大きく2つの種類があります。

DNSキャッシュサーバは、フルサービスリゾルバとも呼ばれています。

ちなみに個人が自宅でインターネット接続する際に指定しているISPから付与されたDNSサーバはDNSキャッシュサーバになります。

DNSサーバの種類説明
DNSキャッシュサーバ ドメイン名とIPアドレスの対応の問い合わせを行い、その結果をキャッシュする。
DNSコンテンツサーバ ドメイン名とIPアドレスの対応表を「ゾーン」という単位で管理する。

※ クライアントPCの設定には優先DNSサーバと 代替DNSサーバの設定があります。

文字通り、優先DNSサーバに指定したDNSサーバを優先的に使用し、優先DNSサーバからDNSリプライが返されない際のバックアップとして代替DNSサーバを使用します。

◆ DNS – 再帰問い合わせ、反復問い合わせ

ドメイン名とIPアドレス対応に関する問い合わせは、再帰問い合わせ(Recursive query)と反復問い合わせ
(Iterative query)の2種類があります。反復問い合わせは、非再帰問い合わせとも呼ばれています。

問い合わせの種類説明
再帰問い合わせリゾルバからの問い合わせ要求を受けたDNSサーバが、他のDNSサーバに問い合わせを行い
その最終的な結果をリゾルバに応答する必要のある問い合わせのこと。
反復問い合わせリゾルバから再帰問い合わせを受けたDNSサーバ(DNSキャッシュサーバ)が、再帰問い合わせの結果を返すために、答えを得られるまで繰り返し他のDNSサーバへ行う問い合わせのことであり、その反復問い合わせを受けたDNSサーバは、 自身が管理するゾーン情報(またはキャッシュ情報、または情報がないと)だけを応答するだけでよく、他のDNSサーバに問い合わせをする必要がない。


以上の内容を理解できれば、下図の流れも理解できるかと思います。


  


◆ DNS – フォワーダとは

フォワーダ機能を使用すると、自身のDNSで解決できないDNSリクエストをフォワーダに指定したDNS
サーバに転送することができます。

結果、フォワーダに指定したDNSサーバがDNSキャッシュサーバとしてつまり、フルサービスリゾルバとして動作してくれDNSリクエストに対するDNSリプライを返してくれます。

例えば、個人、SOHO、中小企業などが社内LANとしてDNSサーバを構築したとしても、一般的には性能、レスポンスなどの点からフォワーダとしてISPのDNSサーバを指定することが推奨です。

なお、フォワーダを指定しない場合、ルートDNSサーバへ問い合わせをすることになりますが、マナー的にもよくありません。


  

※ クライアントPCはルータをDNSサーバとして指定し、ルータがISPのDNSサーバをフォワーダとして指定する構成もあります。

◆ DNS – 内部DNSサーバと外部DNSサーバ

社内LANにある内部DNSサーバでは、クライアントPCからの再帰問い合わせを受けることになることから、内部DNSサーバでは再帰問い合わせを許可するのが一般的です。

再帰問い合わせが可能な場合、その他の DNSサーバの応答内容をキャッシュとして一時的に保存し、外部DNSサーバへのクエリの回数を減らせます。

一方、DMZの公開セグメントにある外部DNSサーバは、そのDMZセグメントに配置された各種公開サーバのAレコードを応答する役割として一般的に位置づけられることから、反復問い合わせを受けることはあっても、 再帰問い合わせを受けることはありません。

従って、外部DNSサーバでは再帰問い合わせを拒否することが推奨です。外部DNSサーバで再帰問い合わせを許可(例えば送信元 any)すると、攻撃者が不正な応答内容を送信してきてキャッシュ内に保存してしまうと、キャッシュがクリアされるまで間違った名前解決が行われ 攻撃者のホストを信頼するホストとみなしてしまう危険性があります。

それゆえ再帰問い合わせを拒否します。

  


  

まとめ

・DNSのリゾルバとは
→DNSクライアントのことです。厳密に言うと、ドメイン名からIPアドレスの情報を検索したり、IPアドレスからドメイン名の情報を検索する名前解決を行うソフトウェアプログラムのこと。

・DNSのフォワーダーとは
→自身のDNSで解決できないDNSリクエストをフォワーダに指定したDNSサーバに転送することができます。

HTTPとは

今回出てくる用語

・HTTPとは

◆ HTTPとは

HTTP (HyperText Transfer Protocol) は、WebサーバとクライアントのWebブラウザがデータを送受信するために使用するアプリケーション層のプロトコルです。

HTTPにより、Webページを記述するために使用する言語(HTML)による文書、画像、音声、動画等のファイルを表現形式を含めてやりとりできます。

◆ URLの構造

Webアクセスのためには、WebブラウザでURL(Uniform Resource Locators)を指定する必要があります。
インターネット上の資源の場所を示す URL は以下の書式で記述します。大きく3つの構成要素があります。

           

URLの構成説明
スキーム
アクセスするプロトコルを指定する部分。HTTPによるWebアクセスを行うためには「 http 」と入力。
HTTPにSSLを使用した暗号化によるWebアクセスを行うためには「 https 」と入力。ポート番号443。
WebブラウザでFTPサーバにアクセスしたい場合は「ftp」 と入力する。
ホスト名
アクセスするホスト名を指定する部分。DNSではFQDNと呼ばれている部分。
ホスト名の後にポート番号を指定することができる。ポート番号を省略した場合はデフォルトで
「http」 でアクセスする場合ポート番号に「80」を使用する。つまり、以下の入力結果は同じ意味。
「 http://www.infraexpert.com/ 」 = 「 http://www.infraexpert.com:80/ 」
パス
Webブラウザで表示させたいWebページのファイル名を指定する部分。ファイル名を指定しない場合
デフォルトで「index.html」のファイル名が呼び出される。つまり以下は同じWebページが表示される。
「 http://www.infraexpert.com/ 」 = 「 http://www.infraexpert.com/index.html 」

※ なお、当サイトのURLを「 http://~ 」で入力しても、「https://~」にリダイレクトさせる設定をWebサイトでしています。

◆ HTTPのパケット

HTTPはTCPプロトコル上で動作しており、Webサーバにアクセスするために使用しているポート番号は80。

◆ Webアクセスの仕組み

HTTPはとてもシンプルなプロトコル。

HTTPでは、データを要求するHTTPリクエストとそれに応答して要求されたデータを送り返すHTTPレスポンスの2つのやりとりを繰り返してWebページを表示しています。

   

シーケンス説明
利用者がWebブラウザにURLを入力してEnterキーを押す。
Webブラウザは指定したWebサーバにHTTPリクエストを送信して、Webページのデータを要求。
Webサーバは、Webブラウザから受信したHTTPリクエストを解析。
Webサーバが、Webブラウザに要求されたデータをHTTPレスポンスとして返信。
Webブラウザは、受信したデータを解析してWebページとして表示。

◆ HTTPリクエストメッセージ

HTTPリクエストのメッセージはリクエスト行、メッセージヘッダ、空白行、メッセージボディで構成。


    

HTTPリクエストの構成説明
リクエスト行Webサーバに要求する情報を示す。メソッド、URI、HTTPバージョンの情報がある。
メソッドとはWebサーバに要求を示すコマンドのこと。URIとはリクエストの対象となるデータ
を指す情報のこと。HTTPバージョンとは、Webブラウザがサポートするバージョンのこと。
メッセージヘッダWebサーバにWebブラウザの情報を示す。具体的に、Webブラウザ側でサポートする
データのタイプ、データの圧縮方法、ブラウザの種類などの情報がある。
空白行Webサーバにメッセージヘッダーの終わりを伝えるために使用する。
メッセージボディWebサーバにデータを送るために使用する。例えば、Webページ上で入力欄がある場合
そこに入力したテキスト情報をWebサーバに送るために使用。入力情報がなければ空白。


リクエスト行にあるメソッドには主に以下のようなものがあります。とても重要な内容です。

メソッドの種類説明
GETデータを取得することをWebサーバに要求
HEADデータそのものは要求せず、メッセージヘッダだけを取得することをWebサーバに要求
POSTWebサーバに、データを送信
PUTWebサーバに、ファイルをアップロード
DELETEWebサーバ上にあるデータを削除することを要求
CONNECT例えばプロキシサーバなどに、トンネルの確立を要求

◆ HTTPレスポンスメッセージ

HTTPレスポンスのメッセージはステータス行、メッセージヘッダ、空白行、メッセージボディで構成。


  

HTTPレスポンスの構成説明
ステータス行Webブラウザに、Webサーバでの処理結果を伝える。
HTTPのバージョン、ステータスコード、説明文などの情報がある。
メッセージヘッダWebブラウザにWebサーバの情報を示す。具体的に、サーバの種類
返信するデータのタイプ、データの圧縮方法などの情報がある。
空白行Webブラウザにメッセージヘッダーの終わりを伝えるために使用する。
メッセージボディHTML文書、画像ファイル、動画ファイルなどのデータを格納するために使用する。


ステータス行にあるステータスコードは多くの種類があり、ステータスコードの番号帯により以下の通り内容によって、5つ(情報、成功、リダイレクト、クライアントエラー、サーバエラー)に分類できます。

ステータス
コード
説明ステータスコード例
100番台情報
続きの情報があることを伝える。
100 ( Continue )
続きの情報があるのでリクエストして!
200番台成功
Webサーバがリクエストに処理できたことを伝える。
200 ( OK )
リクエストを無事に処理した!
300番台リダイレクト
別のURLへリクエストし直すように要求する。
301 ( Moved Permanently )
400番台クライアントエラー
クライアントのリクエストに問題があり処理できなかった事を伝える。
404 ( Not Found )
指定したURLのデータは存在しない!
500番台サーバエラー
サーバ側に問題があり処理できなかったことを伝える。
503 ( Service Unavailable )
サーバの負荷が高くて処理できない!
詳細なステータスコード説明結果フレーズ
100情報 ( Informational )Continue
101情報 ( Informational )Switching Protocols
102情報 ( Informational )Processing
200成功 ( Success )OK
201成功 ( Success )Created
202成功 ( Success )Accepted
203成功 ( Success )Non-Authoritative Information
204成功 ( Success )No Content
205成功 ( Success )Reset Content
206成功 ( Success )Partial Content
207成功 ( Success )Multi-Status
226成功 ( Success )IM Used
300リダイレクト ( Redirect )Multiple Choices
301リダイレクト ( Redirect )Moved Permanently
302リダイレクト ( Redirect )Found
303リダイレクト ( Redirect )See Other
304リダイレクト ( Redirect )Not Modified
305リダイレクト ( Redirect )Use Proxy
306リダイレクト ( Redirect )(Unused)
307リダイレクト ( Redirect )Temporary Redirect
400クライアントエラー ( Client Error )Bad Request
401クライアントエラー ( Client Error )Unauthorized
402クライアントエラー ( Client Error )Payment Required
403クライアントエラー ( Client Error )Forrbidden
404クライアントエラー ( Client Error )Not Found
405クライアントエラー ( Client Error )Method Not Allowed
406クライアントエラー ( Client Error )Not Acceptable
407クライアントエラー ( Client Error )Proxy Authentication Required
408クライアントエラー ( Client Error )Request Timeout
409クライアントエラー ( Client Error )Conflict
410クライアントエラー ( Client Error )Gone
411クライアントエラー ( Client Error )Length Required
412クライアントエラー ( Client Error )Precondition Failed
413クライアントエラー ( Client Error )Request Entity Too Large
414クライアントエラー ( Client Error )Request-URI Too Long
415クライアントエラー ( Client Error )Unsupported Media Type
416クライアントエラー ( Client Error )Requested Range Not Satisfiable
417クライアントエラー ( Client Error )Expectation Failed
418クライアントエラー ( Client Error )I’m a teapot
422クライアントエラー ( Client Error )Unprocessable Entity
423クライアントエラー ( Client Error )Locked
424クライアントエラー ( Client Error )Failed Dependency
426クライアントエラー ( Client Error )Upgrade Required
500サーバエラー ( Server Error )Internal Server Error
501サーバエラー ( Server Error )Not Implemented
502サーバエラー ( Server Error )Bad Gateway
503サーバエラー ( Server Error )Service Unavailable
504サーバエラー ( Server Error )Gateway Timeout
505サーバエラー ( Server Error )HTTP Version Not Supported
506サーバエラー ( Server Error )Variant Also Negotiates
507サーバエラー ( Server Error )Insufficient Storage
509サーバエラー ( Server Error )Bandwidth Limit Exceeded
510サーバエラー ( Server Error )Not Extended

まとめ

・HTTPとは
→WebサーバとクライアントのWebブラウザがデータを送受信するために使用するアプリケーション層のプロトコル

CGIとは

今回出てくる用語

・CGIとは

◆ CGIとは

CGI(Common Gateway Interface)は、クライアント側のWebブラウザの要求に応じてWebサーバが外部プログラムを呼び出して、その実行結果がHTTPを介してクライアントのWebブラウザに送信される仕組みのことです。

Webサイトで例えば掲示板、アクセスカウンター、アンケートフォームなどWebページの内容を動的に変化させたい時にCGIを使用します。CGIのプログラムはPerl(パール)と呼ばれるプログラミング言語などによって記述されています。

 先ず、htmlファイルにアクセスした場合のWebクライアントとWebサーバとの動作は次の通りになります。


 




 次に、CGIファイルにアクセスした場合のWebクライアントとWebサーバとの動作は次の通りになります。
 下図の通り、CGIの実行や処理はあくまでもサーバー側で行われる処理です。


 


なお、現在ではファイルに「 .cgi 」という拡張子を付けずにアクセスさせることが主流となっています。
CGIはWebサーバ側で実行されるのに対し、例えばJavaScriptはWebクライアント側 ※1で実行されます。
JavaScriptが埋め込まれたHTMLをHTTPを介してダウンロードすることで、JavaScript言語で記述された
プログラムがWebクライアント側で実行されることになります。

※1 JavaScriptは動的なWebページを作成できるプログラミング言語です。なお 「Node.js」というWebサーバ側で動作するJavaScriptもあります。

まとめ

・CGIとは
→クライアント側のWebブラウザの要求に応じてWebサーバが外部プログラムを呼び出して、その実行結果がHTTPを介してクライアントのWebブラウザに送信される仕組みのこと

SMTP / POPとは

今回出てくる用語

・SMTPとは
・POPとは

◆ SMTPとは

SMTP (Simple Mail Transfer Protocol) は、電子メールを送信するために使用するアプリケーション層のプロトコルです。

メールソフトから、メールサーバへ電子メールを送信する際にこのSMTPを使用します。
SMTPは、TCP上で動作しており、SMTPサーバにアクセスするために使用しているポート番号は 25 です。



          




◆ POPとは

POP(Post Office Protocol)は、電子メールを受信するために使用するアプリケーション層プロトコル。
メーラでメールサーバから電子メールを受信する際にPOPを使用します。現在ではPOPのバージョン 3 が主流なのでPOPといえばPOP3を指します。

POPではパスワード情報は暗号化されずそのまま送信されます。
POPはTCP上で動作しており、POPサーバにアクセスするために使用しているポート番号は110となります。



          




◆ メールの送受信の仕組み – 簡易説明

下図では、CoolさんがCiscoさんにメールを送信しようとしています。

下図の通りメールはCoolさんからCiscoさんに直接送信されるのではなく、一度メールサーバで受信して、相手に届けられることになります。


   

シーケンス説明
Coolさんがメーラでメールを作成して、メーラで設定したメールサーバへ、SMTPによりメールを送信。
メールを受信したメールサーバは、メールアドレスの@以降のドメイン名から宛先を確認する。
DNSより名前解決してIPアドレスを取得すると、SMTPによりcisco.comのメールサーバにメールを送信。
これにより、Coolさんのメールはcisco.comのメールサーバに格納される。SMTPの役割はこれで終了。
Ciscoさんがメーラでメールチェックを実行。
メーラで設定したメールサーバへ、POP3によりユーザ名とパスワード情報を送信。
メールサーバは、サーバ上に登録しているユーザ名とパスワード情報を確認し、ユーザ認証を実施。
ユーザ認証が成功すると、宛先アドレスがCiscoのメールをメールサーバが送信。Ciscoがそれを受信。



◆ SMTPによるメール送信の仕組み – 詳細説明


     



メールクライアントは、上図の通りテキストコマンドにより要求を出すのですが、これをメーラが担当します。
メールクライアントからの要求コマンドに対して、サーバは3桁の数字により応答を行います。※上図にある
「This is a test mail」はメールの本文内容であってメールクライアントからの要求コマンドではありません。



◆ POP3によるメール受信の仕組み ( 詳細説明 )


  


SMTPと同様にPOP3の場合もメールクライアントから、上図の通りテキストコマンドにより要求を出します。
メールクライアントからの要求コマンドに対して、サーバは正常な場合は「+OK」、エラーが発生した場合「-ERR」の応答を返します。応答はこの2種類だけとなりますがこの応答にメッセージを付加して送信します。

まとめ

・SMTPとは
→電子メールを送信するために使用するアプリケーション層のプロトコル

・POPとは
→電子メールを受信するために使用するアプリケーション層プロトコル

SMTP – サブミッションポートとSMTP認証

今回出てくる用語

・SMTPのサブミッションポートとは
・SMTP認証とは

◆ SMTPプロトコル – 認証する場合の問題点

前回に解説したSMTPとPOP3の仕組みの通り、POP3の場合はメール受信の際にメールサーバにユーザ名とパスワードの情報を送信して認証が行われますが、SMTPの場合は認証が行われていません。

SMTPが使用されるのがメーラからメールサーバに送信するためだけなら、SMTPでも認証必須で良いかもしれませんがメールサーバ間のメール転送にもSMTPが使用されるため、SMTPがPOP3と同様に認証を必須とした場合、任意のドメインのメールサーバからメールを転送できなくなるのでSMTPは認証を必須としていないのです。


    




◆ SMTPプロトコル – 認証しない場合の問題点

SMTPが認証しないプロトコルということは、例えばNTTぷららと契約していてもぷららのメールサーバを利用せずに、インターネット上に存在するセキュリティ設定の甘いメールサーバを利用して送信することが可能であることを意味します。

スパマー(不特定多数の人に一方的な広告メールを送信する人)は、自身の身元が特定されないように、このような手法を利用し(その他の手法もあわせて)スパム行為をしています。


     

 ◆ OP25B ( Outbound Port 25 Blocking )
OP25Bとは、自身が契約しているISPのメールサーバにメールを送信するのではなく、他のメールサーバに出て行こうとするメールを遮断するものです。

スパムメールの多くは、自身の契約したISPのメールサーバを介さずに、インターネット上のセキュリティの甘いメールサーバ(あるいは悪意のあるメールサーバ)に直接送信されていたことから、ISP各社がOP25Bを採用することで、近年スパムメールは減ってきています。


   


◆ サブミッションポート

OP25Bはスパムメール対策として、かなり効果のある対策であったのですが、正しく利用しているユーザに弊害のある対策でもありました。

例えば、ホテルなどの外出先でインターネット接続する場合、ホテルが契約しているISPのメールサーバを利用できる訳ではないですし、また自身が契約しているISPのメールサーバにアクセスしようとしても、ホテルが契約しているISP側でOP25Bが実施されているのでメールが届きません。


   



この弊害を解決するためにサブミッションポートが利用されるようになりました。サブミッションポートはクライアントPCの「メーラからメールサーバにメールを送信する際に使用する宛先ポート587)」です。
今までと同様にプロトコルにはSMTPを使用しますが、宛先ポートが「25」ではなく「587」を使用します。


   


これにより、宛先ポート「587」のSMTPパケットは遮断されている訳ではないので、外出先から自身が契約しているISPのメールサーバにメールを送信できます。

ただしこのサブミッションポートでも認証がない場合結局は、スパマーも宛先ポートを「587」に変更してメールを送信すればいいだけとなってしまうので、このサブミッションポート宛てにアクセスしてきた通信にはSMTP認証が行われます。

SMTP認証はメールを送信する際にユーザ認証を行い、認証された場合にメールを送信する技術です。

サブミッションポートはあくまでメーラーからメールサーバにメールを送る際に使用するポートなので、メールサーバからメールサーバへのメールの送信は引き続き、認証を行わない宛先ポート番号25のSMTPを使用するので全て丸くおさまります。


  

自宅にいる時はSMTPの宛先ポートを25、外出している時にはSMTPの宛先ポートを587にその都度変更するのは手間なので、あらかじめ宛先ポート587に設定しておくのが一般的です。

自宅でもサブミッションポートでもアクセスできるので「25・587」のどちらを指定しても問題ありません。(プロバイダにもよる)


◆ サブミッションポートの設定

メーラでサブミッションポートを設定するために、SMTPのポート番号を「25」から「587」へ変更します。


        



次に、送信メールサーバ(SMTPサーバ)においてSMTP認証を行うために、「このサーバは認証が必要」というチェックボックスにチェックをいれます。続いて右側にある「設定(E)」というボタンをクリック。

         



SMTP認証に使用するユーザ名とパスワードは、POP3で使用するものと同じにするプロバイダが多いです。
その場合、「受信メールサーバと同じ設定を使用する」を選択して「OK」。

別途、SMTP認証のためのパスワードが付与されている場合「次のユーザ名とパスワードでログオンする」を選択し情報を入力します。


    

まとめ

・SMTPのサブミッションポートとは
→外出先から自身が契約しているISPのメールサーバにメールを送信するための仕組み

・SMTP認証とは
→メールを送信する際にユーザ認証を行い、認証された場合にメールを送信する技術

Telnet / SSHとは

今回出てくる用語

・Telnetとは
・SSHとは

◆ Telnetとは

Telnetは、ネットワークに接続された機器を遠隔操作するために使用するアプリケーション層プロトコル。
オフィスのデスクにいながら、マシンルームにあるサーバ、ルータ等の機器をパソコン上で操作できます。
PCにはtelnetクライアント、ルータなどの機器にはtelnetサーバのサービスが有効であることが前提です。



◆ Telnetのパケット

TelnetクライアントがTelnetサーバにアクセスする際、宛先ポート番号にTCPポート番号23を使用します。


            




◆ Telnetの仕組み

PCからのtelnetはコマンドプロンプトから「 telnet 192.168.0.5 」というように入力するか、またはTera Term等でIPアドレスを入力してtelnetを行います。

そして、TCPによるコネクション確立後、PCのコマンドプロンプトでtelnetサーバからの応答画面が表示されます。

telnetで遠隔操作を行うためには 遠隔操作する機器にログインする必要があるので、最初の応答画面ではパスワードが要求されます。


      



telnetクライアントでは、パスワード情報のコマンドを入力して命令を行います。

そのコマンドを受信したtelnetサーバではそれを処理し、結果をtelnetクライアントに返信します。

命令と結果をやりとりの繰り返し。

 ◆ SSHとは

SSH (Secure SHell) とは、ネットワークに接続された機器を遠隔操作するために使用するアプリ層のプロトコルです。

telnetの場合、パスワード情報を含め全てのデータが暗号化されずに送信されるのに対して、SSHではパスワード情報を含めて全てのデータが暗号化されて送信されます。

現在 Cisco ではCisco機器への管理アクセスはセキュリティの観点からTelnetではなくSSHのアクセスを推奨しています。
※  SSHで遠隔操作を行うためにはログインする必要があり、遠隔操作される機器にはユーザ名とパスワードの設定が必要です。


◆ SSHのパケット

SSHクライアントがSSHサーバにアクセスする際、宛先ポート番号としてTCPのポート番号 22 を使用。


            




◆ SSHのバージョン

SSHには2種類あります。SSH1(SSHプロトコル version 1)と、SSH2(SSHプロトコル version 2)。
SSH1とSSH2とでは当初「認証方式」に違いがありました。

SSH1ではRSA公開鍵暗号、SSH2ではDSA公開鍵暗号方式を採用した認証を行っていました。

「RSA」か「DSA」なのかが違いとしてありました。

しかし後にSSH2においてもRSA公開鍵暗号による認証が可能になりました。さらにDSAよりRSAの方が安全性が高いことから、SSH2の認証もRSA公開鍵暗号が主流となっています。

これでは、SSH1とSSH2ともに同じ認証方式を採用しているのでSSHのバージョンの違いがないのではと思われるかもしれないが、SSH1に比較してSSH2の方がより安全性が高いという違いがあります。

SSHクライアントとSSHサーバがSSH1とSSH2をサポートしている場合は「 SSH2におけるRSA公開鍵暗号 」による認証が推奨となります。

まとめ

・Telnetとは
→ネットワークに接続された機器を遠隔操作するために使用するアプリケーション層プロトコル

・SSHとは
→ネットワークに接続された機器を遠隔操作するために使用するアプリ層のプロトコル

FTPとは

今回出てくる用語

・FTPとは

◆ FTPとは

FTP (File Transfer Protocol) は、特定のコンピュータ間でファイル転送する時に使用するアプリケーション層のプロトコルです。Telnet/SSHと同様、相手先コンピュータにログインした上でファイル転送を行います。
FTPを利用すればファイルをFTPサーバにアップロードしたり、FTPサーバからダウンロードしたりできます。
FTPでは、ログインする際にやりとりするユーザ名とパスワード情報は、暗号化されずにそのまま送信されるのでセキュアなFTP通信を行いたい場合、FTPS(FTP over SSL/TLS)や、SFTP(SSH FTP)を使用します。

◆ FTPの2つのTCPコネクション

FTP通信では2つのTCPコネクションを利用しています。1つは制御用、もう1つはデータの転送用となります。
制御用コネクションはコントロールコネクション、データ転送用コネクションはデータコネクションといい、コントロールコネクションは、ログインするためのユーザ名やパスワード情報やファイルの転送方法などの命令と応答などのために使用され、データコネクションは転送されるデータの送受信のために使用されます。


     



FTPクライアントがFTPサーバにアクセスする際、データコネクションの場合は宛先ポート番号20を使用してFTPクライアントがFTPサーバにアクセスする際、コントロールコネクションでは、宛先ポート番号21を使用。
これはFTPのアクティブモードにおける内容であり、パッシブモードではデータコネクションのポート番号は20ではなくて、ランダムなポート番号が割り当てられその情報がFTPクライアントにその情報が伝えられます。

◆ FTPの仕組み – アクティブモードの場合

PCからのFTPは、コマンドプロンプト上から「 ftp 192.168.0.5 」というようにIPアドレスを入力するか「ftp www.example.com」というようにドメイン名を入力します。

またはFTPクライアントソフトを利用。

TCPコネクション確立後、ユーザ名とパスワードが求められるので入力します。

認証成功後、ファイル転送時にどのようなモード(アスキーモード or バイナリモード)でファイル転送を行い、データコネクションの際にFTPクライアントでポート番号を何番を使用するかなどの情報をやりとりした後、ファイル転送を要求。


      



⑤のFTPクライアントからのファイル転送の要求に対して、⑥でFTPサーバからデータコネクションの接続を開始します。

この時はポート番号21ではなくて20を使用してアクセスします。また、データコネクションでFTPサーバから接続要求を行うモードはアクティブモード、FTPクライアントから接続要求を行うモードはパッシブモードといいます。

アクティブモードかパッシブモードを使用するかはFTPクライアントで設定する。
データ転送が終了すると再びコントロールコネクションで処理の終了の制御を行って、FTP接続は終了します。

◆ FTPのアクティブモードとパッシブモード

FTPのアクティブモードとパッシブモードの違いは、下図の通りデータコネクションにてどちらが接続要求を開始するかです。

FTPサーバから開始する場合はアクティブモードです。

FTPクライアントから開始する場合FTPパッシブモード。コントロールコネクションは、どちらのモードでもクライアントから接続要求をします。


     


アクティブモードの場合、コントロールコネクションのやりとりでFTPクライアントが自身が使用するポート番号をFTPサーバに通知するので、FTPサーバから接続要求を開始できます。

同様に、パッシブモードの場合コントロールコネクションのやりとりで、FTPクライアントへFTPサーバで使用するランダムなポート番号の情報を通知する事から、データコネクションにおいてFTPクライアントから接続要求を開始する事ができます。

FTPサーバがインターネットなどの外部にいる場合、外部からの接続要求の開始はFirewallのセキュリティポリシーで許可されない場合があるのでその時は内部から接続要求を開始するパッシブモードを使用します。
※ Cisco Firewall機能「CBAC」ではアプリ層まで確認するので、アクティブモードでの外部からの接続要求の開始も許可されます。

・FTPとは
→特定のコンピュータ間でファイル転送する時に使用するアプリケーション層のプロトコル

TFTPとは

今回出てくる用語

・TFTPとは

◆ TFTPとは

TFTP(Trivial File Transfer Protocol) とは、特定のコンピュータ間でファイル転送する時に使用するアプリケーション層プロトコル。FTPとの違いは大きく2つあります。

1つは、FTPのようにユーザ名とパスワード認証が行われない点、もう1つはFTPはTCP上で動作する信頼性のある通信ですが、TFTPではUDP上で動作しており信頼性よりも転送効率を重視しているという点です。

TFTPはルータなどのソフトをアップロードやダウンロード時によく使用されます。

TFTPではデータは512バイトずつ区切り送受信。

◆ TFTPのパケット

TFTPクライアントがTFTPサーバにアクセスする際、宛先ポート番号としてUDPのポート番号 69 を使用。
ただし宛先ポート 69 を使用するのは、TFTPクライアントからTFTPサーバへの最初のリクエスト時だけであり、以降のTFTPクライアントとサーバとの通信ではTFTPサーバはランダムなポート番号を使用します。

             


TFTPプロトコルをNWエンジニアが使用する時はルータをTFTPクライアント、PCをTFTPサーバとしてルータのIOSソフトウェアをアップロード、またはダウンロードする際に使用するケースがほとんどです。
FTPサーバ同様、TFTPサーバのソフトウェアはフリーソフト(3CDaemon)として手軽に入手できます。

◆ TFTPの仕組み

CiscoルータをTFTPクライアント、PCをTFTPサーバとします。

先ず、Ciscoルータにtelnet接続、または コンソール接続します。次に、TFTPサーバにIOSソフトのダウンロードを要求するためのコマンドを実行。
その際、TFTPクライアントからサーバに宛先ポート番号69宛のTFTPリクエストメッセージが送信されます。
TFTPサーバは要求されたファイルを転送します。

この時、TFTPサーバは送信元ポート番号に69を使用するのではなくランダムなポート番号を使用します。ポート番号に69を使用するのは最初の「要求」時だけです。


     


TFTPサーバはファイルを512バイト毎に分割して送信していきます。

分割データには1から順にシーケンス の番号が割り振られて送信されます。

そのデータを受信したTFTPクライアントは確認応答(ACK)を返信。
TFTPはUDP上で動作することから、UDPが確認応答するではなくアプリケーション層プロトコルのTFTPが確認応答を行います。

最終的に512バイト未満のデータを受信するとファイル転送が終了した事を認識します。

・TFTPとは
→特定のコンピュータ間でファイル転送する時に使用するアプリケーション層プロトコル

SNMPとは

今回出てくる用語

・SNMPとは

◆ SNMPとは

SNMP (Simple Network Management Protocol) は、ルータ、スイッチ、サーバなどTCP/IPネットワークに接続された通信機器に対し、ネットワーク経由で監視、制御するためのアプリケーション層プロトコルです。
SNMPを利用することにより、導入したネットワーク機器を監視することができるので、ネットワークに障害が発生した場合にどの機器に障害が発生したのかをすぐに突き止められるなど、迅速な障害復旧に役立ちます。

◆ SNMPの構成要素

SNMPは、管理する側のSNMPマネージャ、管理される側のSNMPエージェントの2つにより構成されます。
SNMPv1、SNMPv2c、SNMPv3のバージョンがあり、SNMPv3ではセキュリティ機能が強化されています。
最近は、サーバなどに高価なSNMPマネージャのソフトウェアをインストールしてSNMPマネージャを導入するのではなく、クライアントPCに無償のSNMPマネージャをいれて導入するようなケースなどもあります。
※ SNMPマネージャには HP Software、Cisco Works、JP1 (HP OpenView NNMのOEM)、PNDDA(低価格)などがあります。

構成要素役割使用機器
SNMPマネージャSNMPエージェントに対する情報の要求や監視などを行うWindowsサーバ、Linuxサーバなど
SNMPエージェントSNMPマネージャからの要求への応答、状態変化時の通知を行うルータ、スイッチ、サーバなど



      



SNMPマネージャからSNMPエージェントに問い合わせられる内容は、この他にCPU使用率、メモリ使用率
インターフェースのリンクアップ、ダウン状態、トラフィック量、MTUやSpeed/duplexの状態も確認可能。


◆ SNMPのトラフィック

SNMPエージェントがUDP(ポート番号161)を使用して、SNMPマネージャがUDP(ポート番号162)を使用しています。

従って、SNMPマネージャからSNMPエージェントへの問合せは、SNMPエージェントへの宛先ポートとしてUDP(ポート番号161)が使用されます。

一方、SNMPエージェントからSNMPマネージャへのトラップ通知は、SNMPマネージャへの宛先ポートとして、UDP(ポート番号162)が使用されます。


         

◆ MIB ( ミブ ) とは

MIB (Management Information Base) とは、SNMPエージェントが持っている機器情報の集合体のこと。
SNMPマネージャとSNMPエージェントはこのMIBをやりとりすることで、SNMPエージェントのCPU使用率、インターフェースの使用状況等を確認しています。

MIBにより分類された情報はツリー構造で管理されます。

 MIBにある情報の1つ1つをオブジェクトと言います。例えばツリーの上から「iso、org、dod、internet」などがオブジェクトです。

どのオブジェクトもOID (オブジェクトID)で示されます。OIDは、MIBツリーの階層を通るパスを表すものです。

例えばオブジェクトの「dod」は「iso⇒org⇒dod」を辿っていくことから「dod」のOIDは「1.3.6」です。

例えば「cisco」のOIDは 1.3.6.1.4.1.9。rootから順にピリオドで区切る。


   

このMIBには、標準MIBと拡張MIBがあります。

標準MIBは標準化されているものですが、MIB1とMIB2があります。

現在ではMIB2を使用するのが主流です。拡張MIBはベンダ固有のもの(ciscoなど)があります。

MIBは、SNMPエージェントにて保持しているものですが、SNMPマネージャはエージェントの保持しているMIBの内容から現在の状態を判断するため、SNMPマネージャにも、MIBの情報をインストールする必要があります。

SNMP管理する機器のMIBの情報(MIBファイル)は、メーカのサイトからダウンロードできます。
※ Cisco の場合SNMPオブジェクトナビゲータを利用すれば、ツリー構造の情報、各OIDの説明情報、MIBファイルが得られます。

◆ RMONとは

RMON(アールモン)は、Remote Monitoring MIBの略称です。

通常のMIBは、例えばネットワーク機器のインターフェースや機器単体を監視するパラメータ群から構成されていますが、RMONではネットワークの回線を監視するパラメータ群から構成されています。

RMONにより通信トラフィックの統計情報が得られます。
RMONを利用した代表的なSNMPのアプリケーションはMRTGです。

とても有名で役立つフリーソフトウェア。

◆ SNMPメッセージ

SNMPマネージャとSNMPエージェントがやりとりするメッセージは大きく5つがあります。

SNMPメッセージ送信側意味
Get RequestSNMPマネージャ SNMPエージェントから得たい情報を、OIDを指定して要求
GetNext RequestSNMPマネージャ直前に指定したOIDの次のOIDを指定して要求。
Set RequestSNMPマネージャSNMPエージェントの設定変更を行いたい場合、OIDを指定して要求
Get ResponseSNMPエージェントSNMPマネージャから要求されたOIDに対して、値を挿入して返信
TRAPSNMPエージェントSNMPエージェントが機器の状態に変化があった場合、自発的に送信

まとめ

・SNMPとは
→ルータ、スイッチ、サーバなどTCP/IPネットワークに接続された通信機器に対し、ネットワーク経由で監視、制御するためのアプリケーション層プロトコル

SNMPコミュニティ・SNMPバージョン

今回出てくる用語

・SNMPコミュニティとは
・SNMPバージョンとは

◆ SNMPコミュニティとは

SNMPコミュニティとは、SNMPで管理するネットワークシステムの範囲のことです。

SNMPマネージャとSNMPエージェントとの間で、同じコミュニティ名にすることで情報を共有することができます。

監視対象ごとに異なるコミュニティ名を設定することにより、効率的な管理とアクセス権限の分離を実現できます。

     

上図の通り、コミュニティごとにMIBへのアクセス権限を分けることができます。

MIBへのアクセス権限はRO、RW、Read-write-all の3種類があります。

MIBへの書き込み(RW)できるということは、たとえばSNMPマネージャがSNMPエージェントであるルータを強制的に再起動(MIBへ書込)できるようになります。

MIBへのアクセス権限説明
RORead-only。MIB情報の読み取りが可能
RWRead-write。MIB情報の読み書きが可能
Read-write-allコミュニティを含めてMIB情報の読み書きが可能


◆ SNMPのバージョン

SNMPのバージョンには、正確には「SNMPv1、SNMPv2、SNMPv2c、SNMPv3」の4つのバージョンがあります。

しかし「SNMPv2」は、ほぼ使用されることなく「SNMPv2c」へ移行したことから、多くのネットワーク製品でサポートしているSNMPバージョンは「SNMPv1、SNMPv2c、SNMPv3」の3つです。
その他のメーカーと同様、シスコ機器も「SNMPv1、SNMPv2c、SNMPv3」の3つをサポートしています。

SNMPバージョンRFC説明
SNMPv1RFC 1157SNMPコミュニティによる平文認証。SNMPトラップにおける再送確認なし。
SNMPv2cRFC 1901SNMPコミュニティによる平文認証。SNMPトラップにおける再送確認あり。
SNMPv3RFC 2273~5ユーザ単位の暗号化されたパスワード認証。SNMPトラップにおける再送確認あり。


SNMPv1、SNMPv2c、SNMPv3の違いは上記の通りです。推奨はv3ですが、v2cが広く使用されています。
SNMPv1とSNMPv2cに互換性があることもあり、現在でもSNMPv1が使用されている環境も多くあります。
SNMPv1で使用されるSNMPメッセージには以下の5つがあります。

SNMPメッセージ送信側意味
Get RequestSNMPマネージャSNMPエージェントから得たい情報を、OIDを指定して要求
GetNext RequestSNMPマネージャ直前に指定したOIDの次のOIDを指定して要求。
Set RequestSNMPマネージャNMPエージェントの設定変更を行いたい場合、OIDを指定して要求
Get ResponseSNMPエージェントSNMPマネージャから要求されたOIDに対して、値を挿入して返信
TRAPSNMPエージェントSNMPエージェントが機器の状態に変化があった場合、自発的に送信



SNMPv2で使用されるSNMPメッセージは、上記の5つだけでなく、以下の2つも追加されています。

SNMPメッセージ送信側意味
GetBulk RequestSNMPマネージャ一括参照要求と言われるように、高速に複数の管理情報を取得。
Inform RequestSNMPエージェントSNMPエージェントからマネージャへ通知する時に確認応答も要求。



SNMPv3では、SNMPv2と同じように上記の 7 つのSNMPメッセージを使用することができます。

そして、SNMPv3では、コミュニティ名ではなくUSM(User-based Security-Model)と呼ばれる、ユーザごとのパスワード認証機能と、VACM(View-based Access Control Model)と呼ばれる、ユーザごとにアクセス可能なMIBの範囲を定義できる機能が備わっています。

SNMPv3のUSMにおけるユーザ認証には以下の3つのセキュリティレベルがあります。

セキュリティレベルの用語はメーカによって異なります。

以下の表は、Cisco機器におけるセキュリティレベルの説明となります。

セキュリティレベル認証暗号化結果
 noAuthNoPriv ユーザ名 なし ユーザ名だけを使用して認証。暗号化なし
 authNoPriv MD5 or SHA なし HMAC-MD5 or HMAC-SHAを使用して認証。暗号化なし
 authPriv MD5 or SHA DES or AES HMAC-MD5 or HMAC-SHAを使用して認証。※1で暗号化

※1 次の暗号化レベルを指定可能 ⇒ 「CBC-DES」「3DES」「AES128」「AES192」「AES256」

SNMPv3を使用する場合、SNMPマネージャとエージェントの両方がSNMPv3に対応している必要があります。

まとめ

・SNMPコミュニティとは
→SNMPで管理するネットワークシステムの範囲のことです。SNMPマネージャとSNMPエージェントとの間で、同じコミュニティ名にすることで情報を共有することができる。

・SNMPバージョンとは
→ネットワーク製品でサポートされている、SNMPのバージョンのこと「SNMPv1、SNMPv2c、SNMPv3」の3つある。

syslogとは

今回出てくる用語

・syslogとは

◆ syslogとは

syslogはIPネットワーク上でログメッセージを転送する標準規格でありクライアント/サーバ型プロトコル。
syslog送信側(Ciscoルータなど)はsyslog受信側(Linuxサーバなど)にログ情報をテキストメッセージで送信します。

syslogメッセージはUDPまたはTCPポート番号の514を使用してsyslogサーバに送信されます。


    


CiscoルータやCatalystスイッチなどの「デバイス上の動作状況の記録」をログと言いますが、このログを取得することで、そのデバイスで何が起きているのかを把握できます。

Cisco機器などのネットワーク機器はsyslogプロトコルにより、Ciscoデバイスで発生する各種イベントをログとしてsyslogサーバに送信できます。


◆ syslog – ファシリティとプライオリティ

syslogにおけるシステムログには「ファシリティ」と「プライオリティ」という考え方があります。

◇ ファシリティ

ファシリティは正確に言えば「ログの種別」のことであり、分かりやすくいえばメッセージの「出力元」のことです。

ファシリティには以下の種類があり、ファシリティを使用することでメッセージの出力元に応じてログの出力先を制御できます。

Linuxでは「 * 」を使用することで全ファシリティを選択できます。

 【 syslogのファシリティ 】

ファシリティ説明
auth、authpriv認証サービス ( login、su など)
croncron
daemon各種デーモン
kernカーネル
lpr印刷システム
mailメールシステム
newsニュースサービス
syslogsyslog機能
userユーザープログラム
local0 ~ local7独自の設定



 ◇ プライオリティ

プライオリティはメッセージの優先度を表します。プライオリティはemergが最も高く、debugが最も低いことを意味します。

指定したプライオリティよりもレベルが高いものが全て記憶されるので、例えばcritを指定した場合、crit、alert、emergレベルのログが記録されます。

特定のプライオリティを指定したい場合、プライオリティの前に = をつけます。

noneは例外指定したファシリティのログを除外する役割を持ちます。

 【 syslogのプライオリティ 】

プライオリティ説明
emerg非常に危険な状態
alert危険な状態
crit危険な状態
err一般的なエラー
warningシステムからの警告
noticeシステムからの重要な通知
infoシステムからの情報
debugデバッグ情報
noneファシリティ無効(メッセージを送らない)

上述の標準仕様に従いシスコデバイスではSYSLOGのプライオリティを以下のように定義しています。

Level キーワードレベル説明UNIX Syslog定義
emergencies0システムが不安定LOG_EMERG
alerts1即時処理が必要LOG_ALERT
critical2クリティカルな状態LOG_CRIT
errors3エラー状態LOG_ERR
warnings4警告状態LOG_WARNING
notifications5正常だが注意を要する状態LOG_NOTICE
informational6情報メッセージLOG_INFO
debugging7デバッグメッセージLOG_DEBUG

まとめ

・syslogとは
→IPネットワーク上でログメッセージを転送する標準規格でありクライアント/サーバ型プロトコル

NTPとは

今回出てくる用語

・NTPとは

◆ NTPとは

NTP(Network Time Protocol)は、コンピュータに内蔵されているシステムクロックをネットワークを介して正しく同期させるためのプロトコル。NTPにより時刻同期を行うことで指定時間に正しくサービスを動作させたり、出力ログを正しく管理できたり、証明書を利用した認証なども正しく行うことができます。

         

◆ NTPのパケット

NTPクライアントがNTPサーバにアクセスする際、宛先ポート番号としてUDPポート番号123を使用。
NTPクライアントがNTPサーバにアクセスする際の送信元ポート番号も、ポート番号123を使用します。


          

◆ NTP – 階層構造

NTPはstratumと呼ばれる階層構造を持っており、最上位のNTPサーバが原子時計やGPSの正確な時刻源から正しい時刻情報を得て、下位のNTPサーバはそれを参照して時刻同期を行っていきます。
最上位のNTPサーバは「stratum 1」であり、階層を降りるごとにstratumの値が増えていきます。
最大でstratum 15までNTPサーバを構築できます。なお、stratum 16には同期できません。


      


※ 直結している「 Stratum 0 」と「 Stratum 1 」間では、IP通信ではないので当然ながらNTPで時刻同期はしていません。



◆ NTPサービス – 時刻同期サーバ & 時刻同期クライアント

例えば上図のStratum 2のNTPサーバは上位のNTPサーバ(Stratum 1)から正しい時刻を得ている一方、下位のNTPサーバ(Stratum 3)には正しい時刻情報を通知しています。

つまり、時刻を提供するサーバ機能と、時刻を取得するクライアント機能の2つの機能を保持しています。

     

◆ NTP – 同期モード

NTPでよく使用される同期モードには以下の2つがあります。

\\\\\\\\下図では2つの同期モードを示していますが必ずしもこれら2つのモードを使用する必要はなく、Server / Clientモードだけで構成している設計が多い。

同期モード説明
Server/ClientモードNTPクライアントがNTPサーバに対して一方的に同期を行うモード。よく使用されるモード
Symmetric
Active/Passiveモード
同じ階層に属するNTPサーバ同士の場合に使われる。グループ化された同期メンバーの中から、基準となるNTPサーバを動的に決定する。このモードで動作させる場合は、予めこのモードで同期するように構成されたNTPサーバでないと正常に動作しない場合がある。


◆ NTP – 仕組み

NTPクライアントは、NTPサーバから伝えられる時刻情報をそのまま自身のシステムクロックに同期させる訳ではありません。

NTP情報はネットワークで伝送されるので遅延が発生しています。

このネットワークの遅延を反映した上でNTPクライアントは時刻同期を行います。以下の4つの時刻情報のやりとりを行います。

時間軸NTPパケットでやりとりされる4つの時刻情報
T1NTPクライアントのクエリの発信時刻
T2NTPサーバのクエリの受信時刻
T3NTPサーバの応答の発信時刻
T4NTPクライアントの応答の受信時刻



   


上図前提はクライアントとサーバは、まだNTP同期を取っておらず時間にズレ(遅延)があるとします。
また、ネットワーク内の遅延時間が送信と受信とで等しいとします。往復遅延時間は「パケットの往復時間」から「サーバの処理時間」を引いたものであることから、(T4-T1) – (T3-T2) の公式により2秒となります。
クライアントの時計の遅延時間は上図の時間軸のズレを確認しなくても、公式によっても3秒だと導けます。

※ 当然これらの2秒や3秒の値を導くのは上図の時間軸を見た方が簡単ですが、公式を知っておきましょう。



◆ NTP – 2036年問題

NTPでは、時刻に1900年1月1日0時0分0秒(UTC)を起点とする32ビットの積算秒数で表しています。
32ビットであるため、起点から42億9496万7295秒までしか表現できません。つまり42億9496万7295秒経過した2036年2月6日 6時28分15秒 (UTC) の次の秒については、起点と認識してしまうということです。
これによりNTPが誤作動してしまう可能性があるとされています。これがNTPにおける 2036年問題 です。

◆ お勧めのNTPサーバ

NTPによる時刻同期がシビアに求められるネットワークシステムでは、そのLANネットワークにstratum 1のNTPサーバを導入することをお勧めします。

しかし、インターネット上で公開しているNTPサーバを参照して時刻同期を行うレベルであれば、ブログ版で紹介した「かしこく選ぶNTPサーバ」をご参照ください。



◆ 参考:SNTPとは

SNTP( Simple Network Time Protocol )とは、NTPの簡易版にあたるプロトコルのことであり、NTPの クライアント専用で使用するプロトコルです。

つまり、SNTPを使用するSNTPクライアントは、NTPサーバから時刻情報を受信するだけの機能しかなく、その他のシステムに対し時刻情報は提供できないプロトコル。

まとめ

・NTPとは
→コンピュータに内蔵されているシステムクロックをネットワークを介して正しく同期させるためのプロトコル

FTPサーバ( 3CDaemon )の使い方

◆ FTPサーバを手に入れよう

3CDaemonは1つのソフトウェアでFTPサーバ、TFTPサーバ、SYSLOGサーバ、TFTPクライアント、の4つの役割を担えるので、ネットワークエンジニアにとって必須のソフトウェアの1つとなっています。

※ HPが3Comを買収した結果、3CDaemonが本家サイトからダウンロードできない状態です。そのような状況ですが、現在も3CDaemonを使用しているネットワークエンジニアは非常に多いですね。多くの会社では、以前にダウンロードした3CDaemonを共有ファイルなどに保存しているのだと思います。個人では友人からメールの添付ファイルで3CDaemonを取得しているようです。

◆ FTPサーバを使ってみよう

3CDaemonの“3cdv2r10.zip”をダウンロードすると、ZIPファイルのなかに“SETUP.EXE”というファイルがあります。

それを選択して「実行」するとインストールが開始されます。あとは「Next >」と「Yes」を選択するだけでインストールが完了します。

次に、3CDaemonのアイコンを選択して3CDaemonを起動させます。

3CDaemonを起動させるとTFTPサーバ、FTPサーバ、SYSLOGサーバともに、デフォルトでサービスが
有効な状態なのでこれらのサービスを有効にする操作は必要はありません。デフォルト画面は下図のとおり。

 



上図では、TFTPサーバの状態が表示されているので、FTPサーバの状態を確認するために“FTPServer”を選択してみましょう。

下図の通り3CDaemonを起動しているPCのIPアドレスが「192.168.0.1/24」なので、画面にそのIPアドレスとポート番号が表示され、FTPリクエストがリスニング状態であると表示されています。

FTPサーバと通信するためには、ログインするためのユーザ名とパスワードの情報がFTPクライアント側で必要です。

この設定はFTPサーバ側で必要なので下図の通り「Configure FTP Server」を選択しましょう。

 

「Configure FTP Server」を選択すると下図が表示されます。

つまりデフォルトではユーザ名「anonymous」が存在します。

このユーザ名「anonymous」のパスワードは「何でもOK」です。

つまりログインするためにFTPクライアントでユーザ名「anonymous」例えばパスワード「cisco」と入力しログインできてしまいます。
anonymousで出来ることは This user can: のチェック通り、デフォルトでは「ログインとダウンロード」。


        




FTPクライアント側から、試しにユーザ名「anonymous」、パスワード「test」と入力するとログインでき、パスワードを入力せずに「 Enterキー 」を押すだけでもログインできます。

※パスワードは表示されません。

      

これがいわゆる「anonymous」アカウントですが、セキュリティ上問題なのでグローバルIPアドレスを持ってインターネット通信する際には3CDaemonを起動するのは止めましょう。

または、次の通り“This user can:”
ogin」と「Download」のチェックを外した上で適用を押しanonymousアカウントの使用を禁止します。

       



そして、例えばユーザ名“infra1”、パスワード“infra2”のように新しくユーザアカウントを作成します。
そのためには、「Profile Name:」で“infra1”と入力します。次に「Set/Change use’s password」を選択して「Enter Password」と「Repeat to verify」で“infra2”と入力します。次に「User Directory:」 のところで、FTPクライアントがログインした時に移行するFTPサーバ側の見せたいディレクトリを指定。

次に「This user can:」のところでFTPクライアントに与えたい権限の所にチェックを行います。

最後に 「Save Profile」をチェックすれば、この設定内容を反映した“infra1”というアカウントが生成されます。

       

FTPコマンド解説

◆ FTPクライアント側の操作

今回は以下の構成が前提で、FTPサーバ側の設定やFTPクライアント側のコマンドを解説していきます。


         


Windowsに標準インストールされているコマンドプロンプトでのFTPクライアントの操作を説明します。
今回のFTPサーバのIPアドレスが“192.168.0.1”であることから、以下のとおりftp 192.168.0.1と入力。
ほどFTPサーバ側で作成した内容に基づき、ユーザ名に“infra1”、パスワードに“infra2”と入力します。

 



次に、FTPサーバ側のディレクトリにどのようなファイルが存在するのかを ls コマンドにより確認します。
FTPサーバで「User Directory」に“C:\server\”と指定しているので、この”server”ディレクトリには以下のとおり「s1.txt」「s2.txt」「s3.txt」「s4.txt」という4つのファイルが存在していることを確認できます。

 

次に、FTPサーバからファイルをダウンロードする際に、FTPクライアント側のどこのディレクトリに ダウンロードするのかを、lcd コマンドにより指定します。

今回は、FTPクライアントの“c:\client”という場所にファイルをダウンロードしたいため、lcdコマンドによりそのように指定します。

 



次に、ファイルをダウンロードします。ファイルをダウンロードするためには get コマンドを入力します。
例えば、以下の通り get s1.txt と入力すると、FTPサーバ側の「c:\server」のディレクトリの「s1.txt」 という名のファイルをFTPクライアント側の「C:\server」ディレクトリにダウンロードすることになります。

 



複数のファイルをダウンロードするためには mget コマンドを入力します。また、mget * と入力することで「c:\server」のディレクトリ内にある全てのファイルを一度にダウンロードすることができます。

但しダウンロードするファイルごとに確認が発生するので、ダウンロードするファイルの数だけ「Enterキー」を入力していく必要はあります。

?の後にEnterキーを押します。とはいえ1つ1つgetするよりかは速く処理できます。

 

次に、FTPサーバ側にファイルをアップロードしてみましょう。そのためには put コマンドを入力します。
例えば以下の通り put c1.txt と入力すると、FTPクライアント側の「c:\client」ディレクトリに存在する「c1.txt」というファイルが、FTPサーバ側の「c:\server」のディレクトリにアップロードされます。

 



複数のファイルをアップロードするためには mput コマンドを入力します。

また、mput * と入力することでディレクトリ(c:\client)内にある全てのファイルを一度にアップロードすることができます。

ただしアップロードするファイルごとに確認が発生するので、アップロードするファイルの数だけ「Enterキー」を入力していく必要はあります(?の後にEnterキーを押します)。

とはいえ1つ1つputするよりかは速く処理できます。

 



今回は「メモ帳」で開くことができるテキストファイルなので、FTP転送の際にはasciiモードでOKですが、「メモ帳」で開けないOffice系のファイル、画像ファイル、動画ファイルなどは binaryモード で転送する必要があります。

コマンドプロンプトのFTPクライアントはデフォルトで「asciiモード」なので、メモ帳で正しく開けないファイル転送については、binaryコマンドにより転送モードを変更するようにしましょう。

 



FTPを終了する場合、bye コマンドを入力します。これによりコマンドプロンプトに戻るので後はexitで終了。

 


◆ よく使用するFTPコマンド一覧
 

FTPコマンドFTPコマンドの説明
ftpFTP接続を行う。例えばFTPサーバが192.168.0.1なら “ftp 192.168.0.1” と入力
lsFTPサーバ側のディレクトリにあるファイルの一覧表示
cdFTPサーバ側の現在のディレクトリの移動
lcdFTPクライアント側の現在のディレクトリの移動
getFTPクライアントからFTPサーバに対して、1つのファイルをダウンロード
mgetFTPクライアントからFTPサーバに対して、複数のファイルをダウンロード
putFTPクライアントからFTPサーバに対して、1つのファイルをアップロード
mputFTPクライアントからFTPサーバに対して、複数のファイルをアップロード
binary転送モードをbinaryモードに変更
ascii転送モードをasciiモードに変更
deleteFTPサーバ側の1つのファイルの削除
mdeleteFTPサーバ側の複数のファイルの削除
rmdirFTPサーバ側のディレクトリの削除
mkdirFTPサーバ側にディレクトリを作成
renameFTPサーバ側にあるファイルの名前変更
byeFTPサーバとの切断 ( quit コマンドも同じ )

※最新の情報の取得・更新に努めておりますが、掲載内容については、その正確性、完全性、有用性、最新性等についていかなる保証もするものではありません。

タイトルとURLをコピーしました