ネットワークについての基礎知識

ネットワークについての基礎知識

ネットワークについての基礎知識

ネットワークについての基礎知識です。
PCJapan2008年2月号付録の「図解!ネットワークの仕組み」を参照しました。
ネットワーク初心者向けのバイブルとしてもかなり良いです。

 

 

以下の本も目次を見る限り殆ど同じ内容だと思われます。
本当にお勧めしたい本です。

図解!よくわかるネットワークの仕組み (SOFTBANK MOOK)
織田 薫
ソフトバンククリエイティブ
売り上げランキング: 500,262

 

 

 

確認問題

・メール送信時の動作を説明出来るかどうか

 

・プロバイダがスパムメール送信を防ぐためにやってること

 

・POP3 3つの状態

 

・APOPとは

 

・各階層モデルの役割を説明しよう

 

・データの流れを説明しよう
それぞれどんなデータを付加させ、結果どんなパケットになってるか。特にイーサネット

 

・HTTPメッセージの構造とそれぞれに含まれているものを説明しよう

 

・TCPヘッダの主な内容7個

 

・代表的なポート番号

 

 

 

クラスによる分類

※クラス識別子をもとに覚えること

 

 

クラスA

0.0.0.0 から 127.255.255.255
クラス識別子は0(1ビット目が0)
ネットワークアドレスは第1オクテットまで
ホストアドレスが第2~4オクテット
ネットワークの数 126
1ネットワーク内のホスト数 1677214

 

 

クラスB

128.0.0.0 から 191.255.255.255
クラス識別子は10(1ビット目が1・2ビット目が0)
ネットワークアドレスは第2オクテットまで
ホストアドレスが第3~4オクテット
ネットワークの数 16384
1ネットワーク内のホスト数 65534

 

 

クラスC

192.0.0.0 から 223.255.255.255
クラス識別子は110(1ビット目が1・2ビット目が1・3ビット目が0)
ネットワークアドレスは第3オクテットまで
ホストアドレスが第4オクテット
ネットワークの数 2097152
1ネットワーク内のホスト数 254

 

 

 

プライベートIPアドレス

10.0.0.0/8   10.0.0.0~10.255.255.255
172.16.0.0/12  172.16.0.0~172.31.255.255
192.168.0.0/16 192.168.0.0~192.168.255.255

 

 

 

リンクローカルアドレス

DHCPサーバとの接続に失敗するとAPIPAが働き、169.254.0.0/16のIPアドレスが
割り当てられる。リンクローカルアドレスのPC同士は通信可能。

 

 

 

2つのブロードキャストアドレス

 

リミテッドブロードキャストアドレス

255.255.255.255
同じLAN内の全てのホストにパケットを送信する。
別のネットワークには送信されない。
DHCPなど。

 

 

ディレクテッドブロードキャストアドレス

192.168.0.255/24 等(ホストアドレスが2進数で全て1)
別のネットワークも指定可能。
ARPなど。

 

 

 

マルチキャスト

224.0.0.0/4
マルチキャストグループのホスト全てに送信する。

 

 

 

DHCP

パケットの流れ

・HOST →→DHCP DISCOVER(発見)  →→ SERVER
・HOST ←←DHCP OFFER(申し出)   ←← SERVER
・HOST →→DHCP REQUEST(転送要求) →→ SERVER
・HOST ←←DHCP ACK(転送許可)   ←← SERVER
どの通信も、送信先は255.255.255.255。

 

 

DHCPリレーエージェント

DHCPの要求を別のネットワークにあるDHCPサーバへ転送する。

 

 

 

ルータの機能

 

DMZホスト機能

NAPTやポートフォワードで指定されていないポート番号に対するパケットを
全てDMZホストで指定したホストに転送する。
パケットフィルタリングとの併用が有効。

 

 

UPnP

アプリケーションからポートの開放が支持され、通信が終了すると閉じられる。
ポートフォワードをアプリケーションから自動的に行う機能。

 

 

 

NetBIOS over TCP/IP(NBT) と DNSについて

 

hostsファイル

・TCP/IP系のネットワークで利用。

 

・1つのIPアドレスに対して複数の名前を定義することが可能。

 

・FQDN名で記載することが可能。

 

・16文字以上で記載することが可能。

 

 

lmhostsファイル

・NetBIOS over TCP/IPプロトコルを利用するコンピュータを
記述できるようにしたもの。
「lm」とは「LAN Manager(Windowsネットワークの前身となる製品」の略。

 

・NBT名を定義する。

 

・属性やキーワードの記載が可能。キーワードは大文字で記載すること。

 

・「nbtstat -R」と入力すると、再起動なしに、LMHOSTSが最新になる。

 

・WINSサーバに取り込んで静的な定義を素早く行うことができる。

 

参照サイト
http://www.atmarkit.co.jp/fwin2k/win2ktips/442hostsfile/hostsfile.html

 

 

 

トップレベルドメイン

jpやcomなどをトップレベルドメインと言う。

 

 

 

DNSについて

 

ゾーン

DNSサーバーが管理している名前空間
「ドメイン」はサブドメインを含むドメイン以下全ての
範囲を意味する。
「ゾーン」はDNSサーバーが管理するドメインの範囲。
あるサブドメインのみ、など。

 

 

FQDNとDNSサフィックス

www.a.jp . まで記述するのがFQDN。(ルートを示す最後の「.」も含む。)
完全修飾ドメイン名。
FQDNで指定しなかった場合はDNSサフィックスサーチリストに
登録されているドメイン名を追加して問い合わせる。
登録は「コンピューター名の変更」から、またはネットワークアダプタ毎に設定できる。
結果、ホスト名のみで問い合わせできる。

 

 

 

ブラウザシステム

 

マスタブラウザ

ブラウズリストを管理しているサーバー。
クライアントOSでもなれるがマスタブラウザの優先順位はサーバー系OSが
一番高い。nbtstatで確認できる。

 

 

ドメインマスタブラウザ

異なるネットワークのコンピューター名一覧を表示するためには
ドメインマスタブラウザが必要。なれるのはサーバー系OSのみ。

 

 

ブラウザシステムとNetBIOSの名前解決

コンピューター名の一覧を表示させるのはブラウザシステムの役割。
それ以降はNetBIOSの名前解決→NetBIOSのセッションを確立して
共有フォルダの一覧を表示する。

 

 

 

MACアドレス

 

48ビット中、先頭24ビットがベンダーコード

 

 

ブロードキャストアドレス

FF-FF-FF-FF-FF-FF
2進数表記で全て1

 

 

ARPコマンド

Arp -a
キャッシュされているMACアドレスの一覧表示

 

 

ハブ

スイッチングハブはMACアドレステーブルを持っている。
リピーターハブはコリジョンが発生する場合が有る。

 

 

pps

packet per second

 

 

 

階層モデル

 

各階層モデルの役割と主なプロトコル

・TCP/IP階層モデルのアプリケーション層は、OSI参照モデルで言うところの
アプリケーション層/プレゼンテーション層/セッション層。
アプリケーション層ではユーザーインターフェースを提供する。
プレゼンテーション層ではデータの変換を行う。
セッション層ではアプリケーション同士の仮想的な経路の制御を行う。
主なプロトコル:HTTP,FTP,SMTP,POP,DNS

 

・トランスポート層
主なプロトコル:TCP,UDP
データの順序や再送制御(TCP)。UDPは速度重視。

 

・ネットワーク層
異なる回線でもルーティングして送信する。
主なプロトコル:IP

 

・TCP/IP階層モデルのリンク層は、OSI参照モデルで言うところの
データリンク層/物理層。
同一ネットワーク内の通信を保証する。
主なプロトコル:イーサネット,PPP,ATM
※OSI参照モデルのデータリンク層は2つの副層に分割されるLLC副層とMAC副層。

 

 

データのカプセル化

上の層から順にヘッダを付けていく。
アプリ層でデータを作成する。
トランスポート層でTCPヘッダ(ポート番号など)を付け、「TCPセグメント」となる。
ネットワーク層でIPヘッダ(IPアドレス・プロトコル番号など)を付け、「IPパケット」となる。
リンク層でMACヘッダ(MACアドレスなど)を付け、「イーサネットフレーム」となる。リンク層の
ヘッダは送信間の機器で書き換えられていく。
受信するサーバー側ででヘッダを取り除いてデータの内容を取り出す。

 

 

主なプロトコル番号

1 ICMP
6 TCP
17 UDP
※プロトコル番号はネットワーク層でIPヘッダに含まれる。

 

 

主なポート番号

21
22
23
53
80
110
443

 

 

 

TCPについて

 

TCPヘッダの主な内容

送信元/宛先ポート番号
シーケンス番号・確認応答番号
コントロールフラグ(SYN,ACK,FINなど)
ウィンドウ
チェックサム(誤り検出方法)
オプション(MSSなど)

 

 

シーケンス番号/確認応答番号

送信データのバイト数だけ増加していく。
受信側はACKパケットに確認応答番号を含めて送信する。
確認応答番号=次に受信することを期待するシーケンス番号。

 

 

コネクション型通信TCPの3ウェイハンドシェイク

SYN コネクションの確立要求

 

SYN/ACK 確認応答(ACK) コネクション要求(SYN)

 

ACK 確認応答

 

 

ウィンドウ

連続して受信できるデータサイズ
送信側は、そのサイズまではACKを受信しなくてもどんどん送信できる。
フロー制御で使用される。
受信したデータをアプリケーションに渡せない場合はウィンドウサイズを小さくして通知する。

 

 

MSS

Max Segment Size
経路上で送受信可能な最大セグメントサイズ
MSSはコネクション確立時に確定する。
※リンク層での1度に送受信可能な最大パケットサイズMTU(Max
Transfer Unit)の値をもとに決められる。イーサネットの場合MTUは1500。

 

 

 

UDPについて

 

UDPヘッダの主な内容

送信元/宛先ポート番号
パケット長
チェックサム

 

 

UDPの特徴

軽い。コネクションレス。誤りが検出されても破棄するのみ。失っても再送処理しない。
ブロードキャストやIP電話、動画のストリーミングなど。
※TCPの機能をアプリケーション側で実装するなら信頼性の有る通信を行うための制御も可能。

 

 

 

メール送信プロトコル SMTPについて

 

MUAとMTA

MUA(Mail User Agent):メールソフト。
MTA(Message Transfer Agent):メールを最終的な宛先まで送信する。
メール転送エージェント。Sendmailなど。
メールの配送はMUAとMTAによって行われる。
送信元のMUAから宛先のMTAまで、全てSMTPを利用する。ポートは25番。

 

 

MXレコード

MTAがメールを転送する際にはDNSサーバーのMXレコードを利用して宛先のMTAを探す。
MXレコードを複数定義することにより、1つのドメインに対して複数のメールサーバーを
指定することができる。プライマリとバックアップなど。優先度を付けることも可能。

 

 

SMTPによる通信

接続元クライアント(MUA,MTA)が接続先サーバー(MTA)に接続する。
HELO host.a.jp()

 

・client →→HELO host.a.jp       →→ SERVER ※もしくはEHLOコマンド(ESMTPを利用するため、SMTP AUTHなど)

 

・client ←←250 mail.a.jp       ←← SERVER ※レスポンスコードを返す。

 

・client →→MAIL FROM:   →→ SERVER

 

・client ←←250            ←← SERVER

 

・client →→RCPT TO: →→ SERVER ※複数人の場合は複数回実行する。※receipt=受け取ること

 

・client ←←250            ←← SERVER

 

・client →→DATA            →→ SERVER ※メッセージの送信を通知

 

・client ←←354 End data with .←← SERVER ※肯定的な中間応答

 

・client →→ヘッダとボディ.→→ SERVER

 

 

メールヘッダとエンベロープ

・エンベロープ 封筒の役目
送り主と宛先が書いてある。「MAIL FROM」コマンドと「RCTP TO」コマンド。
メールサーバー(MTA)はエンベロープだけで送信先を判断している。
BCCの場合、エンベロープのみに記述有り。ヘッダには記述無し。

 

・メールヘッダとメール本文 便箋の役目
ヘッダ、本文ともDATAコマンド
メールヘッダとボティの区切りは「\r\n\r\n」。
「Subject:」以外のヘッダは殆どMUAやMTAが記述している。
「Received:」ヘッダが重要。メールをリレーしたメールサーバー(MTA)が
必ず付けなければならない。

 

 

オープンリレー

オープンリレーなサーバーは設定ミスとみなされる。自分の管理下からのみ
リレーを許可することが推奨。

 

 

OP25B(Outbound Port Blocking)

プロバイダが、加入者が25番ポートを使用して外部のメールサーバーで
メール送信することを許可しない。
加入プロバイダのメールサーバーは使用可能。
外部のメールサーバーを利用する場合はSubmissionポートを使用する。
(TCP 587番ポート)
IPアドレスや認証によって制限がかかっている。

 

 

MIME(マイム)

さまざまなフォーマット(書式)を扱えるようにする規格。
メールが、どのように符号化されたかやどんなタイプのデータが含まれているかを
メールソフトに理解させるためのルール。
※電子メールは7ビットのASCII文字に置き換えて送信されている。
8ビットなどのデータを7ビットに符号化する際にはBASE64などの
エンコード方式を用いる。

 

 

 

メール受信プロトコル POP3について

 

ポート番号は110

 

 

3つの状態

「Authorization」認証 ※メールサーバーへの接続認証
「Transaction」 処理 ※受信処理
「Update」    更新 ※削除

 

 

「Authorization」認証について

認証での「USER」、「PASS」コマンドともに平文。
なのでPOP3にはチャレンジ・レスポンス形式のAPOPコマンドも用意している。

 

 

APOP

チャレンジ・レスポンス形式のログイン認証コマンド。パスワードが暗号化される。
利用するためにはMUA、MTAともにAPOPに対応している必要がある。

 

・client ←←チャレンジ文字列←← SERVER

 

・client →→レスポンス文字列→→ SERVER
※チャレンジ文字列+パスワードからMD5のハッシュを作成し、
レスポンス文字列としてAPOPコマンドで送信する。
パスワードが暗号化されているということ。

 

・client  ←←認証OK     ←← SERVER
※チャレンジ文字列+保存しているパスワードからMD5ハッシュを
求めて比較/判断している。
※MD5とは、一方向ハッシュ関数の一種。常に128ビット固定長の
ハッシュ値を生成する。元データが1ビットでも変更されるとハッシュ値は異なる。

 

 

「Transaction」について

・「STAT」コマンド メールボックスの状態の確認(メール数やメール全体の
サイズが返る)

 

・「LIST」コマンド メール個別の情報を取得(メッセージ番号とメールごと
のサイズが返る)

 

・「RETR」コマンド メールを1通ずつ受信

 

・「DELE」コマンド 削除するメールをチェックする
(Updateプロセスで「Quit」コマンドが実行されると削除される)

 

・「UIDL」コマンド 実行するとサーバーが各メッセージの固有のIDを返す。
※そのIDをメールソフトが記録して識別し、未受信のメッセージIDのみに
「RETR」コマンドを実行すると新着メッセージのみを受信できる。
※RFC1939(POP3の規格化)ではオプション扱い。

 

 

 

メール受信プロトコル IMAPについて

・メールサーバー上で送信/受信フォルダ管理が可能。

 

・メールフォルダはプロトコルの一部として標準化されているので
メールソフトの種類に関係無くフォルダを管理出来る。

 

・ヘッダのみの取得、マルチパートのテキスト部分のみの取得などが可能。

 

・メールをサーバに保存可能。フォルダ全体のスナップショットの転送など。

 

・メールサーバーはメールのオリジナルを管理するため莫大な量の
メール管理が必要となる事が有る。

 

 

 

 

HTTPについて

 

HTTPメッセージの構造

webブラウザが送信するのもサーバーが返信するのも基本的な
構造は変わらない。

 

 

スタートライン(CRLF)

webブラウザからの要求は「リクエストライン」。
サーバーからの応答は「ステータスライン」。

 

 

メッセージヘッダ(CRLF)

1行に1つの情報を格納。ファイルの種類/webブラウザの種類/リンク元urlなど。

 

 

(CRLF)

 

 

データ

 

 

 

スタートラインのリクエストライン(webブラウザ側)について

形式「method Reqest-URI HTTP-Version」

・Method
GET webページを表示する
POST 情報を送信する

 

・Reqest-URI
webサーバーなどに要求するファイルなどを示す。
urlで指定したコンテンツのパスが記述される。

 

・HTTP-Version
1.0か1.1。

 

 

スタートラインのステータスライン(サーバー側)について

形式「HTTP-Version Status-Code Reason-Phrase」

・HTTP-Version
1.0か1.1。

 

・Status-Code
要求が認められる場合は「200」
要求されたコンテンツが無い場合は「404」

 

・Reason-Phrase(リーズンフレーズ)
ステータスコードの理由。オプション。

 

 

メッセージヘッダ

形式「フィールド名:値」

・AcceptフィールドではMIMEタイプでファイルの種類を指定する。
テキストならtext/plain、JPEGファイルならimage/jpeg

 

・User-agentフィールド
webブラウザの種類

 

・サーバー側は、「Sever」やwebサーバーの種類(IISなど)
コンテンツの種類などの情報がセットされる。

 

 

データ

GETメソッドでもReqest-URIに「URLエンコード」された文字を
追加することでwebサーバーへ情報を送信できる。

 

 

HTTP1.0のベーシック認証

サーバーが認証機能を設定していた場合は「401」を返す。
webブラウザはメッセージヘッダに「Authorization」フィールドが追加されて
BASE64で変換されたユーザー名とパスワードがセットされる。
暗号化されていないため安全とは言えない。

 

 

 

HTTP1.1について

 

追加されたメソッド

・「OPTIONS」使用できるメソッドやオプションの一覧を要求

 

・「TRACE」 HTTPメッセージをそのまま送り返すように要求

 

・「PUT」  指定した場所にリソースを送信

 

・「DELETE」 指定したリソースを削除

 

 

永続的なコネクション

・Persistent Connections

 

・HTTP1.0ではwebページに5つの画像が有れば計6つのTCPコネクションが必要。
サーバーの負荷が増え、パケットも増加する。それを改善するための機能。

 

・永続的なコネクションの制御はメッセージヘッダの「Connection」フィールドを利用。
「Keep-Alive」 TCPコネクションの継続
「close」 TCPコネクションの終了
※オプションでコネクションを維持する時間を通知するためにメッセージヘッダに
「Keep-Alive」フィールドをセットすることも有るが、あまり利用されていない。

 

 

パイプライン

永続的なコネクション利用時にはリクエストに対するレスポンスを待つこと無く
複数のリクエストをまとめて送信できるようになっている。

 

 

WebDAV

ファイル転送などの機能はFTPに近いが、HTTPの拡張仕様であるため
SSLによる暗号化やプロキシなどをそのまま利用することができる。
「PUT」や「DELETE」が利用される代表的な仕組み。
他に使用できるメソッドは
「PROPFIND」(プロパティを取得する)「MOVE」「COPY」など。

 

 

ダイジェスト認証

サーバーが認証機能を設定していた場合は「401」(Unauthorized)のレスポンスを返す。
そのレスポンスのメッセージヘッダには「WWW-Authorization」フィールドがセットされ、
ダイジェストの生成に必要な文字列が記述される。
クライアントが「Authorization」フィールドの値にセットするもの

①ユーザー名

 

②サーバーから貰ったダイジェストの生成に必要な文字列

 

③ ②をもとに生成したパスワードのダイジェストしたリクエストを送信する。

 

※それらをサーバーが自分のものと比較して一致すれば認証完了。
※肝心の認証以降のデータは暗号化されないため、現在はHTTPで
セキュアな通信を行うのはSSLが一般的。

 

 

その他HTTP1.1での追加機能

・ステータスコードの追加

 

・「ホストヘッダ」が必須。クライアントからサーバーへの要求時。メッセージヘッダに含まれる情報。
フィールド名:「host」 値:webサーバーのドメイン名
IPアドレスに対して複数のドメイン名がある場合に識別できる。
ホストヘッダとRequest-URIの両方にドメイン名が含まれる場合はRequest-URIが優先される。

 

 

クッキーについて

・HTTPで通信を行うときはソケット(IPアドレスとポート番号の組み合わせの
こと)を利用してTCPセッションを管理している。
しかし、異なるTCPセッションで通信を行っているクライアントが同一の
webブラウザであるかどうかは分からない。
そういうことも有り、HTTPは状態を保持しないという意味で「ステートレスな
プロトコル」と呼ばれる。それで状態管理には別の仕組みが必要になり、
クッキーがNetscapeによって考案された。

 

・ユーザの識別に使われる。

 

・ユーザに関する情報や最後にサイトを訪れた日時、そのサイトの訪問回数
などを記録しておくことができる。

 

・有効期限の指定の無いクッキーは「セッションクッキー」と呼ばれ、
Webブラウザ終了時に破棄される。

 

・1つのCookieには4096バイトのデータを記録でき、最大で300の
Cookieを保存できる。

 

・1台のサーバが同じコンピュータに対して発行できるCookieの数は
20個に制限されている。

 

 

 

FTPについて

 

ポートについて

20番ポート データコネクション データの転送 

 

21番ポート コントロールコネクション FTPコマンドの制御

 

FTPはオーバーヘッド(システムへの負荷)が少なく、ファイル転送用に
別のコネクションを用意するためスループットを最大限に上げることができる。

 

WindowsのgetコマンドはユーザーPI(Protocol Interpreter)によって
FTP用コマンド「RETR」に変換され送信する。その後サーバPIで受信、
変換される。(21番ポート)
ファイル転送(20番ポート)はサーバーDTP(Data Tranfer Protocol)と
ユーザーDTPで行われる。

 

 

anonymous(アノニマス) FTP

ソフトウェアを配布等、不特定多数のユーザーにログインさせる場合
ユーザー名にanonymousかftp パスワードにメールアドレス と入力。
匿名ユーザーとして扱うので一定の制限が有る。

 

 

アスキーモードとバイナリモード

アスキーモードは文字データの転送で使われる。
8ビットのNVT-ASCII表現形に変換し送信する。
OSに依存しない。

 

バイナリモードはデータを変換せずそのまま送受信する。
画像や実行ファイルなどの送受信時に使用する。

 

 

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

・アクティブモード
クライアントがサーバーからの接続を待つ形式
ポート開けておくリスクやファイアウォールが有ると通信できないことが有る。
PORTコマンド

 

・パッシブモード
passive(受動的な)
PASVコマンド
アクティブモードとは逆に、サーバー側でポートを開けるリスクが有る。