インターネットで使用されるアドレスは、以下のような形式になっています。
URLでWebにアクセスする場合のwwwというホストネームは設定次第では省略できます。
インターネットの各ノード(インターネットの接続単位)を表す名前がドメインネームです。
このドメインネームがDNSによってIPアドレスに変換されて接続されます。
ドメインネームはNIC(Network Infomation Center)という組織で管理されています。
アメリカにあるIANA(Internet Assignet Number Authority)をトップとして各地域・国別に株組織が存在します。
日本のNICはJPNICです。
国別に定められたTLDとしてccTLD(Country Code Top Level Domain)があります。
nTLD(National Top Level Domain)とも言います。
国別に2文字の略号で決まっています。
日本(.jp)のドメイン(2LD)には属性型と一般地域型があります。
一般地域型は以下のような型になります。
属性型ドメインは以下の通りです。
TLDの一種で国・地域に関係なく使用できるドメイン名としてgTLD(General Top Level Domain)があります。
最近、ドメイン名(2LD)に日本語などの多国語を使用できるようになってきました。
独自のドメイン名は各国のNICに登録を依頼するが、手続きが面倒なので代行業者に依頼するのが簡単です。
URL ( Uniform Resource Locator )とは、インターネット上のリソース(資源)の場所を示すために
使用される記述方法のことです。
URL を使用することによってインターネットのどこにどのようにしてアクセスすれば良いかを、
簡単に表すことができます。
基本的には、
の様に、: (コロン)の前にどういう方法でアクセスするかという方法を記述し、
コロンの後に、どこにアクセスするかという場所を記述します。
目的の場所は、
という形式になっているが、普通良く使われるのは
の様な形です。
ホストネームの部分は大文字・小文字を混ぜても良いことになっています。
しかし、ディレクトリ・ファイル名の部分は大文字・小文字の区別があります。
DNS(Domain Name System)とは、ネットワークにおける名前解決のためのシステムです。
具体的には、インターネットドメイン名(階層化された名前空間)とIPアドレスをマッピングします。
ホストネームからIPアドレスに変換するためのシステムを、DNS( Domain Name Service )と言います。
各マシンからホストネームを使ってインターネットにアクセスする場合は、
DNSのプログラムが走っているコンピュータ(ネームサーバー)に、
そのホストネームに対応するIPアドレスを尋ねることになります。
そのためには、あらかじめネームサーバーのIPアドレスだけは各マシンがわかっていなくてはなりません。
個人的にインターネットに接続する場合も、プロバイダーから必ずネームサーバーのIPアドレスを教えてくれるはずです。
DNSは、UNIXのディレクトリと同じようなツリー構造になっています。
ディレクトリにおけるルートディレクトリ( / )の代わりに . (ピリオド)を使用して表します。
例えば、indy1.CGtec.ac.jp. が正式なホストネームになるが、たいていは最後のピリオドを省略して使用します。
(使用しているプログラムの方で最後のピリオドを補ってくれます)
DNSの実装として、標準的なものにはBIND(Berkeley Internet Name Domain)があります。
実際にネームサーバとして実行されるのは、UNIXではnamedというデーモンです。
ネームサーバの動作モードには、マスターサーバー・スレーブサーバー・キャッシュサーバーの3種類があります。
以下に出てくるゾーンとは、ネームサーバーが責任を持って名前解決を行う範囲(サブドメイン)のことです。
マスターサーバ・スレーブサーバーの返す答えは、
権威のある(Authoritative)応答、キャッシュサーバーの返す答えは権威のない(Non-authoritative)応答です。
なお、通信時にはネームサーバーは53番ポート、クライアント(nslookupなど)は1024番以降のポートを使用し、ゾーン転送時はTCP、検索時はUDPまたはTCPを使用します。
ネームサーバの設定ファイルはnamed.confです。
options {
directory "/etc/namedb";
};
zone "." {
type hint;
file "named.root";
};
zone "bbb.aaa.co.jp" {
type master;
file "bbb.db";
};
zone "aaa.co.jp" {
type slave;
master 192.168.10.1;
};
zone "." { ... };
ルートネームサーバ(. で表される)の登録。
type hint;
namedの動作モード。
file "named.root";
named.rootファイルにルートネームサーバの名前とIPアドレスが書いてあります。
zone "bbb.aaa.co.jp" { ... };
ゾーンbbb.aaa.co.jpの設定。
type master;
動作モードはマスターサーバ。
file "bbb.db";
データベースファイルはbbb.db。
zone "aaa.co.jp" { ... };
ゾーンaaa.co.jpの設定。
type slave;
動作モードはスレーブサーバ。
master 192.168.10.1;
マスターサーバーのIPアドレス。
データベースファイルは、以下の形式のテキストファイルです。
また、データベースファイル内のドメイン名はFQDN(Fully Qualified Domain Name - さいごに.がつく)です。
(名前) (クラス) (レコード種別) (パラメータ)
基本的なレコードは以下の通りです。
@ IN SOA ns.bbb.aaa.co.jp. postmaster.aaa.co.jp. {
2000081101 ; シリアル番号
10800 ; リフレッシュ時間
3600 ; 再試行時間
604800 ; 最大有効時間
86400 ; 生存時間
}
IN NS ns.bbb.aaa.co.jp.
IN NS ns.aaa.co.jp.
ns IN A 192.1.1.1
mail IN A 192.1.1.2
www IN A 192.1.1.3
ftp IN CNAME www.bbb.aaa.co.jp.
インターネットにおいて、最も実用的で良く使用されるのがメールです。
現在はメールと言えば、ネットワーク上のメールと言うことになっていますが、
電子メールまたは、Eメールなどと呼ばれることもあります。
メールが電話・郵便などと比べて長所と思われるのは以下の点でしょう。
逆に欠点と思われるのは以下の点である。
メールの配送システムは、MUA(メールユーザーエージェント)とMTA(メール転送エージェント)のふたつで作られています。
電子メールは以下のような構造になっています。
ヘッダ
<--- 空行
本文
ヘッダと呼ばれる、メールに関するいろいろな情報の書いてある部分があり、その後に空行(何もない行)があって、最後にメールの本文がきます。
多くのメールソフトでは、ヘッダ情報の一部しか表示しません。
そのようなソフトでヘッダーをすべて表示させるには、メニューのオプションその他によって表示させる必要があります。
例えば、OutLook Expressでは受信メールのプロパティ(マウス右ボタン->プロパティ)から「詳細」の項目を開くことで見ることができます。
(さらに、「メッセージのソース」を開くとメールの完全なデータを見ることができます)
メールを送信する時、文字コードの種類にやっては文字化けをおこしてメールが読めなくなってしまうことがあります。
これを防ぐためには、文字コードをインターネットの標準(ISO-2022-JP)のものにしておく必要があります。
現在、コンピュータで使用される主な日本語の文字コードは次の4種類です。
SJISやEUCだと文字化けしてしまうことがあるので、インターネットではJISコード(iso-2022-jp)が標準になっています。
これには、パソコンで良く使われる半角かなや丸文字などの特殊な文字は含まれないので、メールにはそれらの文字は使用しないのがエチケットです。
SJIS、EUCからJISへの変換はメールソフトが自動的にやってくれることもありますが、自分で変換する時は文字コードを変換するソフト(nkfなど)を使用します。
メールには必ずヘッダがついています。
(1行目から最初の空行まで)
このヘッダの部分を見ると、そのメールに関する情報がいろいろわかるようになっています。
(各行をフィールドと呼びます)
しかし、メールソフトによっては、ヘッダの部分が表示されないものがあります。
(表示されるかどうかは設定次第)
主なヘッダの内容は以下の通り。
これら以外にも、様々な種類があります。(MIMEなど)
最後のX-が付いたフィールドは、ユーザーやプログラムが自由に設定できます。
ここにリストアップしたもの(X-)は習慣的に決まっているものです。
また、ヘッダでは大文字・小文字の区別はありません。
(詳しくは、RFC822を参照)
メールは基本的にテキストデータしか送ることができません。
しかし、画像データなどのバイナリーデータを送ることもできます。
そのために、バイナリーデータをエンコード(バイナリーデータをテキストデータに変換)
しなくてはならなりません。
エンコードされたデータを受けとった時は、デコード(テキストデータをバイナリーデータに変換)します。
インターネットにおけるエンコードの方法には、主に以下の方法があります。
最近のメールソフトでは、これらの方法でエンコードされたデータも自動的に デコードされるようになっているものが多いようです。
MIMEとは、メールにおいてバイナリーデータを送信するための標準として規定された規格です。
MIMEでは以下のようなヘッダが付きます。
Gmailを利用して、メールを送信するプログラム例です。
import smtplib
import email
from email.MIMEText import MIMEText
from_addr = 'whoami@gmail.com'
to_addr = 'whoami@yahoo.co.jp'
subject = 'my subject'
body = 'test'
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = from_addr
msg['To'] = to_addr
msg['Date'] = email.Utils.formatdate()
s = smtplib.SMTP('smtp.gmail.com', 587)
s.ehlo()
s.starttls()
s.ehlo()
s.login('whoami@gmail.com', 'passwd')
s.sendmail(from_addr, [to_addr], msg.as_string())
s.close()
import smtplib
import email
from email.MIMEText import MIMEText
from_addr = 'whoami@gmail.com'
to_addr = 'whoami@yahoo.co.jp'
subject = 'my subject'
body = 'test'
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = from_addr
msg['To'] = to_addr
msg['Date'] = email.Utils.formatdate()
s = smtplib.SMTP('smtp.gmail.com', 587)
s.ehlo()
s.starttls()
s.ehlo()
s.login('whoami@gmail.com', 'passwd')
s.sendmail(from_addr, [to_addr], msg.as_string())
s.close()