<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>技術情報サイト</title>
	<atom:link href="http://www.fogacom.com/tech/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.fogacom.com/tech</link>
	<description>株式会社フォーガ</description>
	<lastBuildDate>Mon, 14 Nov 2011 00:27:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>TCP(Transmission Control Protoco)</title>
		<link>http://www.fogacom.com/tech/?p=931</link>
		<comments>http://www.fogacom.com/tech/?p=931#comments</comments>
		<pubDate>Mon, 17 Oct 2011 09:06:45 +0000</pubDate>
		<dc:creator>ueda</dc:creator>
				<category><![CDATA[通信プロトコル]]></category>

		<guid isPermaLink="false">http://www.fogacom.com/tech/?p=931</guid>
		<description><![CDATA[1. TCPとは 1.1. 概要 TCPはOSI参照モデルにおけるトランスポート層(第4層)に位置します。下位プロトコルはIP(Internet Protocol)です。UDP(User Datagram Protocol)と並んで、インターネット(TCP/IP)で使用される主要なトランスポート・プロトコルとなっています。 TCPには以下のような特徴があります。 全二重通信(双方から同時にデータを送受信可能)を提供する。 通信の信頼性を重視している。 コネクション型のプロトコルであり、状態を持つ(ステートフル)。 TCPにおけるアドレスはポート番号です。IPアドレスとの組み合わせで、通信相手となるホスト上のアプリケーションまでを特定します。 1.2. 機能 TCPの主要な機能を以下に示します。 コネクションの確立・切断 信頼性の確保 フロー制御 1.2.1. コネクションの確立・切断 データ転送に先立って、双方のやりとりによりコネクションを確立します。また、データ転送終了時にコネクションを切断します。コネクションの確立・切断においては、双方が自身の内部状態を管理します。 本記事では、この機能について解説します。(3章) 1.2.2. 信頼性の確保 パケットの順序制御(シーケンス番号により、パケットの順序性を保障する) 再送制御(確認応答番号により、相手に到達していないと思われるパケットを再送する) 誤り訂正(チェックサムにより誤りを検出し、パケットを破棄して再送させる) により、データ転送の信頼性を確保します。 1.2.3. フロー制御 ウィンドウサイズにより、一度に(確認応答なしに)送信するデータの量を調整し、データ転送の効率化を図ります。 2. TCPパケット・フォーマット TCPパケット(TCPセグメントとも呼ばれる)のフォーマットを以下に示します。 (数値はオクテット) 表1.1 パケット・フォーマット 0 1 &#8230; <a href="http://www.fogacom.com/tech/?p=931">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--TOC--><br />
<span id="more-931"></span></p>
<h1>1. TCPとは</h1>
<h2>1.1. 概要</h2>
<p>TCPはOSI参照モデルにおけるトランスポート層(第4層)に位置します。下位プロトコルはIP(Internet Protocol)です。UDP(User Datagram Protocol)と並んで、インターネット(TCP/IP)で使用される主要なトランスポート・プロトコルとなっています。<br />
TCPには以下のような特徴があります。</p>
<ul>
<li>全二重通信(双方から同時にデータを送受信可能)を提供する。</li>
<li>通信の信頼性を重視している。</li>
<li>コネクション型のプロトコルであり、状態を持つ(ステートフル)。</li>
</ul>
<p>TCPにおけるアドレスはポート番号です。IPアドレスとの組み合わせで、通信相手となるホスト上のアプリケーションまでを特定します。</p>
<h2>1.2. 機能</h2>
<p>TCPの主要な機能を以下に示します。</p>
<ul>
<li>コネクションの確立・切断</li>
<li>信頼性の確保</li>
<li>フロー制御</li>
</ul>
<h3>1.2.1. コネクションの確立・切断</h3>
<p>データ転送に先立って、双方のやりとりによりコネクションを確立します。また、データ転送終了時にコネクションを切断します。コネクションの確立・切断においては、双方が自身の内部状態を管理します。<br />
本記事では、この機能について解説します。(3章)</p>
<h3>1.2.2. 信頼性の確保</h3>
<ul>
<li>パケットの順序制御(シーケンス番号により、パケットの順序性を保障する)</li>
<li>再送制御(確認応答番号により、相手に到達していないと思われるパケットを再送する)</li>
<li>誤り訂正(チェックサムにより誤りを検出し、パケットを破棄して再送させる)</li>
</ul>
<p>により、データ転送の信頼性を確保します。</p>
<h3>1.2.3. フロー制御</h3>
<p>ウィンドウサイズにより、一度に(確認応答なしに)送信するデータの量を調整し、データ転送の効率化を図ります。</p>
<h2>2. TCPパケット・フォーマット</h2>
<p>TCPパケット(TCPセグメントとも呼ばれる)のフォーマットを以下に示します。<br />
(数値はオクテット)</p>
<table border="1">
<caption style="text-align: center;">表1.1 パケット・フォーマット</caption>
<tbody>
<tr>
<td style="text-align: center;background: #e6e6e6"></td>
<td style="text-align: center;background: #e6e6e6" colspan="8">0</td>
<td style="text-align: center;background: #e6e6e6" colspan="8">1</td>
<td style="text-align: center;background: #e6e6e6" colspan="8">2</td>
<td style="text-align: center;background: #e6e6e6" colspan="8">3</td>
</tr>
<tr>
<td style="text-align: center;background: #e6e6e6">0</td>
<td colspan="16">送信元ポート番号</td>
<td colspan="16">宛先ポート番号</td>
</tr>
<tr>
<td style="text-align: center;background: #e6e6e6">4</td>
<td colspan="32">シーケンス番号</td>
</tr>
<tr>
<td style="text-align: center;background: #e6e6e6">8</td>
<td colspan="32">確認応答番号</td>
</tr>
<tr>
<td style="text-align: center;background: #e6e6e6">12</td>
<td colspan="4">データ・オフセット</td>
<td colspan="4">予約</td>
<td colspan="8">コードビット</td>
<td colspan="16">ウィンドウサイズ</td>
</tr>
<tr>
<td style="text-align: center;background: #e6e6e6">16</td>
<td colspan="16">チェックサム</td>
<td colspan="16">緊急ポインタ</td>
</tr>
<tr>
<td style="text-align: center;background: #e6e6e6">20</td>
<td colspan="32">オプション</td>
</tr>
<tr>
<td style="text-align: center;background: #e6e6e6">※</td>
<td colspan="32">データ　※データ・オフセットで指定した位置から</td>
</tr>
</tbody>
</table>
<p>各フィールドの詳細は以下の通りです。</p>
<table border="1">
<caption style="text-align: center;">表1.2 パケット・フィールド詳細</caption>
<tbody>
<tr>
<td style="text-align: center;background: #e6e6e6" width="150">フィールド名</td>
<td style="text-align: center;background: #e6e6e6" width="450">説明</td>
</tr>
<tr>
<td>送信元ポート番号</td>
<td>送信元のポート番号。</td>
</tr>
<tr>
<td>宛先ポート番号</td>
<td>宛先のポート番号。</td>
</tr>
<tr>
<td>シーケンス番号</td>
<td>複数のパケットに分割して転送するデータの、先頭からのオクテット数を格納する。</td>
</tr>
<tr>
<td>確認応答番号</td>
<td>送信元が次に送信すべきパケットのシーケンス番号を格納する。送信元は、これをもって直前のシーケンス番号のパケットが相手に到達したと判断する。</td>
</tr>
<tr>
<td>データ・オフセット</td>
<td>データの開始位置を4オクテット単位で指定する。オプションがない場合は「5」となる。</td>
</tr>
<tr>
<td>コードビット</td>
<td>8つのフラグで構成される。先頭から順にCWR、ECE、URG、ACK、PSH、RST、SYN、FIN。</td>
</tr>
<tr>
<td>ウィンドウサイズ</td>
<td>一度に(確認応答なしに)受信できるデータサイズを相手に通知する。</td>
</tr>
<tr>
<td>チェックサム</td>
<td>パケットの誤りを検出する。</td>
</tr>
<tr>
<td>緊急ポインタ</td>
<td>URGフラグが1の時に、緊急データの開始位置をデータ開始位置からのオクテット数で指定する。緊急データは、受信したアプリケーションが緊急に処理すべきデータであるが、TCP上の意味はない。</td>
</tr>
<tr>
<td>オプション</td>
<td>TCPパケットの機能拡張のためのフィールドで、複数個連続して格納できる(オプションリスト)。単一のオプションは種類(1バイト)、サイズ(1バイト)、データで構成される。オプション全体のサイズが4オクテットの倍数でない場合、4オクテットの倍数になるよう0でパディングする。</td>
</tr>
<tr>
<td>データ</td>
<td>転送するデータ。</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.fogacom.com/tech/?feed=rss2&#038;p=931</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>第一回：Asteriskってなんだ？</title>
		<link>http://www.fogacom.com/tech/?p=918</link>
		<comments>http://www.fogacom.com/tech/?p=918#comments</comments>
		<pubDate>Mon, 03 Oct 2011 22:38:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Asterisk]]></category>

		<guid isPermaLink="false">http://www.fogacom.com/tech/?p=918</guid>
		<description><![CDATA[第一回：Asteriskってなんだ？ 1. Asteriskって？ AsteirskはオープンソースのPBX(Private Branch eXchange)です。 米国Digium社のMark Spencer氏によって開発され、現在は同社を中心としたコミュニティで開発、メンテナンスが継続されています。 2. PBXって？ 上述しましたが、Private Branch eXchangeのそれぞれの単語から文字を取った言葉です。 日本語でもそのままPBXという言葉で使うことが多いですが、訳語を当てるなら「構内交換機」という言葉が一般的なようです。 このPBX、どのような環境で使うかというと、企業の内線網の構築に使われます。 小規模企業や零細企業では家庭電話で済まされてしまうことが多いですが、中堅企業規模になると、一つのオフィスで複数(電話番号で言うと10番号とか)の回線を持つことも珍しくありません。それぞれの番号が「代表番号」であったり「ある部署へのダイヤルイン(直通電話)」であったりするわけです。 　 図1: 家庭用電話機では1電話機が1電話番号を持つ 家庭用電話であると、電話番号に対応した電話線を接続した電話機が鳴ります。もちろん取れば相手と通話ができますが、「xx部の○○さんをお願いします」などと言われたら、どうしましょうか？ とりあえず保留して「○○さ～ん、電話！」と呼ぶでしょう。しかしそれが隣の部署だったりしたら、大変です。その人を呼びに行くか、コードレスフォンならその電話機をその人のところまで持っていかなければなりません。 こんなことをしていたら効率が悪いですよね。 PBXを導入するとどうなるかと言うと、複数の外線の回線を全部PBXに接続します。また、オフィス内の個々人に電話機を割り当て、それも全てPBXに接続します。個々人に割り当てた電話機を「内線電話」と言いますが、「どの外線(どの電話番号)から着信したらどの内線電話を鳴らすか」というルールをPBXで設定することができます。 図2: PBXには外線と電話機を接続する これだけでは先ほどの家庭用電話とほとんど変わりがありませんが、PBXを用いることで得られる効果としては次に示す内線間通話と転送という機能があります。 内線電話にはそれぞれ「内線番号」が割り当てられます。ある内線電話機から、別の内線電話機の番号をダイヤルするとその電話機が鳴ります。遠くの部署に居る人にちょっと聞きたいことがある、などと言う場合はわざわざ席を立たずとも話をすることができます。中堅規模の企業であれば、「そんな無精をせずとも」と思われるかもしれませんが、広い敷地を持つ大企業になったりすると、この機能は侮れません。 次に転送機能です。これがPBXの中心的な機能かもしれません。 PBXに接続された外線から着信すると、対応した電話機が鳴るのは上述したとおりです。その電話で「xx部の○○さんをお願いします」などと言われ、全く違う部署の電話だった場合、電話機を操作するだけで、その電話を転送することができます。ありがちな操作としては、「保留」ボタンを押して相手を保留状態にし、同じ電話機で先ほどの内線間通話の機能で目的の相手(上の例ではxx部の○○さん)を呼び出します。○○さんが電話に出たら「○○さんにお電話ですよ～」と一声かけて転送ボタンを押します。これで外線からかかってきた電話を○○さんに転送する操作が完了します。 このように、PBXは電話を受けた人だけでなく、他所から電話をかけてきた人にもストレスを感じさせずに電話を便利に使えるようにしてくれるものです。 3. Asteriskにできること AsteriskはPBXを名乗っています。従来のPBXでできることはほぼできます。 それ以外にもできることはたくさんありますが、それは追々説明していきます。 4. Asteriskを動かすには何が必要？ 「動かしてみたいけど電話でしょ？特別な機材が必要なんじゃないの？」と思われるかも知れませんが、とりあえず動かす分であれば、精々サーバが動く環境とソフトフォンが二種類あればOKです。 幸い、今はVMWare Playerのように仮想環境を容易に構築できるものが無償で手に入ります。Asteriskをインストールするマシンは仮想マシンで十分です。 ソフトフォンが二種類必要と言うのは、一つのPCで同じソフトフォンを複数立ち上げられないからです。異なるアプリであれば、ソフトフォンであっても複数立ち上げられるので、試してみる分にはそれで十分です。もちろん、PCが二台あれば言うこと無しです。 &#8230; <a href="http://www.fogacom.com/tech/?p=918">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1>第一回：Asteriskってなんだ？</h1>
<p><!--TOC--></p>
<p><span id="more-918"></span></p>
<h2>1. Asteriskって？</h2>
<p>AsteirskはオープンソースのPBX(Private Branch eXchange)です。</p>
<p>米国Digium社のMark Spencer氏によって開発され、現在は同社を中心としたコミュニティで開発、メンテナンスが継続されています。</p>
<h2>2. PBXって？</h2>
<p>上述しましたが、Private Branch eXchangeのそれぞれの単語から文字を取った言葉です。</p>
<p>日本語でもそのままPBXという言葉で使うことが多いですが、訳語を当てるなら「構内交換機」という言葉が一般的なようです。</p>
<p>このPBX、どのような環境で使うかというと、企業の内線網の構築に使われます。</p>
<p>小規模企業や零細企業では家庭電話で済まされてしまうことが多いですが、中堅企業規模になると、一つのオフィスで複数(電話番号で言うと10番号とか)の回線を持つことも珍しくありません。それぞれの番号が「代表番号」であったり「ある部署へのダイヤルイン(直通電話)」であったりするわけです。</p>
<p>　<br />
<img class="aligncenter size-medium wp-image-820" src="/wordpress/wp-content/uploads/2011/02/home_telephone-300x235.png" alt="" width="300" height="235" /></p>
<p style="text-align: center;">図1: 家庭用電話機では1電話機が1電話番号を持つ</p>
<p>家庭用電話であると、電話番号に対応した電話線を接続した電話機が鳴ります。もちろん取れば相手と通話ができますが、「xx部の○○さんをお願いします」などと言われたら、どうしましょうか？</p>
<p>とりあえず保留して「○○さ～ん、電話！」と呼ぶでしょう。しかしそれが隣の部署だったりしたら、大変です。その人を呼びに行くか、コードレスフォンならその電話機をその人のところまで持っていかなければなりません。</p>
<p>こんなことをしていたら効率が悪いですよね。</p>
<p>PBXを導入するとどうなるかと言うと、複数の外線の回線を全部PBXに接続します。また、オフィス内の個々人に電話機を割り当て、それも全てPBXに接続します。個々人に割り当てた電話機を「内線電話」と言いますが、「どの外線(どの電話番号)から着信したらどの内線電話を鳴らすか」というルールをPBXで設定することができます。</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-818" src="/wordpress/wp-content/uploads/2011/02/PBXの回線収容-300x153.jpg" alt="" width="300" height="153" />図2: PBXには外線と電話機を接続する</p>
<p>これだけでは先ほどの家庭用電話とほとんど変わりがありませんが、PBXを用いることで得られる効果としては次に示す内線間通話と転送という機能があります。</p>
<p>内線電話にはそれぞれ「内線番号」が割り当てられます。ある内線電話機から、別の内線電話機の番号をダイヤルするとその電話機が鳴ります。遠くの部署に居る人にちょっと聞きたいことがある、などと言う場合はわざわざ席を立たずとも話をすることができます。中堅規模の企業であれば、「そんな無精をせずとも」と思われるかもしれませんが、広い敷地を持つ大企業になったりすると、この機能は侮れません。</p>
<p>次に転送機能です。これがPBXの中心的な機能かもしれません。</p>
<p>PBXに接続された外線から着信すると、対応した電話機が鳴るのは上述したとおりです。その電話で「xx部の○○さんをお願いします」などと言われ、全く違う部署の電話だった場合、電話機を操作するだけで、その電話を転送することができます。ありがちな操作としては、「保留」ボタンを押して相手を保留状態にし、同じ電話機で先ほどの内線間通話の機能で目的の相手(上の例ではxx部の○○さん)を呼び出します。○○さんが電話に出たら「○○さんにお電話ですよ～」と一声かけて転送ボタンを押します。これで外線からかかってきた電話を○○さんに転送する操作が完了します。</p>
<p>このように、PBXは電話を受けた人だけでなく、他所から電話をかけてきた人にもストレスを感じさせずに電話を便利に使えるようにしてくれるものです。</p>
<p><!--more--></p>
<h2>3. Asteriskにできること</h2>
<p>AsteriskはPBXを名乗っています。従来のPBXでできることはほぼできます。</p>
<p>それ以外にもできることはたくさんありますが、それは追々説明していきます。</p>
<p><!--more--></p>
<h2>4. Asteriskを動かすには何が必要？</h2>
<p>「動かしてみたいけど電話でしょ？特別な機材が必要なんじゃないの？」と思われるかも知れませんが、とりあえず動かす分であれば、精々サーバが動く環境とソフトフォンが二種類あればOKです。</p>
<p>幸い、今はVMWare Playerのように仮想環境を容易に構築できるものが無償で手に入ります。Asteriskをインストールするマシンは仮想マシンで十分です。</p>
<p>ソフトフォンが二種類必要と言うのは、一つのPCで同じソフトフォンを複数立ち上げられないからです。異なるアプリであれば、ソフトフォンであっても複数立ち上げられるので、試してみる分にはそれで十分です。もちろん、PCが二台あれば言うこと無しです。</p>
<p>試してみる環境にひかり電話のルータがある場合、これと組み合わせて外線と発着信させることも可能です。もっともこれについてはNTTの認識がどうであるかが微妙ですが…。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fogacom.com/tech/?feed=rss2&#038;p=918</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POP3(Post Office Protocol – Version 3)</title>
		<link>http://www.fogacom.com/tech/?p=871</link>
		<comments>http://www.fogacom.com/tech/?p=871#comments</comments>
		<pubDate>Mon, 12 Sep 2011 05:38:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[通信プロトコル]]></category>

		<guid isPermaLink="false">http://www.fogacom.com/tech/?p=871</guid>
		<description><![CDATA[1. POP3とは POP3は、電子メールクライアントが、電子メールサーバからメールを取得するためのプロトコルです。電子メールサーバは、ユーザ宛てのメールを、ユーザ毎に用意されたメールボックスに保存しています。ユーザは、メールボックスから自身のメールを取得する前に、サーバから「認証」される必要があります。ユーザは、サーバから認証されると、メールボックスへのアクセスが許可され、POP3コマンドを送信します。サーバはPOP3プロトコルに従って、それらのコマンドを処理します。 2. POP3の状態遷移 POP3セッションの状態遷移を図2-1に示します。 電子メールサーバは、TCPポートの110でクライアントからのTCP接続要求を待ち受けます。クライアントからのTCP接続要求に対し、サーバは例えば以下のような応答を返し、セッションは「認証（AUTHORIZATION）状態」になります。 S: +OK POP3 server ready 認証状態では、クライアントは、サーバに対して身分証明をします。認証方法として、USERとPASSコマンドによる方法と、APOPコマンドによる方法があります。認証が成功すると、サーバはメールボックスをロックし、セッションは「トランザクション（TRANSACTION）状態」になります。 トランザクション状態では、クライアントはメールボックスへのアクセスが許可され、トランザクション状態で発行可能なPOP3コマンドを送信します。サーバはPOP3プロトコルに従って、それらのコマンドを処理します。メールの削除を要求するDELEコマンドを受信した場合、サーバは、そのメールに削除マークを付けますが、実際の削除は更新状態で実行されます。トランザクション状態でユーザがQUITコマンドを送信すると、セッションは「更新（UPDATE）状態」になります。 更新状態では、トランザクション状態でDELEコマンドにより削除マークが付けられたメールをメールボックスから削除し、メールボックスのロックを解除します。サーバは最後にQUITコマンドに対して応答を返し、TCP接続を終了させます。 図2.1 POP3セッションの状態遷移図 3. POP3コマンド POP3のコマンド一覧を表3.1に示します。 表3.1 コマンド一覧 4. POP3シーケンス POP3シーケンスの例を図4.1に示します。 図4.1 POP3シーケンス図]]></description>
			<content:encoded><![CDATA[<p><!--TOC--><br />
<span id="more-871"></span></p>
<h2>1. POP3とは</h2>
<p>POP3は、電子メールクライアントが、電子メールサーバからメールを取得するためのプロトコルです。電子メールサーバは、ユーザ宛てのメールを、ユーザ毎に用意されたメールボックスに保存しています。ユーザは、メールボックスから自身のメールを取得する前に、サーバから「認証」される必要があります。ユーザは、サーバから認証されると、メールボックスへのアクセスが許可され、POP3コマンドを送信します。サーバはPOP3プロトコルに従って、それらのコマンドを処理します。</p>
<h2>2. POP3の状態遷移</h2>
<p>POP3セッションの状態遷移を図2-1に示します。<br />
電子メールサーバは、TCPポートの110でクライアントからのTCP接続要求を待ち受けます。クライアントからのTCP接続要求に対し、サーバは例えば以下のような応答を返し、セッションは「認証（AUTHORIZATION）状態」になります。</p>
<pre>
S:  +OK POP3 server ready
</pre>
<p>認証状態では、クライアントは、サーバに対して身分証明をします。認証方法として、USERとPASSコマンドによる方法と、APOPコマンドによる方法があります。認証が成功すると、サーバはメールボックスをロックし、セッションは「トランザクション（TRANSACTION）状態」になります。<br />
トランザクション状態では、クライアントはメールボックスへのアクセスが許可され、トランザクション状態で発行可能なPOP3コマンドを送信します。サーバはPOP3プロトコルに従って、それらのコマンドを処理します。メールの削除を要求するDELEコマンドを受信した場合、サーバは、そのメールに削除マークを付けますが、実際の削除は更新状態で実行されます。トランザクション状態でユーザがQUITコマンドを送信すると、セッションは「更新（UPDATE）状態」になります。<br />
更新状態では、トランザクション状態でDELEコマンドにより削除マークが付けられたメールをメールボックスから削除し、メールボックスのロックを解除します。サーバは最後にQUITコマンドに対して応答を返し、TCP接続を終了させます。<br />
<img class="aligncenter size-full wp-image-193" title="2" src="/tech/wp-content/uploads/2011/08/2.bmp" alt="2" /></p>
<div style="text-align: center;">図2.1 POP3セッションの状態遷移図</div>
<p></p>
<h2>3. POP3コマンド</h2>
<p>POP3のコマンド一覧を表3.1に示します。</p>
<table border="0" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表3.1 コマンド一覧</caption>
</table>
<p><img class="aligncenter size-full wp-image-180" title="1" src="/tech/wp-content/uploads/2011/08/1.bmp" alt="" /><br />
</p>
<h2>4. POP3シーケンス</h2>
<p>POP3シーケンスの例を図4.1に示します。<br />
<img src="/tech/wp-content/uploads/2011/08/pop3_sequence.jpg" alt="" title="pop3_sequence" width="678" height="964" class="aligncenter size-full wp-image-1903" /></p>
<div style="text-align: center;">図4.1 POP3シーケンス図</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fogacom.com/tech/?feed=rss2&#038;p=871</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ethernet</title>
		<link>http://www.fogacom.com/tech/?p=128</link>
		<comments>http://www.fogacom.com/tech/?p=128#comments</comments>
		<pubDate>Fri, 26 Aug 2011 07:18:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[通信プロトコル]]></category>

		<guid isPermaLink="false">https://www.fogacom.com/tech/?p=128</guid>
		<description><![CDATA[1. イーサネットとは 1.1. イーサネットとは イーサネットは、1973年にゼロックス社のPARCコンピュータサイエンス研究所によって発明されたネットワーク規格です。イーサネットという名称は、かつて「宇宙に満たされていて電磁波を伝えると信じられていた仮想物質」としていた「Ether(エーテル)」に由来し、これと「Network」を組み合わせたもので「Ethernet（イーサネット）」としました。 イーサネットは、IEEE802.3において規格化されており、一般的にLANの構成において最も使用されている規格です。 1.2. LANとは LAN(Local Area Network)とは、敷地や建物内といった比較的狭いエリアにおいて、コンピュータなどの機器同士を接続し、互いに通信を行うネットワーク規格のことを指します。代表的なものにイーサネット、トークンリング、FDDIの３つのLAN規格が存在していますが、イーサネットが最も一般的に使われているLANとなります。（トークンリング、FDDIは、あまり使用されておりません） 1.2.1. LANの種類 表1.1 LANの種類 規格 IEEE 伝送速度 イーサネット 802.3 10Mbps ～ トークンリング 802.5 4Mbps,16Mbps FDDI - 100Mbps～ &#160; 1.3. IEEE802とは 1.3.1. IEEE802のワーキンググループ IEEEとは、米国電気電子技術者協会のことで、802とはLANの標準化を行う委員会のことを指します。IEEE802委員会には、ワーキンググループが存在し、IEEE802.3のグループでは、イーサネットについて規格化を行っています。以下の表は、６つのワーキンググループについてまとめたものです。（他にもワーキンググループは存在します） 表1.2 IEEE802のワーキンググループ一覧表 ワーキング グループ ワーキング グループ名 &#8230; <a href="http://www.fogacom.com/tech/?p=128">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--TOC--><br />
<span id="more-128"></span></p>
<h1>1. イーサネットとは</h1>
<h2>1.1. イーサネットとは</h2>
<p>イーサネットは、1973年にゼロックス社のPARCコンピュータサイエンス研究所によって発明されたネットワーク規格です。イーサネットという名称は、かつて「宇宙に満たされていて電磁波を伝えると信じられていた仮想物質」としていた「Ether(エーテル)」に由来し、これと「Network」を組み合わせたもので「Ethernet（イーサネット）」としました。<br />
イーサネットは、IEEE802.3において規格化されており、一般的にLANの構成において最も使用されている規格です。</p>
<h2>1.2. LANとは</h2>
<p>LAN(Local Area Network)とは、敷地や建物内といった比較的狭いエリアにおいて、コンピュータなどの機器同士を接続し、互いに通信を行うネットワーク規格のことを指します。代表的なものにイーサネット、トークンリング、FDDIの３つのLAN規格が存在していますが、イーサネットが最も一般的に使われているLANとなります。（トークンリング、FDDIは、あまり使用されておりません）</p>
<h3>1.2.1. LANの種類</h3>
<table style="text-align: center; margin: 0 auto;">
<caption style="text-align: center;">表1.1 LANの種類</caption>
<tbody>
<tr>
<th style="text-align: center; background: #e6e6e6">規格</th>
<th style="text-align: center; background: #e6e6e6">IEEE</th>
<th style="text-align: center; background: #e6e6e6">伝送速度</th>
</tr>
<tr>
<td style="text-align: center; background: #b0c4de;"><strong>イーサネット</strong></td>
<td style="text-align: center; background: #b0c4de;"><strong>802.3</strong></td>
<td style="text-align: center; background: #b0c4de;"><strong>10Mbps ～</strong></td>
</tr>
<tr>
<td style="text-align: center;">トークンリング</td>
<td style="text-align: center;">802.5</td>
<td style="text-align: center;">4Mbps,16Mbps</td>
</tr>
<tr>
<td style="text-align: center;">FDDI</td>
<td style="text-align: center;">-</td>
<td style="text-align: center;">100Mbps～</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h2>1.3. IEEE802とは</h2>
<h3>1.3.1. IEEE802のワーキンググループ</h3>
<p>IEEEとは、米国電気電子技術者協会のことで、802とはLANの標準化を行う委員会のことを指します。IEEE802委員会には、ワーキンググループが存在し、IEEE802.3のグループでは、イーサネットについて規格化を行っています。以下の表は、６つのワーキンググループについてまとめたものです。（他にもワーキンググループは存在します）</p>
<table style="width: 500px; text-align: center; margin: 0 auto;">
<caption style="text-align: center;">表1.2 IEEE802のワーキンググループ一覧表</caption>
<tbody>
<tr>
<th style="text-align: center; width: 70px; background: #e6e6e6">ワーキング<br />
グループ</th>
<th style="text-align: center; width: 70px; background: #e6e6e6">ワーキング<br />
グループ名</th>
<th style="text-align: center; width: 300px; background: #e6e6e6; vertical-align: middle;">プロジェクト</th>
</tr>
<tr>
<td style="text-align: center; vertical-align: middle;">802.1</td>
<td style="text-align: center; vertical-align: middle;">HILI</td>
<td style="text-align: center;">(Higher layer LAN protocols)<br />
高位レベルレイヤインターフェイス</td>
</tr>
<tr>
<td style="text-align: center; vertical-align: middle;">802.2</td>
<td style="text-align: center; vertical-align: middle;">LLC</td>
<td style="text-align: center;">(Logical Link Control)<br />
論理リンク制御</td>
</tr>
<tr>
<td style="text-align: center; background: #b0c4de; vertical-align: middle;"><strong>802.3</strong></td>
<td style="text-align: center; background: #b0c4de;"><strong>Ethernet CSMA/CD</strong></td>
<td style="text-align: center; background: #b0c4de;"><strong>CSMA/CD方式<br />
イーサネットにおける基本的な通信手順</strong></td>
</tr>
<tr>
<td style="text-align: center;">802.4</td>
<td style="text-align: center;">Token bus</td>
<td style="text-align: center;">トークン・バス</td>
</tr>
<tr>
<td style="text-align: center;">802.5</td>
<td style="text-align: center;">Token Ring</td>
<td style="text-align: center;">トークン・リング</td>
</tr>
<tr>
<td style="text-align: center;">802.11<br />
a/b/g/n</td>
<td style="text-align: center; vertical-align: middle;">WLAN</td>
<td style="text-align: center;">(Wireless LAN)<br />
無線LAN</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>IEEE802.3には、802.3aや802.3iのように分科会が存在し、それぞれの分科会において規格化されています。<br />
接続形態においては、１本のバスにすべてのコンピュータを接続するバス型と、ハブを中心としてコンピュータを接続するスター型の二種類に分かれます。「Ethernet」の名称においては通信速度に応じて規格化され「Fast Ethernet」は100Mbps、「Gigabit Ethernet」は1Gbps(1000Mbps)の総称となります。これらをひと括りにして「Ethernet」と呼ぶこともあります。</p>
<table style="text-align: center; margin: 0 auto;">
<caption style="text-align: center;"> 表1.3 イーサネットとIEEE802.3規格の一覧表<br />
</caption>
<tbody>
<tr>
<th style="text-align: center; background: #e6e6e6">名称</th>
<th style="text-align: center; background: #e6e6e6">通信速度</th>
<th style="text-align: center; background: #e6e6e6">規格名</th>
<th style="text-align: center; background: #e6e6e6">標準化規格</th>
<th style="text-align: center; background: #e6e6e6">接続形態</th>
</tr>
<tr>
<td style="text-align: center; vertical-align: middle;" rowspan="3">Ethernet</td>
<td style="text-align: center; vertical-align: middle;" rowspan="3">10Mbps</td>
<td style="text-align: center;">10BASE-5</td>
<td style="text-align: center;">IEEE 802.3</td>
<td style="text-align: center;">バス型</td>
</tr>
<tr>
<td style="text-align: center;">10BASE-2</td>
<td style="text-align: center;">IEEE 802.3a</td>
<td style="text-align: center;">バス型</td>
</tr>
<tr>
<td style="text-align: center;">10BASE-T</td>
<td style="text-align: center;">IEEE 802.3i</td>
<td style="text-align: center;">スター型</td>
</tr>
<tr>
<td style="text-align: center;" align="right">Fast Ethernet</td>
<td style="text-align: center;">100Mbps</td>
<td style="text-align: center;">100BASE-TX</td>
<td style="text-align: center;">IEEE 802.3u</td>
<td style="text-align: center;">スター型</td>
</tr>
<tr>
<td style="text-align: center;" align="right" valign="top">Gigabit Ethernet<br />
(GbE)</td>
<td style="text-align: center;" align="right">1Gbps<br />
(1000Mbps)</td>
<td style="text-align: center; vertical-align: middle;">1000BASE-T</td>
<td style="text-align: center; vertical-align: middle;">IEEE 802.3ab</td>
<td style="text-align: center; vertical-align: middle;">スター型</td>
</tr>
<tr>
<td style="text-align: center;">10 Gigabit Ethernet<br />
(10GbE)</td>
<td style="text-align: center; vertical-align: middle;">10Gbps</td>
<td style="text-align: center; vertical-align: middle;">10GBASE-T</td>
<td style="text-align: center; vertical-align: middle;">IEEE 802.3an</td>
<td style="text-align: center; vertical-align: middle;">スター型</td>
</tr>
</tbody>
</table>
<p></p>
<h3>1.3.2. OSI参照モデルとLAN規格の対応</h3>
<p>イーサネットは、OSI参照モデルにおける物理層(L1)及びデータリンク層(L2)をサポートしています。<br />
イーサネットの場合、物理層にあたる規定は、ケーブルとコネクタです。ケーブルには、同軸ケーブル、UTPケーブル、光ファイバケーブルが使われます。</p>
<table>
<caption style="text-align: center;">表1.4 OSI参照モデルの各階層とIEEE802.xの対応表</caption>
<tbody>
<tr>
<th style="text-align: center; background: #e6e6e6" colspan="2">　OSI参照モデル　</th>
<th style="text-align: center; background: #e6e6e6" colspan="5">IEEE802(LANの規格)</th>
</tr>
<tr>
<td style="text-align: center;" colspan="2" align="right">アプリケーション層</td>
<td style="text-align: center; vertical-align: middle;" colspan="5" rowspan="5">IEEE<br />802.1</td>
</tr>
<tr>
<td style="text-align: center; word-break: keep-all;" colspan="2">プレゼンテーション層</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2">セッション層</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2">トランスポート層</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2">ネットワーク層</td>
</tr>
<tr>
<td style="width: 100%; text-align: center; background: #b0c4de; vertical-align: middle;" rowspan="2"><strong>データリンク層</strong></td>
<td style="text-align: center; vertical-align: middle;">LLC<br />副層</td>
<td style="text-align: center; vertical-align: middle;" colspan="5">IEEE<br />802.2</td>
</tr>
<tr>
<td style="text-align: center; background: #b0c4de; vertical-align: middle;"><strong>MAC<br />副層</strong></td>
<td style="text-align: center; background: #b0c4de; vertical-align: middle;" rowspan="2"><strong>IEEE<br />802.3</strong></td>
<td style="text-align: center; vertical-align: middle;" rowspan="2">IEEE<br />802.4</td>
<td style="text-align: center; vertical-align: middle;" rowspan="2">IEEE<br />802.5</td>
<td style="text-align: center; vertical-align: middle;" rowspan="2">…</td>
<td style="text-align: center; vertical-align: middle;" rowspan="2">FDDI</td>
</tr>
<tr>
<td style="text-align: center; background: #b0c4de;" colspan="2"><strong>物理層</strong></td>
</tr>
</tbody>
</table>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fogacom.com/tech/?feed=rss2&#038;p=128</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IP(Internet Protocol)</title>
		<link>http://www.fogacom.com/tech/?p=316</link>
		<comments>http://www.fogacom.com/tech/?p=316#comments</comments>
		<pubDate>Fri, 26 Aug 2011 06:59:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[通信プロトコル]]></category>

		<guid isPermaLink="false">https://www.fogacom.com/tech/?p=316</guid>
		<description><![CDATA[1. IPとは インターネット層に所属するルーティング可能なプロトコルで、インターネットにおける基本伝送単位 であるデータグラムやインターネットのアドレス方式を定義します。また、アドレス付け(IP Addressing)、ルーティング、データグラムの分割と再構築を担当します。 ※本記事ではIPv4について解説します。 1.1. 特徴 表1.1 特徴 特徴 説明 コネクションレス 応答確認を行わない 信頼性がない 必ず宛先ホストに届く保証はない ※上のトランスポート層のTCP(Transmission Control Protocol)との組み合わせで、信頼性のある伝送を実現する パケット交換型 データグラムは独立に伝送される ベストエフォート型 データグラムの紛失、重複、到着順序の乱れのエラーが起こっても、回復を試みない ※配信に関するエラーや状態の報告、診断は同じ層の上位プロトコルICMP（Internet Control Message Protocol）に任せて行う 1.2. 伝送データ 表1.2 伝送データ 単位 データグラム データ長 ネットワークのデータリンクの最大転送単位(MTU)で制限される為、一定でない フォーマット IPヘッダ（32ビット整数倍の長さ）とIPデータから構成される 1.3. 機能 ●アドレス付け(IP &#8230; <a href="http://www.fogacom.com/tech/?p=316">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--TOC--><br />
<span id="more-316"></span></p>
<h2>1. IPとは</h2>
<div>インターネット層に所属するルーティング可能なプロトコルで、インターネットにおける基本伝送単位 であるデータグラムやインターネットのアドレス方式を定義します。また、アドレス付け(IP Addressing)、ルーティング、データグラムの分割と再構築を担当します。<br />
※本記事ではIPv4について解説します。</div>
<p></p>
<h3>1.1. 特徴</h3>
<table border="1" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表1.1 特徴</caption>
<tbody>
<tr>
<td style="text-align: center; background: #e6e6e6;" width="149" valign="top"><strong>特徴</strong></td>
<td style="text-align: center; background: #e6e6e6;" width="431" valign="top"><strong>説明</strong></td>
</tr>
<tr>
<td width="149" valign="top">コネクションレス</td>
<td width="431" valign="top">応答確認を行わない</td>
</tr>
<tr>
<td width="149" valign="top">信頼性がない</td>
<td width="431" valign="top">
<div>必ず宛先ホストに届く保証はない</div>
<div>※上のトランスポート層のTCP(Transmission   Control Protocol)との組み合わせで、信頼性のある伝送を実現する</div>
</td>
</tr>
<tr>
<td width="149" valign="top">パケット交換型</td>
<td width="431" valign="top">データグラムは独立に伝送される</td>
</tr>
<tr>
<td width="149" valign="top">ベストエフォート型</td>
<td width="431" valign="top">
<div>データグラムの紛失、重複、到着順序の乱れのエラーが起こっても、回復を試みない</div>
<div>※配信に関するエラーや状態の報告、診断は同じ層の上位プロトコルICMP（Internet Control   Message Protocol）に任せて行う</div>
</td>
</tr>
</tbody>
</table>
<div><span style="color: #000000;"> </span></div>
<h3>1.2. 伝送データ</h3>
<table border="1" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表1.2 伝送データ</caption>
<tbody>
<tr>
<td width="130" valign="top"><strong>単位</strong></td>
<td width="450" valign="top">データグラム</td>
</tr>
<tr>
<td width="130" valign="top"><strong>データ長</strong></td>
<td width="450" valign="top">ネットワークのデータリンクの最大転送単位(MTU)で制限される為、一定でない</td>
</tr>
<tr>
<td width="130" valign="top"><strong>フォーマット</strong></td>
<td width="450" valign="top">IPヘッダ（32ビット整数倍の長さ）とIPデータから構成される</td>
</tr>
</tbody>
</table>
<div><span style="color: #000000; font-size: small;"> </span></div>
<h3>1.3. 機能</h3>
<ol>
	●アドレス付け(IP Addressing)<br />
	●ルーティング(IP Routing)<br />
	●データグラムの分割と再構築(Fragmentation)
</ol>
<p></p>
<h2>2. データグラム</h2>
<p>IPで伝送するデータはデータグラムまたはIPパケットと呼ばれます。厳密的にコネクションレス型のデータはデータグラムで、コネクション型（TCPとセットで伝送する場合）のデータはIPパケットと呼ばれます。（※本記事はIP中心に記述する為、以降、「データグラム」で記述します。）<br />
データグラムはIPヘッダとIPデータから構成され、詳細は下表の通りです。また、データグラム長を制限する最大転送単位(MTU：maximum-transmission unit)はネットワークのデータリンク技術によって異なります。<br />
</p>
<table border="0" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表2.1 データグラムのフォーマット</caption>
<tbody />
<img class="aligncenter size-full wp-image-346" title="ip-header-format" src="/tech/wp-content/uploads/2011/08/ip-header-format.png" alt="" width="603" height="223" /></p>
<table border="1" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表2.2 構成の詳細</caption>
<tbody>
<tr>
<td style="text-align: center; background: #e6e6e6;" width="177" valign="top"><strong>構成部分</strong></td>
<td style="text-align: center; background: #e6e6e6;" colspan="2" width="403" valign="top"><strong>説明</strong></td>
</tr>
<tr>
<td width="177" valign="top">バージョン</td>
<td colspan="2" width="403" valign="top">使用しているIPのバージョンを示す</td>
</tr>
<tr>
<td width="177" valign="top">IPヘッダ長 (IHL)</td>
<td colspan="2" width="403" valign="top">データグラムヘッダ長を示す（IPデータの開始位置の把握ができる）</td>
</tr>
<tr>
<td rowspan="9" width="177" valign="top">サービスタイプ</td>
<td colspan="2" width="403" valign="top">必要な特定のQOS(Quality Of Service)を指定する（データグラムを正しい優先順位で処理できる）。各ビットの意味一覧は下記の通り。</td>
</tr>
<tr>
<td style="text-align: center; background: #e6e6e6;" width="201" valign="top">ビット</td>
<td style="text-align: center; background: #e6e6e6;" width="201" valign="top">意味</td>
</tr>
<tr>
<td width="201" valign="top">012</td>
<td width="201" valign="top">優先度</td>
</tr>
<tr>
<td width="201" valign="top">3</td>
<td width="201" valign="top">最低限の遅延</td>
</tr>
<tr>
<td width="201" valign="top">4</td>
<td width="201" valign="top">最大限のスループット</td>
</tr>
<tr>
<td width="201" valign="top">5</td>
<td width="201" valign="top">最大限の信頼</td>
</tr>
<tr>
<td width="201" valign="top">6</td>
<td width="201" valign="top">最小限の経費</td>
</tr>
<tr>
<td width="201" valign="top">(3～6)</td>
<td width="201" valign="top">最大限のセキュリティ</td>
</tr>
<tr>
<td width="201" valign="top">7</td>
<td width="201" valign="top">未使用</td>
</tr>
<tr>
<td width="177" valign="top">パケット長</td>
<td colspan="2" width="403" valign="top">IPヘッダとIPデータを加えたパケット全体のオクテット長を示す</td>
</tr>
<tr>
<td width="177" valign="top">識別子</td>
<td colspan="2" width="403" valign="top">分割されたデータグラム（フラグメント）を再構築の際に識別子として使用する</td>
</tr>
<tr>
<td rowspan="5" width="177" valign="top">フラグ</td>
<td colspan="2" width="403" valign="top">分割（フラグメンテーション）の有無を指定する。各ビットの意味一覧は下記の通り</td>
</tr>
<tr>
<td style="text-align: center; background: #e6e6e6;" width="201" valign="top">ビット</td>
<td style="text-align: center; background: #e6e6e6;" width="201" valign="top">意味</td>
</tr>
<tr>
<td width="201" valign="top">0</td>
<td width="201" valign="top">未使用（必ず0）</td>
</tr>
<tr>
<td width="201" valign="top">1</td>
<td width="201" valign="top">分割不可</td>
</tr>
<tr>
<td width="201" valign="top">2</td>
<td width="201" valign="top">後継フラグメント有</td>
</tr>
<tr>
<td width="177" valign="top">フラグメントオフセット</td>
<td colspan="2" width="403" valign="top">分割されたデータグラム（フラグメント）の分割前の位置（元データのどこに位置しているか）を示す</td>
</tr>
<tr>
<td width="177" valign="top">生存時間（TTL）</td>
<td colspan="2" width="403" valign="top">ルータを通過する度に1つずつ減らされ、0になったらパケットは廃棄される（データグラムがルーティングループに捕らわれるのを防ぐ為）</td>
</tr>
<tr>
<td width="177" valign="top">プロトコル</td>
<td colspan="2" width="403" valign="top">上位層のプロトコル（例：TCP、UDP）を示す</td>
</tr>
<tr>
<td width="177" valign="top">ヘッダチェックサム</td>
<td colspan="2" width="403" valign="top">宛先ステーションや中間ステーションに制御情報が無事に着いたことを保証する為、ヘッダ内の情報チェックが行う</td>
</tr>
<tr>
<td width="177" valign="top">送信元IPアドレス</td>
<td colspan="2" width="403" valign="top">送信元IPアドレスを示す</td>
</tr>
<tr>
<td width="177" valign="top">宛先IPアドレス</td>
<td colspan="2" width="403" valign="top">宛先IPアドレスを示す</td>
</tr>
<tr>
<td width="177" valign="top">オプション</td>
<td colspan="2" width="403" valign="top">可変長の長さでテストやデバッグなどの場合に使用される</td>
</tr>
<tr>
<td width="177" valign="top">パディング</td>
<td colspan="2" width="403" valign="top">オブションを付けた場合はヘッダ長を32ビット整数倍になるように調整する為の詰めもの</td>
</tr>
<tr>
<td width="177" valign="top">IPデータ</td>
<td colspan="2" width="403" valign="top">上位層に必要なすべての情報を保持する</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.fogacom.com/tech/?feed=rss2&#038;p=316</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FTP(File Transfer Protocol)</title>
		<link>http://www.fogacom.com/tech/?p=63</link>
		<comments>http://www.fogacom.com/tech/?p=63#comments</comments>
		<pubDate>Fri, 05 Aug 2011 05:50:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[通信プロトコル]]></category>

		<guid isPermaLink="false">https://www.fogacom.com/tech/?p=63</guid>
		<description><![CDATA[1. FTPとは FTP（File Transfer Protocol／ファイル転送プロトコル）は、その名前の通りホスト間でファイルを転送するためのプロトコルです。その歴史は非常に古く、インターネット初期の頃から存在します。 TELNETやHTTPなどと同様、テキストベースのプロトコルです。 2. 通信モデル 図2.1はFTPの通信モデルを示します。 FTPは一般的な通信プロトコルとは異なり「コントロール コネクション」と「データ コネクション」の2つのコネクションを使用します。 コントロールコネクションでは、クライアントからサーバにコマンドを送信し、サーバは応答コードとメッセージを応答します。 データコネクションでは、コントロールコネクションでクライアントがファイル一覧(LIST)コマンドやファイルの送受信(RETR/STOR)コマンドを送信した場合に、ファイルの一覧やファイル内容が送信されます。 2.1. サーバ間転送 コントロールコネクションとデータコネクションが分離していることにより、図2.1のようにクライアントが2台のサーバに接続し、それぞれのサーバにファイルの送信(RETR)／受信(STOR)コマンドを送信することにより、サーバ間でファイルを転送することができます。但し、クライアントがこのような操作に未対応の場合、そのクライアントではサーバ間での転送は実行できません。 2.2. FTPコマンド アクセス制御コマンド 表2.1 アクセス制御コマンド一覧 コマンド 名前 説明 RFC USER USER NAME ログインユーザ名を指定します。 959 PASS PASSWORD ログインパスワードを指定します。 959 CWD CHANGE WORKING DIRECTORY 作業ディレクトリを移動します。 &#8230; <a href="http://www.fogacom.com/tech/?p=63">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--TOC--><br />
<span id="more-63"></span></p>
<h2>1. FTPとは</h2>
<p>FTP（File Transfer Protocol／ファイル転送プロトコル）は、その名前の通りホスト間でファイルを転送するためのプロトコルです。その歴史は非常に古く、インターネット初期の頃から存在します。<br />
TELNETやHTTPなどと同様、テキストベースのプロトコルです。</p>
<h2>2. 通信モデル</h2>
<p>図2.1はFTPの通信モデルを示します。</p>
<div id="attachment_826" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-826 " src="/wordpress/wp-content/uploads/2011/02/FTP_Model2.png" alt="FTP通信モデル" width="480" height="440" /><p class="wp-caption-text">図2.1 FTPの通信モデル（RFC959より抜粋）</p></div>
<p>FTPは一般的な通信プロトコルとは異なり「<strong><em>コントロール コネクション</em></strong>」と「<em><strong>データ コネクション</strong></em>」の2つのコネクションを使用します。</p>
<p>コントロールコネクションでは、クライアントからサーバにコマンドを送信し、サーバは応答コードとメッセージを応答します。</p>
<p>データコネクションでは、コントロールコネクションでクライアントがファイル一覧(<code>LIST</code>)コマンドやファイルの送受信(<code>RETR/STOR</code>)コマンドを送信した場合に、ファイルの一覧やファイル内容が送信されます。</p>
<h3>2.1. サーバ間転送</h3>
<p>コントロールコネクションとデータコネクションが分離していることにより、図2.1のようにクライアントが2台のサーバに接続し、それぞれのサーバにファイルの送信(<code>RETR</code>)／受信(<code>STOR</code>)コマンドを送信することにより、サーバ間でファイルを転送することができます。但し、クライアントがこのような操作に未対応の場合、そのクライアントではサーバ間での転送は実行できません。</p>
<h3>2.2. FTPコマンド</h3>
<ul>
<li>アクセス制御コマンド</li>
</ul>
<table border="1" cellpadding="10">
<caption style="text-align: center;">表2.1 アクセス制御コマンド一覧</caption>
<thead>
<tr >
<th width="50" style="text-align: center; background: #e6e6e6;">コマンド</th>
<th width="100" style="text-align: center; background: #e6e6e6;">名前</th>
<th width="250" style="text-align: center; background: #e6e6e6;">説明</th>
<th width="20" style="text-align: center;background: #e6e6e6;">RFC</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">USER</td>
<td>USER NAME</td>
<td>ログインユーザ名を指定します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">PASS</td>
<td>PASSWORD</td>
<td>ログインパスワードを指定します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">CWD</td>
<td>CHANGE WORKING DIRECTORY</td>
<td>作業ディレクトリを移動します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">CDUP</td>
<td>CHANGE TO PARENT DIRECTORY</td>
<td>作業ディレクトリを親ディレクトリに移動します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">REIN</td>
<td>REINITIALIZE</td>
<td>コントロールコネクションを維持したまま、全てのパラメータを初期設定にリセットします（コントロールコネクションを開いた直後と同じ状態）。<br />
但し、実行中の転送は完了するまで継続されます。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">QUIT</td>
<td>LOGOUT</td>
<td>ログアウトし、コントロールコネクションを切断します。ファイルを転送中の場合、直ちには切断せずに結果を応答後に切断します。</td>
<td>959</td>
</tr>
</tbody>
</table>
<ul>
<li>転送パラメータコマンド</li>
</ul>
<table border="1" cellpadding="10">
<caption style="text-align: center;">表2.2 転送パラメータコマンド一覧</caption>
<thead>
<tr>
<th width="50" style="text-align: center; background: #e6e6e6;">コマンド</th>
<th width="100" style="text-align: center; background: #e6e6e6;">名前</th>
<th width="250" style="text-align: center; background: #e6e6e6;">説明</th>
<th width="20" style="text-align: center; background: #e6e6e6;">RFC</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">PORT</td>
<td>DATA PORT</td>
<td>データコネクション用のIPアドレスとポート番号をサーバに通知します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">PASV</td>
<td>PASSIVE</td>
<td>サーバにデータコネクションを開くことを通知します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">TYPE</td>
<td>REPRESENTATION TYPE</td>
<td>データ形式を指定します。</td>
<td>959</td>
</tr>
</tbody>
</table>
<ul>
<li>FTPサービスコマンド</li>
</ul>
<table border="1" cellpadding="10">
<caption style="text-align: center;">表2.3 FTPサービスコマンド一覧</caption>
<thead>
<tr>
<th width="50" style="text-align: center; background: #e6e6e6;">コマンド</th>
<th width="100" style="text-align: center; background: #e6e6e6;">名前</th>
<th width="250" style="text-align: center; background: #e6e6e6;">説明</th>
<th width="20" style="text-align: center; background: #e6e6e6;">RFC</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">RETR</td>
<td>RETRIEVE</td>
<td>サーバから転送するファイルのパスを指定します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">STOR</td>
<td>STORE</td>
<td>サーバ上に保存するファイルのパスを指定します。既にサーバ上に存在する場合は上書きします。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">STOU</td>
<td>STORE UNIQUE</td>
<td><code>STOR</code>コマンドと同様に、サーバ上に保存するファイルのパスを指定します。但し、既に存在する場合はエラーを応答します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">APPE</td>
<td>APPEND (with create)</td>
<td>ファイルに追記します</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">ALLO</td>
<td>ALLOCATE</td>
<td>ファイルを保存するのに十分なディスクスペースを割り当てます。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">REST</td>
<td>RESTART</td>
<td>ファイルの転送を再開します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">RNFR</td>
<td>RENAME FROM</td>
<td>ファイル移動／ファイル名変更対象ファイルのパスを指定します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">RNTO</td>
<td>RENAME TO</td>
<td>ファイル移動／ファイル名変更時の変更後のパスを指定します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">ABOR</td>
<td>ABORT</td>
<td>ファイルの転送を中止します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">DELE</td>
<td>DELETE</td>
<td>ファイルを削除します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">RMD</td>
<td>REMOVE DIRECTORY</td>
<td>ディレクトリを削除します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">MKD</td>
<td>MAKE DIRECTORY</td>
<td>ディレクトリを作成します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">PWD</td>
<td>PRINT WORKING DIRECTORY</td>
<td>現在の作業ディレクトリを取得します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">LIST</td>
<td>LIST</td>
<td>ファイルの情報やディレクトリの一覧を取得します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">NLST</td>
<td>NAME LIST</td>
<td>ディレクトリの一覧を取得します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">SITE</td>
<td>SITE PARAMETERS</td>
<td>RFCでは定義されていないような、リモートサーバ特有のコマンドを送信します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">SYST</td>
<td>SYSTEM</td>
<td>システムの種別を取得します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">STAT</td>
<td>STATUS</td>
<td>現在の状態を取得します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">HELP</td>
<td>HELP</td>
<td>コマンドの一覧を取得します。</td>
<td>959</td>
</tr>
<tr>
<td style="text-align: center">NOOP</td>
<td>NOOP</td>
<td>何もしません。コネクション維持などのためのダミーパケットとしてよく使用されます。</td>
<td>959</td>
</tr>
</tbody>
</table>
<h2>3. 主な関連RFC</h2>
<table border="1" cellpadding="10">
<caption style="text-align: center;">表3.1 主な関連RFC</caption>
<tbody>
<tr>
<td style="text-align: center" bgcolor="yellow"><a href="http://tools.ietf.org/html/rfc959" target="_blank">RFC959</a><br />
(<a title="STD0009" href="http://www.rfc-editor.org/rfc/std/std9.txt" target="_blank">STD0009</a>)</td>
<td bgcolor="palegreen">File Transfer Protocol</td>
</tr>
<tr>
<td style="text-align: center" bgcolor="yellow"><a href="http://tools.ietf.org/html/rfc1123" target="_blank">RFC1123</a></td>
<td bgcolor="palegreen">Requirements for Internet Hosts &#8212; Application and Support<br />
（4.1節に記述あり）</td>
</tr>
<tr>
<td style="text-align: center" bgcolor="yellow"><a href="http://tools.ietf.org/html/rfc1579" target="_blank">RFC1579</a></td>
<td bgcolor="palegreen">Firewall-Friendly FTP</td>
</tr>
<tr>
<td style="text-align: center" bgcolor="yellow"><a href="http://tools.ietf.org/html/rfc2228" target="_blank">RFC2228</a></td>
<td bgcolor="palegreen">FTP Security Extensions</td>
</tr>
<tr>
<td style="text-align: center" bgcolor="yellow"><a href="http://tools.ietf.org/html/rfc2389" target="_blank">RFC2389</a></td>
<td bgcolor="palegreen">Feature negotiation mechanism for the File Transfer Protocol</td>
</tr>
<tr>
<td style="text-align: center" bgcolor="yellow"><a href="http://tools.ietf.org/html/rfc2428" target="_blank">RFC2428</a></td>
<td bgcolor="palegreen">FTP Extensions for IPv6 and NATs</td>
</tr>
<tr>
<td style="text-align: center" bgcolor="yellow"><a href="http://tools.ietf.org/html/rfc2640" target="_blank">RFC2640</a></td>
<td bgcolor="palegreen">Internationalization of the File Transfer Protocol</td>
</tr>
<tr>
<td style="text-align: center" bgcolor="yellow"><a href="http://tools.ietf.org/html/rfc3659" target="_blank">RFC3659</a></td>
<td bgcolor="palegreen">Extensions to FTP</td>
</tr>
<tr>
<td style="text-align: center" bgcolor="yellow"><a href="http://tools.ietf.org/html/rfc4217" target="_blank">RFC4217</a></td>
<td bgcolor="palegreen">Securing FTP with TLS</td>
</tr>
<tr>
<td style="text-align: center" bgcolor="yellow"><a href="http://tools.ietf.org/html/rfc5797" target="_blank">RFC5797</a></td>
<td bgcolor="palegreen">FTP Command and Extension Registry</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.fogacom.com/tech/?feed=rss2&#038;p=63</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IMAP(Internet Message Access Protocol)</title>
		<link>http://www.fogacom.com/tech/?p=47</link>
		<comments>http://www.fogacom.com/tech/?p=47#comments</comments>
		<pubDate>Fri, 05 Aug 2011 05:44:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[通信プロトコル]]></category>

		<guid isPermaLink="false">https://www.fogacom.com/tech/?p=47</guid>
		<description><![CDATA[1. IMAPとは IMAPとは電子メールプロトコルの1種です。POP3と同様にメールサーバのメールボックスからメールを取得するに使用するプロトコルです。使用しているポート番号は143（IMAP2、IMAP4)と220(IMAP3)になります。 ※本記事ではIMAP4(Internet Message Access Protocol – Version 4)について解説します。 2. IMAP4とPOP3との違い IMAP4とPOP3との最大の違いはメールの管理方法です。 POP3のメール管理特徴 ・ヘッダやメール全体のダウンロード機能しかないです。 ・ダウンロードされたメールはサーバに残らないです。 ・ローカルPCでメールボックス、メールを管理します。 表2.1 POP3のメール管理のメリットとデメリット メリット メールボックスの管理はローカル環境上で行う為、処理時間が短い デメリット ダウンロードしたメールは共用ではない 複数のデバイスで同じメールを読むには転送が必要 IMAP4のメール管理特徴 ・メールを部分的にダウンロードすることが可能です。 （例：複数の添付ファイルから指定したもののみをダウンロードすることができます。） ・サーバー上でメールを保管します。 （メールはローカルPCにダウンロードされても、サーバに保管されます。） ・サーバー上でメールボックスを管理します。 表2.2 IMAP4メールのメール管理のメリットとデメリット メリット 同一のユーザが複数のPCまたは他のデバイスを利用しても、メールのやり取りや編集ができますので、モバイル環境での利用は便利 サーバにメールを管理する為、メール内容だけでなく、メールの情報（例：既読、未読）の共用ができる 部分的にダウンロードができる為、通信回線の帯域が小さい時に役立つ デメリット サーバでメールを保管する為、管理コストがかかる ネット上でのメールボックスの管理指示により、ローカル環境より処理時間がかかる サーバ上でのメールボックス管理の為、処理時間がサーバ性能に影響される &#8230; <a href="http://www.fogacom.com/tech/?p=47">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--TOC--><br />
<span id="more-47"></span></p>
<h2>1. IMAPとは</h2>
<p style="text-align: left;">IMAPとは電子メールプロトコルの1種です。POP3と同様にメールサーバのメールボックスからメールを取得するに使用するプロトコルです。使用しているポート番号は143（IMAP2、IMAP4)と220(IMAP3)になります。<br />
※本記事ではIMAP4(Internet Message Access Protocol – Version 4)について解説します。</p>
<h2>2. IMAP4とPOP3との違い</h2>
<p>IMAP4とPOP3との最大の違いはメールの管理方法です。</p>
<ul>
<li><strong>POP3</strong><strong>のメール管理特徴</strong><br />
<br />
・ヘッダやメール全体のダウンロード機能しかないです。<br />
・ダウンロードされたメールはサーバに残らないです。<br />
・ローカルPCでメールボックス、メールを管理します。</li>
</ul>
<table border="1" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表2.1 POP3のメール管理のメリットとデメリット</caption>
<tbody>
<tr>
<td width="80" valign="top"><strong>メリット</strong></td>
<td width="600" valign="top">メールボックスの管理はローカル環境上で行う為、処理時間が短い</td>
</tr>
<tr>
<td width="80" valign="top"><strong>デメリット</strong></td>
<td width="600" valign="top">ダウンロードしたメールは共用ではない<br />
複数のデバイスで同じメールを読むには転送が必要</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>IMAP4</strong><strong>のメール管理特徴</strong><br />
<br />
・メールを部分的にダウンロードすることが可能です。<br />
（例：複数の添付ファイルから指定したもののみをダウンロードすることができます。）<br />
・サーバー上でメールを保管します。<br />
（メールはローカルPCにダウンロードされても、サーバに保管されます。）<br />
・サーバー上でメールボックスを管理します。</li>
</ul>
<table border="1" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表2.2 IMAP4メールのメール管理のメリットとデメリット</caption>
<tbody>
<tr>
<td rowspan="3" width="80" valign="top"><strong>メリット</strong></td>
<td width="600" valign="top">同一のユーザが複数のPCまたは他のデバイスを利用しても、メールのやり取りや編集ができますので、モバイル環境での利用は便利</td>
</tr>
<tr>
<td width="600" valign="top">サーバにメールを管理する為、メール内容だけでなく、メールの情報（例：既読、未読）の共用ができる</td>
</tr>
<tr>
<td width="600" valign="top">部分的にダウンロードができる為、通信回線の帯域が小さい時に役立つ</td>
</tr>
<tr>
<td rowspan="3" width="80" valign="top"><strong>デメリット</strong></td>
<td width="600" valign="top">サーバでメールを保管する為、管理コストがかかる</td>
</tr>
<tr>
<td width="600" valign="top">ネット上でのメールボックスの管理指示により、ローカル環境より処理時間がかかる</td>
</tr>
<tr>
<td width="600" valign="top">サーバ上でのメールボックス管理の為、処理時間がサーバ性能に影響される</td>
</tr>
</tbody>
</table>
<h2>3. 主な機能</h2>
<p>・認証<br />
・メールボックスの管理（複数のメールボックスの利用が可能）<br />
・メールの取得／変更／削除／保存<br />
・メール属性の付加（メッセージフラグでメールの情報（例：既読/未読）を識別します。）<br />
・メールの検索（メールをダウンロードせずに検索ができます。）<br />
・メールの同期（メーラのデータがサーバ上のと同じデータを保持することができます。）</p>
<h2>4. 主なリクエストコマンド</h2>
<table border="1" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表4.1 主なリクエストコマンド</caption>
<tbody>
<tr>
<td style="text-align: center; background: #e6e6e6;" width="150" valign="top"><strong>機能</strong></td>
<td style="text-align: center; background: #e6e6e6;" width="200" valign="top"><strong>コマンド</strong></td>
<td style="text-align: center; background: #e6e6e6;" width="200" valign="top"><strong>説明</strong></td>
<td style="text-align: center; background: #e6e6e6;" width="100" valign="top"><strong>参照</strong></td>
</tr>
<tr>
<td rowspan="3" width="150" valign="top">認証</td>
<td width="200" valign="top">LOGIN ユーザー名 パスワード</td>
<td width="200" valign="top">ログイン</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">AUTHENTICATE 認証方法名</td>
<td width="200" valign="top">認証方法の指定</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">LOGOUT</td>
<td width="200" valign="top">ログアウト</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td rowspan="6" width="150" valign="top">メールボックス<br />
管理</td>
<td width="200" valign="top">SELECT メールボックス名</td>
<td width="200" valign="top">メールボックスの選択</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">CREATE メールボックス名</td>
<td width="200" valign="top">メールボックスの新規作成</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">DELETE メールボックス名</td>
<td width="200" valign="top">メールボックスの削除</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">RENAME 旧メールボックス名 新メールボックス名</td>
<td width="200" valign="top">メールボックス名の変更</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">LIST 参照位置 ワイルドカード</td>
<td width="200" valign="top">メールボックス一覧の表示</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">STATUS メールボックス名 取得ステータス</td>
<td width="200" valign="top">メールボックスのステータスの表示</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td rowspan="3" width="150" valign="top">メールボックス<br />
の購読／中止</td>
<td width="200" valign="top">SUBSCRIBE メールボックス名</td>
<td width="200" valign="top">メールボックスの購読</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">UNSUBSCRIBE メールボックス名</td>
<td width="200" valign="top">メールボックスの購読の中止</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">LSUB 参照位置 ワイルドカード</td>
<td width="200" valign="top">購読しているメールボックスの一覧の表示</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td rowspan="5" width="150" valign="top">メール操作</td>
<td width="200" valign="top">SEARCH [キャラクタセット] 検索条件</td>
<td width="200" valign="top">検索条件に満たしたメールの検索</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">FETCH メッセージ番号 取得データ種類</td>
<td width="200" valign="top">メールメッセージの取得</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">STORE メッセージ番号 フラグ状態 フラグ名</td>
<td width="200" valign="top">指定したメッセージ番号のメールのフラグの変更</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">COPY メッセージ番号 メールボックス名</td>
<td width="200" valign="top">指定したメールボックスに指定したメッセージ番号のメールをコピーする</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="200" valign="top">EXPUNGE</td>
<td width="200" valign="top">現在\Deletedフラグの立っているすべてのメールの削除</td>
<td width="100" valign="top">RFC2060</td>
</tr>
</tbody>
</table>
<h2 style="text-align: left;">5. レスポンスコード</h2>
<table border="1" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表5.1 レスポンスコード一覧</caption>
<tbody>
<tr>
<td style="text-align: center; background: #e6e6e6;" width="193" valign="top"><strong>レスポンスコード</strong></td>
<td style="text-align: center; background: #e6e6e6;" width="258" valign="top"><strong>意味</strong></td>
<td style="text-align: center; background: #e6e6e6;" width="100" valign="top"><strong>参照</strong></td>
</tr>
<tr>
<td width="193" valign="top">OK</td>
<td width="258" valign="top">正常終了</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">BAD</td>
<td width="258" valign="top">異常終了／命令不明または引数無効</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">BYE</td>
<td width="258" valign="top">ログアウト</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">NO</td>
<td width="258" valign="top">何らかの問題でコマンドが拒否された場合</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">PREAUTH</td>
<td width="258" valign="top">サーバの設定などによって認証の必要がない場合</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">ALERT</td>
<td width="258" valign="top">警告情報を示す</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">APPENDUID UID-Validity UID</td>
<td width="258" valign="top">APPEND時に、APPENDしたメールのメールボックスのUID-ValidityとメールのUIDを示す</td>
<td width="100" valign="top">RFC2359</td>
</tr>
<tr>
<td width="193" valign="top">COPYUID<br />
＜コピー元UID-Validity＞<br />
＜コピー先UID-Validity＞,<br />
＜コピー元UID＞<br />
＜コピー先UID＞</td>
<td width="258" valign="top">COPY時に、コピー元とコピー先のメールボックスのUID-Validityと、コピー元とコピー先のメールUIDを示す</td>
<td width="100" valign="top">RFC2359</td>
</tr>
<tr>
<td width="193" valign="top">NEWNAME<br />
＜旧メールボックス名＞<br />
＜新メールボックス名＞</td>
<td width="258" valign="top">メールボックを改名された時、新旧のメールボックス名を示す。主にSELECT／EXAMINEコマンドに対して返答される</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">PARSE</td>
<td width="258" valign="top">メールのMIME構造の解析エラーを示す</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">PERMANENTFLAGS<br />
＜フラグリスト＞</td>
<td width="258" valign="top">PERMANENT（永続性）フラグの種類</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">READ-ONLY</td>
<td width="258" valign="top">メールボックスは読み込み専用であることを示す</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">READ-WRITE</td>
<td width="258" valign="top">メールボックスは読み込み／書き込みが可能であることを示す</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">REFERRAL IMAP-URL</td>
<td width="258" valign="top">ログイン時やメールボックスの操作時に、ほかのサーバに対してユーザがログインやメールボックスへ変更すべきことを示す。「ログイン リフェラル」または「メールボックス リフェラル」とも呼ばれる</td>
<td width="100" valign="top">RFC2221<br />
RFC2193</td>
</tr>
<tr>
<td width="193" valign="top">TRYCREATE</td>
<td width="258" valign="top">要求されたCOPYやAPPENDコマンドで指定されたメールボックスが存在しない為、失敗していることを示す。</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">UIDVALIDITY UID-Validity</td>
<td width="258" valign="top">メールボックスのUID-Validityを示す</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td width="193" valign="top">UNSEEN<br />
＜未読メールメッセージ番号＞</td>
<td width="258" valign="top">未読メールの中の最初のメッセージ番号を示す</td>
<td width="100" valign="top">RFC2060</td>
</tr>
<tr>
<td style="text-align: left;" width="193" valign="top">UIDNEXT UID</td>
<td style="text-align: left;" width="258" valign="top">次に新規メールに割り当てられる予定のUIDを示す</td>
<td style="text-align: left;" width="100" valign="top">RFC2060</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.fogacom.com/tech/?feed=rss2&#038;p=47</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP(Hyper Text Transfer Protocol)</title>
		<link>http://www.fogacom.com/tech/?p=40</link>
		<comments>http://www.fogacom.com/tech/?p=40#comments</comments>
		<pubDate>Fri, 08 Jul 2011 02:53:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[通信プロトコル]]></category>

		<guid isPermaLink="false">https://www.fogacom.com/tech/?p=40</guid>
		<description><![CDATA[1. HTTPとは HTTP(Hyper Text Transfer Protocol/ハイパーテキスト転送プロトコル)は、名前の通りハイパーテキスト(HTMLで記述されたテキスト)を転送するためのプロトコルです。 ただし実際には、ハイパーテキスト以外の様々なデータを転送できる、汎用的なプロトコルとなっています。 HTTPは、クライアント/サーバ型の、ステートレスな(状態を持たない)プロトコルです。 クライアントからのリクエストとそれに対するサーバからのレスポンスで、一回の通信が完結します。 HTTPでは一般的に、下位層プロトコルとしてTCPを使用します。標準ポート番号は80です。 また、通信を暗号化するHTTPS(HTTP over SSL/TLS)も広く利用されており、この場合の下位層プロトコルはSSL/TLS、標準ポート番号は443です。 2. HTTPメッセージ HTTPメッセージはテキストベースです。区切り文字として改行(CRLF)を使用します。 先頭行(リクエストではリクエストライン、レスポンスではステータスライン)、メッセージヘッダ、メッセージボディの3つの部分で構成されます。 以下、リクエストとレスポンスのそれぞれについて説明します。 2.1. リクエスト リクエストの形式を以下に示します。 表2.1 リクエストの形式 部分 形式 例 リクエストライン メソッド リクエストURI HTTPバージョン GET /login.cgi HTTP/1.1 メッセージヘッダ フィールド名: 値 … フィールド名: 値 (空行) &#8230; <a href="http://www.fogacom.com/tech/?p=40">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--TOC--><br />
<span id="more-40"></span></p>
<h2>1. HTTPとは</h2>
<p style="text-align: left;">HTTP(Hyper Text Transfer Protocol/ハイパーテキスト転送プロトコル)は、名前の通りハイパーテキスト(HTMLで記述されたテキスト)を転送するためのプロトコルです。<br />
ただし実際には、ハイパーテキスト以外の様々なデータを転送できる、汎用的なプロトコルとなっています。<br />
HTTPは、クライアント/サーバ型の、ステートレスな(状態を持たない)プロトコルです。<br />
クライアントからのリクエストとそれに対するサーバからのレスポンスで、一回の通信が完結します。<br />
HTTPでは一般的に、下位層プロトコルとしてTCPを使用します。標準ポート番号は80です。<br />
また、通信を暗号化するHTTPS(HTTP over SSL/TLS)も広く利用されており、この場合の下位層プロトコルはSSL/TLS、標準ポート番号は443です。</p>
<p style="text-align: left;"><!--more--></p>
<h2>2. HTTPメッセージ</h2>
<p style="text-align: left;">HTTPメッセージはテキストベースです。区切り文字として改行(CRLF)を使用します。<br />
先頭行(リクエストではリクエストライン、レスポンスではステータスライン)、メッセージヘッダ、メッセージボディの3つの部分で構成されます。<br />
以下、リクエストとレスポンスのそれぞれについて説明します。</p>
<h3>2.1. リクエスト</h3>
<p style="text-align: left;">リクエストの形式を以下に示します。</p>
<table border="1" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表2.1 リクエストの形式</caption>
<tbody>
<tr class="head">
<td style="text-align: center; background: #e6e6e6;"><strong>部分</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>形式</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>例</strong></td>
</tr>
<tr>
<td width="100">リクエストライン</td>
<td class="code">メソッド リクエストURI HTTPバージョン</td>
<td class="code">GET /login.cgi HTTP/1.1</td>
</tr>
<tr>
<td width="100">メッセージヘッダ</td>
<td class="code">フィールド名: 値<br />
…<br />
フィールド名: 値<br />
(空行) </td>
<td class="code">Host: www.fogacom.com<br />
Content-Length: 9<br />
Content-type: application/x-www-form-urlencoded</p>
</td>
</tr>
<tr>
<td width="100">メッセージボディ</td>
<td class="code">メッセージボディ</td>
<td class="code">name=test</td>
</tr>
</tbody>
</table>
<h4>2.1.1. メソッド</h4>
<p style="text-align: left;">リクエストの意味を表します。メソッドを以下に示します。</p>
<table style="text-align: left;" border="1">
<caption style="text-align: center;">表2.2 メソッド一覧</caption>
<tbody>
<tr class="head">
<td style="text-align: center; background: #e6e6e6;"><strong>メソッド</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>説明</strong></td>
</tr>
<tr>
<td class="code">GET</td>
<td>サーバ上のリソースを取得します。最もよく使用されるメソッドです。</td>
</tr>
<tr>
<td class="code">HEAD</td>
<td>GETメソッドで取得できるレスポンスのメッセージヘッダまでを取得します。GETメソッドでリソースを取得する前に、リソースの更新状況を確認するなどの用途に使用されます。</td>
</tr>
<tr>
<td class="code">POST</td>
<td>サーバ上のリソースに対してデータを送信します。サーバサイドで何らかの処理を行わせる場合などに使用されます。</td>
</tr>
<tr>
<td class="code">PUT</td>
<td>サーバ上にリソースを転送します。セキュリティの観点から、使用を禁止しているサーバが多いです。</td>
</tr>
<tr>
<td class="code">DELETE</td>
<td>サーバ上のリソースを削除します。セキュリティの観点から、使用を禁止しているサーバが多いです。</td>
</tr>
<tr>
<td class="code">OPTIONS</td>
<td>サーバ上のリソース、あるいはサーバ自体のオプションを取得します。</td>
</tr>
<tr>
<td class="code">TRACE</td>
<td>リクエストをそのままレスポンスのメッセージボディとして返します。サーバとのHTTP通信の診断に使用されます。</td>
</tr>
<tr>
<td class="code">CONNECT</td>
<td>HTTPSなどの場合に、プロキシにトンネルの確立を要求します。</td>
</tr>
</tbody>
</table>
<h4>2.1.2. リクエストURI</h4>
<p style="text-align: left;">リクエストの対象となるリソースの場所を指定します。指定方法のバリエーションを以下に示します。</p>
<table border="1" cellspacing="0" cellpadding="0">
<caption style="text-align: center;">表2.3 リクエストの対象リソースの例</caption>
<tbody>
<tr>
<td style="text-align: center; background: #e6e6e6;"><strong>リクエストURI</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>接続先ホスト</strong></td>
<td style="text-align: center; background: #e6e6e6; word-break: keep-all"><strong>ポート<br />
番号</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>リソースの場所</strong></td>
</tr>
<tr>
<td>/index.html</td>
<td>Hostヘッダの値</td>
<td style="text-align: right;">80</td>
<td>/index.html</td>
</tr>
<tr>
<td>http://www.fogacom.com/index.html</td>
<td>www.fogacom.com</td>
<td style="text-align: right;">80</td>
<td>/index.html</td>
</tr>
<tr>
<td>http://www.fogacom.com:8080/index.html</td>
<td>www.fogacom.com</td>
<td style="text-align: right;">8080</td>
<td>/index.html</td>
</tr>
</tbody>
</table>
<p><a name="2.1.3"></a></p>
<h4>2.1.3. HTTPバージョン</h4>
<p style="text-align: left;">
HTTPのバージョンです。「HTTP/1.0」を使用しているクライアントもありますが、現在は「HTTP/1.1」が主流です。<br />
※本記事ではHTTP/1.1について解説しています。</p>
<p><a name="2.1.4"></a></p>
<h4>2.1.4. メッセージヘッダ</h4>
<p style="text-align: left;">0個以上のフィールドで構成されます。<br />
フィールドは「フィールド名: 値」の形式です。<br />
形式上は同名のフィールドが複数存在してもかまいません。<br />
異なるフィールド間の順序は問われませんが、同名のフィールドが複数存在する場合のそれらの順序は意味を持つ場合があります。<br />
主なフィールドを以下に示します。</p>
<table style="text-align: left;" border="1">
<caption style="text-align: center;">表2.4 メッセージヘッダの主なフィールド</caption>
<tbody>
<tr class="head">
<td style="text-align: center; background: #e6e6e6;"><strong>フィールド</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>説明</strong></td>
</tr>
<tr>
<td class="code">Host</td>
<td>唯一の必須フィールドです。リクエストの対象となるホスト名を指定します。</td>
</tr>
<tr>
<td class="code">Content-Length</td>
<td>メッセージボディのサイズ(単位はByte)です。POSTメソッドなどでデータを送信する場合に使用します。</td>
</tr>
<tr>
<td class="code">Content-Type</td>
<td>メッセージボディのメディアタイプです。POSTメソッドなどでデータを送信する場合に使用します。</td>
</tr>
<tr>
<td class="code">User-Agent</td>
<td>ユーザエージェント(クライアント)の種類です。<br />
クライアントとして一般的なブラウザを使用している場合、ブラウザの種類やバージョンといった情報が格納されます。<br />
サーバ側では、クライアントのブラウザの種類によって異なるコンテンツを返すなどの利用ができます。</td>
</tr>
<tr>
<td class="code">Accept-Language</td>
<td>レスポンスとして望む自然言語です。<br />
日本語の場合は「ja」となります。<br />
サーバ側では、クライアントの望む言語のコンテンツを返すなどの利用ができます。</td>
</tr>
</tbody>
</table>
<h4>2.1.5. メッセージボディ</h4>
<p style="text-align: left;">サーバへ送信するデータです。</p>
<h3>2.2. レスポンス</h3>
<p style="text-align: left;">レスポンスの形式を以下に示します。</p>
<table style="text-align: left;" border="1">
<caption style="text-align: center;">表2.5 レスポンスの形式一覧</caption>
<tbody>
<tr class="head">
<td style="text-align: center; background: #e6e6e6;"><strong>部分</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>形式</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>例</strong></td>
</tr>
<tr>
<td width="100">ステータスライン</td>
<td class="code">HTTPバージョン ステータスコード 説明句</td>
<td class="code">HTTP/1.1 200 OK</td>
</tr>
<tr>
<td width="100">メッセージヘッダ</td>
<td class="code">フィールド名: 値<br />
…<br />
フィールド名: 値<br />
(空行) </td>
<td class="code">Content-Length: 6<br />
Content-type: text/plain<br />
Last-Modified: Tue, 01 Feb 2011 12:00:00 GMT</p>
</td>
</tr>
<tr>
<td width="100">メッセージボディ</td>
<td class="code">メッセージボディ</td>
<td class="code">Hello!</td>
</tr>
</tbody>
</table>
<h4>2.2.1. HTTPバージョン</h4>
<p style="text-align: left;">「<a href="#2.1.3">2.1.3. HTTPバージョン</a>」を参照。<br />
必ずしもリクエストのHTTPバージョンと同じである必要はなく、サーバが使用しているバージョンを記述します。</p>
<h4>2.2.2. ステータスコード・説明句</h4>
<p style="text-align: left;">ステータスコードは、リクエストに対する処理結果を表す3桁の数字です。説明句はその意味を自然言語で表したものですが、こちらはあくまで人間の理解を助けるためだけの情報です。<br />
ステータスコードは上1桁で分類を表します。<br />
ステータスコードの分類を以下に示します。</p>
<table style="text-align: left;" border="1">
<caption style="text-align: center;">表2.6 ステータスコードの分類</caption>
<tbody>
<tr class="head">
<td style="text-align: center; background: #e6e6e6;"><strong>ステータスコード</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>説明</strong></td>
</tr>
<tr>
<td class="code">1xx</td>
<td>処理を行っている途中であることを表す暫定レスポンスであり、処理完了時にはさらにレスポンスを返します。</td>
</tr>
<tr>
<td class="code">2xx</td>
<td>処理は正常に完了しました。</td>
</tr>
<tr>
<td class="code">3xx</td>
<td>処理を完了するため、クライアントにさらなるリクエストを求めます。いわゆるリダイレクトです。</td>
</tr>
<tr>
<td class="code">4xx</td>
<td>クライアント側に原因があるエラーが発生しました。存在しないリソースをリクエストとするなど、サーバの能力を超えたリクエストを行った場合もこちらに含まれます。</td>
</tr>
<tr>
<td class="code">5xx</td>
<td>サーバ側に原因があるエラーが発生しました。</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">ステータスコードの下2桁で、より具体的な状況を表します。<br />
ただし、下2桁が「00」の場合は、ただ単にその分類で表される結果であることを表します。<br />
主なステータスコードを以下に示します。</p>
<table style="text-align: left;" border="1">
<caption style="text-align: center;">表2.7 各ステータスコードの意味</caption>
<tbody>
<tr class="head">
<td style="text-align: center; background: #e6e6e6;"><strong>ステータスコード・説明句</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>説明</strong></td>
</tr>
<tr>
<td class="code">200 OK</td>
<td>処理は正常に完了しました。</td>
</tr>
<tr>
<td class="code">301 Moved Permanently</td>
<td>リクエストされたリソースは別の場所へ移動しました。<br />
このレスポンスを受け取ったクライアントは、レスポンスのLocationヘッダで指定されたURIにリクエストし直すことで、期待する結果を得ることができます。<br />
この動作をリダイレクトといいます。</td>
</tr>
<tr>
<td class="code">403 Forbidden</td>
<td>リクエストを拒否します。</td>
</tr>
<tr>
<td class="code">404 Not Found</td>
<td>リクエストされたリソースはサーバ上に存在しません。</td>
</tr>
<tr>
<td class="code">503 Service Unavailable</td>
<td>サーバ側の都合によりリクエストを処理できません。</td>
</tr>
</tbody>
</table>
<h4>2.2.3. メッセージヘッダ</h4>
<p style="text-align: left;">「<a href="#2.1.4">2.1.4. メッセージヘッダ</a>」を参照。主なフィールドを以下に示します。</p>
<table style="text-align: left;" border="1">
<caption style="text-align: center;">表2.8 主なメッセージヘッダフィールド</caption>
<tbody>
<tr class="head">
<td style="text-align: center; background: #e6e6e6;"><strong>フィールド</strong></td>
<td style="text-align: center; background: #e6e6e6;"><strong>説明</strong></td>
</tr>
<tr>
<td class="code">Content-Length</td>
<td>メッセージボディのサイズ(単位はByte)です。</td>
</tr>
<tr>
<td class="code">Content-Type</td>
<td>メッセージボディのメディアタイプです。HTMLテキストの場合は「text/html」になります。</td>
</tr>
<tr>
<td class="code">Last-Modified</td>
<td>リソースの最終更新日時です。</td>
</tr>
<tr>
<td class="code">Location</td>
<td>リダイレクト先となるURIです。ステータスコードが3xxの場合に使用します。</td>
</tr>
</tbody>
</table>
<h4>2.2.4. メッセージボディ</h4>
<p style="text-align: left;">クライアントへ送信するデータです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fogacom.com/tech/?feed=rss2&#038;p=40</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SMTP(Simple Mail Transfer Protocol)</title>
		<link>http://www.fogacom.com/tech/?p=37</link>
		<comments>http://www.fogacom.com/tech/?p=37#comments</comments>
		<pubDate>Fri, 08 Jul 2011 02:50:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[通信プロトコル]]></category>

		<guid isPermaLink="false">https://www.fogacom.com/tech/?p=37</guid>
		<description><![CDATA[1. SMTPとは SMTPは、電子メールを送信する時のプロトコルです。 ユーザはSMTPサーバにアクセスすることで、メールの送信を行うことができます。 SMTPはクライアントのメールを自分のサーバに保持します。 実際に送り先まで送られるには、SMTPサーバ同士のメールのやり取りも必要となります。 SMTPサーバはTCPポートの25番で、クライアントのアクセスを待ちます。SMTPクライアントはまずTCPポートでアクセスを行い、接続を確立します。 その後、SMTPクライアントは、SMTPによるログインを行います。ログイン開始は、EHLOもしくはHELOコマンドを利用します。そのまま認証を行うとパスワード盗聴といった問題があるので、通常は、AUTHコマンドやSTARTTLSコマンドを併用して利用します。 接続後、SMTPクライアントは、MAILコマンドで自身のメールアドレス情報を、RCPTコマンドで送信先のメールアドレスをSMTPサーバに送信します。 送信に必要な情報をSMTPサーバに知らせた後、DATAコマンドを利用してメールの本文(From,To,Subjectなども含む)を送ります。送信後は、QUITコマンドにより接続を終了します。 2. SMTPコマンド SMTPのコマンド一覧を表2-1に示します。 表2.1 コマンド一覧 タイミング コマンド 説明 サポート セッション開始 EHLO セッションの開始(接続の確立) 必須 HELO セッションの開始(接続の確立) 必須 AUTH SMTP認証 自由 STARTTLS TLSによるセッション暗号化 自由 メールトランザクション MAIL 発信者の指定 必須 SEND 発信者の指定 自由 SOML &#8230; <a href="http://www.fogacom.com/tech/?p=37">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><!--TOC--><br />
<span id="more-37"></span></p>
<h2>1. SMTPとは</h2>
<p>SMTPは、電子メールを送信する時のプロトコルです。<br />
ユーザはSMTPサーバにアクセスすることで、メールの送信を行うことができます。</p>
<p>SMTPはクライアントのメールを自分のサーバに保持します。<br />
実際に送り先まで送られるには、SMTPサーバ同士のメールのやり取りも必要となります。<br />
SMTPサーバはTCPポートの25番で、クライアントのアクセスを待ちます。SMTPクライアントはまずTCPポートでアクセスを行い、接続を確立します。</p>
<p>その後、SMTPクライアントは、SMTPによるログインを行います。ログイン開始は、EHLOもしくはHELOコマンドを利用します。そのまま認証を行うとパスワード盗聴といった問題があるので、通常は、AUTHコマンドやSTARTTLSコマンドを併用して利用します。</p>
<p>接続後、SMTPクライアントは、MAILコマンドで自身のメールアドレス情報を、RCPTコマンドで送信先のメールアドレスをSMTPサーバに送信します。</p>
<p>送信に必要な情報をSMTPサーバに知らせた後、DATAコマンドを利用してメールの本文(From,To,Subjectなども含む)を送ります。送信後は、QUITコマンドにより接続を終了します。</p>
<h2>2. SMTPコマンド</h2>
<p>SMTPのコマンド一覧を表2-1に示します。</p>
<table border="1" cellspacing="0" cellpadding="0" width="632" align="center">
<colgroup span="1">
<col span="1" width="160"></col>
<col span="1" width="106"></col>
<col span="1" width="288"></col>
<col span="1" width="72"></col>
</colgroup>
<caption style="text-align: center;">表2.1 コマンド一覧</caption>
<tbody>
<tr>
<td style="text-align: center; background: #e6e6e6;"  width="160" height="18"><strong>タイミング</strong></td>
<td style="text-align: center; background: #e6e6e6;"  width="50"><strong>コマンド</strong></td>
<td style="text-align: center; background: #e6e6e6;"  width="288"><strong>説明</strong></td>
<td style="text-align: center; background: #e6e6e6;"  width="72"><strong>サポート</strong></td>
</tr>
<tr>
<td rowspan="4"　valign="top">セッション開始</td>
<td>EHLO</td>
<td>セッションの開始(接続の確立)</td>
<td>必須</td>
</tr>
<tr>
<td>HELO</td>
<td>セッションの開始(接続の確立)</td>
<td>必須</td>
</tr>
<tr>
<td>AUTH</td>
<td>SMTP認証</td>
<td>自由</td>
</tr>
<tr>
<td>STARTTLS</td>
<td>TLSによるセッション暗号化</td>
<td>自由</td>
</tr>
<tr>
<td rowspan="4" valign="top">メールトランザクション</td>
<td>MAIL</td>
<td>発信者の指定</td>
<td>必須</td>
</tr>
<tr>
<td>SEND</td>
<td>発信者の指定</td>
<td>自由</td>
</tr>
<tr>
<td>SOML</td>
<td>発信者の指定</td>
<td>自由</td>
</tr>
<tr>
<td>SAML</td>
<td>発信者の指定</td>
<td>自由</td>
</tr>
<tr>
<td height="19">受信者の決定</td>
<td>RCPT</td>
<td>メールの送信先の指定</td>
<td>必須</td>
</tr>
<tr>
<td rowspan="2" valign="top">サーバへの転送</td>
<td>DATA</td>
<td>メッセージの転送</td>
<td>必須</td>
</tr>
<tr>
<td>BDAT</td>
<td>バイナリメッセージの転送</td>
<td>自由</td>
</tr>
<tr>
<td height="19">セッション終了</td>
<td>QUIT</td>
<td>メールセッションの終了</td>
<td>必須</td>
</tr>
<tr>
<td rowspan="6" valign="top">その他</td>
<td>RSET</td>
<td>メールトランザクションのリセット</td>
<td>必須</td>
</tr>
<tr>
<td>VRFY</td>
<td>メールアドレスの確認</td>
<td>自由</td>
</tr>
<tr>
<td>EXPN</td>
<td>メーリングリストアドレスの展開</td>
<td>自由</td>
</tr>
<tr>
<td>HELP</td>
<td>ヘルプ</td>
<td>自由</td>
</tr>
<tr>
<td>NOOP</td>
<td>何もしない</td>
<td>自由</td>
</tr>
<tr>
<td>ETRN</td>
<td>サーバのqueueをクライアントから扱う</td>
<td>自由</td>
</tr>
</tbody>
</table>
<p align="center">
]]></content:encoded>
			<wfw:commentRss>http://www.fogacom.com/tech/?feed=rss2&#038;p=37</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DNS (Domain Name System)</title>
		<link>http://www.fogacom.com/tech/?p=35</link>
		<comments>http://www.fogacom.com/tech/?p=35#comments</comments>
		<pubDate>Fri, 08 Jul 2011 02:49:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[通信プロトコル]]></category>

		<guid isPermaLink="false">https://www.fogacom.com/tech/?p=35</guid>
		<description><![CDATA[1. DNSとは DNSは、ドメイン名とそれに対応する資源レコードを管理する分散型データベースシステムです。今日では一般にドメイン名からIPアドレスを取得する用途で利用されています。例えば、ウェブブラウザなどのインターネットアプリケーションがホストへ接続するときにはホストのIPアドレスを必要としますが、ホストのドメイン名を入力するだけで接続できます。これは、ドメイン名からIPアドレスを取得するというDNSの仕組みを利用して実現しています。 2. ドメイン名と資源レコード DNSのデータベースはドメイン名空間と呼ばれる木構造をしています。木のノードを指し示す名前のことをドメイン名と呼びます。 木の各ノードにはラベルが付けられています。ドメイン名空間の根はルートノードと呼ばれます。ルートノードのラベルはブランクです。ドメイン名は、それが指し示すノードからルートノード方向へ順番に、左から右へラベルを並べ、ラベル間を「.」で区切った文字列になります。例えば、ルートノードから順番に「com.」「fogacom.」「www」と階層を辿った先のノードは、「www」のノードからルートノード方向へ順番に並べて間を「.」で区切った「www.fogacom.com.」というドメイン名になります。 ルートノードのラベルまでを含めたドメイン名は完全なドメイン名になります。完全なドメイン名は「.」で終わります。ルートノード以外のノードまでのドメイン名は不完全なドメイン名とよばれます。不完全なドメイン名の解釈は実装に依存します。一般的には、ルートノードを起点にその直下のノードから始まるドメイン名と解釈されます。 ラベルは63文字に制限されます。また、ドメイン名は255文字に制限されます。ラベルは英字（a~z、A~Z）、数字（0~9）、ハイフン（-）のみ使用できます。ただし、ラベルの先頭と末尾にはハイフンを使用できません。 各ノードは資源レコードを持ちます。資源レコードはいくつかのクラスに分類されます。さらに、各クラスはいくつかの型を持ちます。例えばクラス=IN（インターネット）、型=A（ホストアドレス）の資源レコードは、ドメイン名に対応するIPアドレスの資源レコードを意味します。資源レコードのクラスと型の詳細については6. 資源レコードにまとめています。 3. ネームサーバ ドメイン名空間はゾーンと呼ばれる部分に分割して管理されます。ゾーンに含まれる全てのノードの情報を管理するサーバプログラムをネームサーバと呼びます。ネームサーバは自身が管理しているゾーンの下位に隣接しているゾーンのネームサーバの情報も持ちます。 ネームサーバには権威ネームサーバとセカンダリネームサーバの2種類あります。権威ネームサーバはゾーンに関する情報をホストのファイルなどから読み込みます。セカンダリネームサーバは他のネームサーバが管理しているゾーン情報のコピーを取得して読み込みます。ゾーン情報のコピーはゾーン転送と呼ばれる仕組みで行われます。 4. リゾルバと問い合わせ リゾルバは、ネームサーバへ問い合わせを行うクライアント側プログラムです。Webブラウザなどのインターネットアプリケーションがドメイン名からIPアドレスを取得する際にはリゾルバを介してネームサーバに問い合わせを行います。 ネームサーバは、リゾルバから問い合わせを受けたドメイン名に対応する資源レコードを持っていればそれを回答します。そうでない場合は、リゾルバからの求めに応じて反復または再帰処理を行います。 反復では、問い合わせを受けたドメイン名に最も近いネームサーバの名前とアドレスを返します。リゾルバは、回答を解析して次にどのネームサーバに問い合わせるかを決めて再度問い合わせを行います。リゾルバは、回答が得られるまで問い合わせを繰り返します。 再帰では、問い合わせを受けたネームサーバが別のネームサーバへ問い合わせを転送します。問い合わせを受けたネームサーバは別のネームサーバから見てリゾルバとして振舞います。別のネームサーバに対しては反復または再帰処理を要求します。下図では、リゾルバから問い合わせを受けたネームサーバが別のネームサーバへ反復で問い合わせして、得られた回答をリゾルバへ戻しています。 リゾルバはネームサーバからの回答をキャッシュする仕組みを備えています。リゾルバは、問い合わせようとしているドメイン名がキャッシュに存在するときはキャッシュから情報を取得してアプリケーションへ戻します。キャッシュを利用することによりネットワークやネームサーバへのアクセスが省略されて処理が高速化されます。 資源レコードが永久にキャッシュされていると、ネームサーバのデータベースが更新されていてもリゾルバが延々と古い情報を参照し続けてしまいます。それを防ぐためにキャッシュされた資源レコードには有効期間（TTL）が設定されています。有効期間を過ぎた資源レコードはキャッシュから削除されます。]]></description>
			<content:encoded><![CDATA[<p><!--TOC--><br />
<span id="more-35"></span></p>
<h2 id="1">1. DNSとは</h2>
<p>DNSは、ドメイン名とそれに対応する資源レコードを管理する分散型データベースシステムです。今日では一般にドメイン名からIPアドレスを取得する用途で利用されています。例えば、ウェブブラウザなどのインターネットアプリケーションがホストへ接続するときにはホストのIPアドレスを必要としますが、ホストのドメイン名を入力するだけで接続できます。これは、ドメイン名からIPアドレスを取得するというDNSの仕組みを利用して実現しています。</p>
<h2 id="2">2. ドメイン名と資源レコード</h2>
<p>DNSのデータベースはドメイン名空間と呼ばれる木構造をしています。木のノードを指し示す名前のことをドメイン名と呼びます。</p>
<div id="attachment_436" class="wp-caption aligncenter" style="width: 464px"><img class="size-full wp-image-436  " src="/tech/wp-content/uploads/2011/08/DNS_1.png" alt="図2.1 ドメイン名空間" width="454" height="291" /><p class="wp-caption-text">図2.1 ドメイン名空間</p></div>
<p>木の各ノードにはラベルが付けられています。ドメイン名空間の根はルートノードと呼ばれます。ルートノードのラベルはブランクです。ドメイン名は、それが指し示すノードからルートノード方向へ順番に、左から右へラベルを並べ、ラベル間を「.」で区切った文字列になります。例えば、ルートノードから順番に「com.」「fogacom.」「www」と階層を辿った先のノードは、「www」のノードからルートノード方向へ順番に並べて間を「.」で区切った「www.fogacom.com.」というドメイン名になります。</p>
<p>ルートノードのラベルまでを含めたドメイン名は完全なドメイン名になります。完全なドメイン名は「.」で終わります。ルートノード以外のノードまでのドメイン名は不完全なドメイン名とよばれます。不完全なドメイン名の解釈は実装に依存します。一般的には、ルートノードを起点にその直下のノードから始まるドメイン名と解釈されます。</p>
<p>ラベルは63文字に制限されます。また、ドメイン名は255文字に制限されます。ラベルは英字（a~z、A~Z）、数字（0~9）、ハイフン（-）のみ使用できます。ただし、ラベルの先頭と末尾にはハイフンを使用できません。</p>
<p>各ノードは資源レコードを持ちます。資源レコードはいくつかのクラスに分類されます。さらに、各クラスはいくつかの型を持ちます。例えばクラス=IN（インターネット）、型=A（ホストアドレス）の資源レコードは、ドメイン名に対応するIPアドレスの資源レコードを意味します。資源レコードのクラスと型の詳細については<a href="?p=35&amp;page=3#6">6. 資源レコード</a>にまとめています。</p>
<h2 id="3">3. ネームサーバ</h2>
<p>ドメイン名空間はゾーンと呼ばれる部分に分割して管理されます。ゾーンに含まれる全てのノードの情報を管理するサーバプログラムをネームサーバと呼びます。ネームサーバは自身が管理しているゾーンの下位に隣接しているゾーンのネームサーバの情報も持ちます。</p>
<p>ネームサーバには権威ネームサーバとセカンダリネームサーバの2種類あります。権威ネームサーバはゾーンに関する情報をホストのファイルなどから読み込みます。セカンダリネームサーバは他のネームサーバが管理しているゾーン情報のコピーを取得して読み込みます。ゾーン情報のコピーはゾーン転送と呼ばれる仕組みで行われます。</p>
<h2 id="4">4. リゾルバと問い合わせ</h2>
<p>リゾルバは、ネームサーバへ問い合わせを行うクライアント側プログラムです。Webブラウザなどのインターネットアプリケーションがドメイン名からIPアドレスを取得する際にはリゾルバを介してネームサーバに問い合わせを行います。</p>
<div id="attachment_437" class="wp-caption aligncenter" style="width: 616px"><img class="size-full wp-image-437  " src="/tech/wp-content/uploads/2011/08/DNS_2.png" alt="図4.1 問い合わせ" width="606" height="165" /><p class="wp-caption-text">図4.1 問い合わせ</p></div>
<p>ネームサーバは、リゾルバから問い合わせを受けたドメイン名に対応する資源レコードを持っていればそれを回答します。そうでない場合は、リゾルバからの求めに応じて反復または再帰処理を行います。<br />
反復では、問い合わせを受けたドメイン名に最も近いネームサーバの名前とアドレスを返します。リゾルバは、回答を解析して次にどのネームサーバに問い合わせるかを決めて再度問い合わせを行います。リゾルバは、回答が得られるまで問い合わせを繰り返します。</p>
<div id="attachment_438" class="wp-caption aligncenter" style="width: 464px"><img class="size-full wp-image-438  " src="/tech/wp-content/uploads/2011/08/DNS_3.png" alt="図4.2 反復問い合わせ" width="454" height="316" /><p class="wp-caption-text">図4.2 反復問い合わせ</p></div>
<p>再帰では、問い合わせを受けたネームサーバが別のネームサーバへ問い合わせを転送します。問い合わせを受けたネームサーバは別のネームサーバから見てリゾルバとして振舞います。別のネームサーバに対しては反復または再帰処理を要求します。下図では、リゾルバから問い合わせを受けたネームサーバが別のネームサーバへ反復で問い合わせして、得られた回答をリゾルバへ戻しています。</p>
<div id="attachment_439" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-439        " src="/tech/wp-content/uploads/2011/08/DNS_4.png" alt="図4.3 再帰問い合わせ" width="600" height="328" /><p class="wp-caption-text">図4.3 再帰問い合わせ</p></div>
<p>リゾルバはネームサーバからの回答をキャッシュする仕組みを備えています。リゾルバは、問い合わせようとしているドメイン名がキャッシュに存在するときはキャッシュから情報を取得してアプリケーションへ戻します。キャッシュを利用することによりネットワークやネームサーバへのアクセスが省略されて処理が高速化されます。</p>
<p>資源レコードが永久にキャッシュされていると、ネームサーバのデータベースが更新されていてもリゾルバが延々と古い情報を参照し続けてしまいます。それを防ぐためにキャッシュされた資源レコードには有効期間（TTL）が設定されています。有効期間を過ぎた資源レコードはキャッシュから削除されます。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fogacom.com/tech/?feed=rss2&#038;p=35</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

