スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ネットワークの勉強をした

今回はネットワークの基礎の勉強をした。
内容は・・・
とても長くて書ききれそうに無い。といつもなら書かないところを気合を入れて書いてみることにした。
はっきり言って長い。覚書きなので通して読んだところで意味が無い代物だろう。


~ネットワークが何も分からない人が3日間で集めた情報集~


+通信時のデータ作成(カプセル化)の流れ+

【OSI参照モデル】
----------------------------------------------
|  処理レイヤ   |データユニットの変化|
----------------------------------------------
7 アプリケーション 
6 プレゼンテーション
5 セション     
4 トランスポート   データ  →セグメント(ネットワークの区切りもセグメントというので注意)
3 ネットワーク    セグメント→パケット
2 データリンク    パケット →フレーム  (プリアンブル 宛先MACアドレス 送信元MACアドレス フレームタイプ パケット FCS )
1 物理レイヤ     フレーム →電気信号となる


【TCP/IPモデル】
アプリケーション層
トランスポート層
インターネット層
ネットワークインタフェース層



物理アドレス
=自分が次に直接渡す相手の住所(MACアドレスを指す時もある)
論理アドレス=最終的な届け先
MACアドレス=LANカード(NIC)に付けられれている識別コード
48bitで生成されており前半分はメーカーによって決まるベンダコード、後ろ半分は製品番号のようなもの
重要なのはユニーク(一意)なアドレスだということ

CSMA/CD=イーサネットの同時発言をさせないシステム。基本的に投げっぱなし(ベストエフォート型配送)
CSMA=発言中かどうかをチェックして発言のタイミングを伺う
CD=同時発言のチェック機構

ブロードキャスト=すべての機器宛てに情報を送る

+固定IPアドレスの見分け方+
クラス   第1オクテット   10進数で表記した場合
A     0         0.x.x.x ~127.x.x.x
B     1 0       128.x.x.x ~191.x.x.x
C     1 1 0      192.x.x.x ~223.x.x.x
D     1 1 1 0     224.x.x.x ~239.x.x.x
E     1 1 1 1     240.x.x.x ~255.x.x.x


+ネットワークアドレス+
クラスCで考えると XXX.XXX.XXX.0を指す
ネットワーク自体を指すアドレスに使われるために割り当てはできないお約束
送信データが遠くから宛て先を求めてやってきた場合、自分の住所に届く前にまずこのアドレスにやって来てから自分の住所を探す


+ブロードキャストアドレス+
クラスCで考えるとXXX.XXX.XXX.255を指す
このネットワークに属したすべてのホストを表す


+サブネット+
固定IPのクラスによっては量が多すぎで管理しきれない現象が起きる
こうした場合ネットワークの中にネットワークを置く仕組みが考案された
具体的にはホスト番号の中にサブネット番号を設ける

クラスBの例
ネットワーク番号ホスト番号
00000000000000000000000000000000

ここは変えれないサブホスト番号
00000000000000000000000000000000


サブ番号はここまで!という線引きを2進数で行ったものがサブネットマスクである
↑の場合11111111|11111111|11111000|00000000となる
サブネットを11111111|11111111|11111111|11111110にした場合
ホスト番号が2つ使えるように見えるがネットワークアドレスとブロードキャストアドレスのことを考えるとこのマスクではホスト番号を設置できない



+送信に必要な位置情報+
全部で4つある
・自分のMACアドレス=NICを取り付けた時に決まっている
・自分のIPアドレス=手動で入力するかDHCP(自動割り当て機能)を使って取得する
・相手のMACアドレス=相手のIPアドレスとARPプロトコルを使って取得(取得したアドレスはARPテーブルに保存される)
・相手のIPアドレス=手動で入力 DNS NetBIOSoverTCP/IP(windowsLAN)


+プライベートアドレス+
プライベートアドレスは以下の範囲が予約されている

第1オクテット第2オクテット第3オクテット第4オクテット
10ホスト番号
17216~31ホスト番号
1921680~255ホスト番号

マスクの範囲が決められてしまっているので自由にホストの範囲を変えることはできない
よって192で始まるネットワークは最大でも255(-2)のアドレスしか割り振れないことになる

+ドメイン+
ホスト名|ドメイン名
~~~~.aaa.co.jp←これ
~~~@hot.com←@の後ろ

+ブリッジ+
情報のやりとり時に接続ポートのMACをすべて記憶していく(そのために少し速度が遅い)
記憶された情報を元に送られてきた情報を止めるのか通すのかの二択で決める(通す場合すべての接続先に送信してしまう)
二択の条件は通過先に目的のアドレスが無いことが分かっている場合のみ止める(そのアドレスを知らない場合は通す)
無論ブロードキャストを止めることは無い


+スイッチ+
接続ポートのMACを記憶する点ではブリッジと同じだが、受信した際あて先の接続先にしか情報を送信しない
このため送信と受信が用意されたケーブル上では衝突が生じない(同じ接続先にデバイスが二つ存在し、ハブで接続されているケースでは問題が生じる)
ブロードキャストはやはり止められない


+ストアアンドフォワード方式+
バッファを利用して情報の衝突を避ける方法

+ルータ+
送信されたあて先が存在する回線を選択して送信を行ってくれる
ブロードキャストは止める(フィルタリング)
ルーティングテーブルといわれる地図を元に送信先を選択する
~テーブルの見方~
WinPC内のテーブルを確認するにはコマンドプロントでroute printで↓の一覧が出る
(パソコン内部はひとつのネットワークであると考える)
NetworkDestination=データに記載された届け先(0.0.0.0は登録外のものすべてを指す)
Netmask=ネットワークアドレスを知るためのサブネットマスク
Gateway=転送先
Inerface=出口のポート



+デフォルトゲートウェイ+
ルータはブロードキャストをフィルタリングしてしまう
よってネットワーク外にARPにより送信相手のMACを調べたくても知ることができない
そこでデフォルトゲートウェイにデータを送信して他のネットワークに届けてもらう
この入り口の役目がデフォルトゲートウェイであり、主にルータがこの役割を果たすことになる



+メトリック+
最適なルートを選択するときに距離、回線速度、混雑状況などを踏まえて算出された判断基準


+ICMP+
Internet Control Message Protocol エラーを報告するプロトコルに使われる
よく使われるのは以下

Destination Unreachable (タイプ3)
 送信できなかったことを伝えてくれる
Redirect(タイプ5)
 デフォルトゲートウェイの設定が最適でない場合(一度送信されたデータが自分の上を通るような場合など)このICMPが発行される
 ホストが受け取るとデフォルトゲートウェイを書き換えてくれる
Echo(タイプ0、8)
 pingコマンドのように相手との接続を確認するやりとりを行う
Time Exceeded(タイプ11)
 生存時間が経過してパケットが破棄されたことを伝える
 計測にはTTLという単位が使用され時間ではなく通過したデフォルトゲートの数が使われる




+フロー制御+
PCが処理しきれない速度でデータを受け取ったときに送信相手に速度を落としてもらったり止めてもらう制御

+送信データの分割+
セグメントに分割されたデータはシーケンス番号と呼ばれる番号をつけられる
この番号を元に復元される 一回分のデータの大きさはMSSで表す


+コネクション+
アプリケーション間のやり取りを行うデータの道
1つのコンピュータで同時に複数のコネクションを利用することもできる



+TCP通信+
スリーウェイハンドシェイクによりコネクションの確立を行ってから送信を開始する
上記は双方向に通信路を確立するために一度確認データをやり取りしてからデータ送信する方法がとられる
そのために3度のデータ転送が行われることから名前が付けられた
送信時はひとつずつ送信できたかどうかをチェックしながら送信するので確実である
返事が無くなった時点で同じデータを再送信する この際の待ち時間はRTTという値で回線速度を見て動的に変化する
1フレームつずつの送信だと効率がわるいので受信側にバッファを用意し(ウィンドウサイズ)その状況をみて送信を行う
混雑しているかどうかを確かめながら送信を増やしていく(スタートアルゴリズム)
上記は送信数を1>2>4>8と増やしていき、ある程度の値(しきい値)になったら1ずつ増やす
回線の輻輳(ふくそう)場所を見つけたら送信量を半分に減らす このため相手がウィンドウサイズに満たなくても速度を制御されることになる

転送許可要求がSYN、転送許可がACK
動きTCPのコネクションの状態
PC1PC2
→ SYN →・・・・送信後PC1がSYN_SENTになる
←ACK+SYN←・・・・送信後PC2がSYN_RCVになる
→ ACK →・・・・送信後PC1がESTABLISHEDになり
受信後PC2もESTABLISHEDになる
両方がESTABLISHEDになった時点でコネクションが確立された状態


転送後データ終了時にもきちんとした手順を踏む
動きTCPのコネクションの状態
PC1PC2
→ FIN →・・・・送信後PC1がFIN_WAIT1になる
← ACK ←・・・・送信後PC2がCLOSE_WAITになり
受け取り後PC1がFIN_WAIT2になる
← FIN ←・・・・送信後PC2がLAST_ACKになる
→ ACK →・・・・送信後PC1がTIME_WAITになり
頃合をみてCLOSEになる 受信後PC2もCLOSEになる


+UDP通信+
TCPとは違い、ただ一方的に投げつける送信方法 高速さがうり
コネクションをとらないために同時通信に強い


+ポート+
PC内部にある仮想の差込口と考える
ポートとアプリケーションを結びつけるのがソケット



+NAT、NAPT+
ひとつのグローバルアドレスで複数の機器のインターネット接続を可能にするシステム
NATは同時接続はグローバルIPの数となるので実用的ではない
NAPT(IPマスカレード)はプライベートアドレスとグローバルアドレスを変換する際ポートの変換も行うため同時接続問題も回避している
NAPTはこの機能によりセキュリティ面でも効果が強い。
逆に手動でポートを設定しておく静的マスカレード(バーチャルホスト バーチャルサーバ)は外部からのポートの制限を緩和させたものである


+DNS+
ドメインをIPアドレスに変換してくれるシステム 情報全体はツリー式で管理され世界中のサーバで管理される
上記でいった各サーバ(ネームサーバ)は各節(node)に配置されゾーンと呼ばれる範囲のみ管理している ゾーンは自分と自分の子のみ
変換した情報はリソースレコードとして一時的に保存する
保存される内容は A(アドレス)NS(子のネームサーバ)CNAME(二つのドメインを所持するホストの場合メインを決める)SOA(ゾーンデータ)PTR(逆引きデータ これは無くてもよい)MX(優先値 低いメールサーバを優先で使用)


・フルサービスリゾルバ (キャッシュサーバ)
IPアドレスを調べるサーバ。プロバイダのネームサーバや、LAN内のネームサーバがこれ

・DNSリゾルバ(スタブリゾルバ  リゾルバ)
ホストが持つDNS問い合わせ用のアプリケーション ブラウザとかのこと
フルサービスリゾルバに再帰問い合わせを行う 結構しつこい

・コンテンツサーバ
自身が管理するゾーンの応答のみを行う。反復問い合わせを行わない。ルートサーバや、インターネットで公開してるネームサーバがこれ。

・スレーブサーバ
自分で再帰問い合わせを行わず、フォワーダへ問い合わせをするサーバ

・フォワーダ
他ネームサーバへ問い合わせを行うサーバ


+いろいろなプロトコル+
・telnet TCP23番   リモートで相手のPCを動かせるCUIなので使いにくそうだけどかっこいい
・FTP  TCP20と21  サーバにファイルをUPしたりするときに利用するあれのこと


+pingコマンド+
ICMPはレイヤ4以上のデータを使わないため基本的にpingで分かるエラーはレイヤ3以下のもの
逆に考えるとpingが成功したのに接続できないのはレイヤ4以上に障害がある
それ以外には
UnknownHost=DNSにエラー TTL
expired in transit(生存時間切れ)=TTLの設定ミスやルーティングループが起きている
Destination host unreachable=デフォルトゲートウェイが設定されていない
など覚えておくと便利
LinuxでWindowsのように指定回数を省いて入力すると永遠に送り続ける状態になる
上記を止める時はCtrl+Cを押す

エラーを見つけるPingコマンドのコツ
>ping 127.0.0.1
>ping 自分のNICのIPアドレス
>ping 同じハブ・スイッチに接続されているデバイスのIPアドレス
>ping 違うハブ・スイッチに接続されているデバイスのIPアドレス
>ping デフォルトゲートウェイのIPアドレス
>ping DNSサーバのIPアドレス
>ping 目的のサーバのIPアドレス
のように近いものから順に確認していくとよい


+Tracing routeコマンド+
実際に目的のアドレスに行くまでの道順を示してくれるコマンド
Windowsの場合
tracert[ -d][ -h 最大ホップ数][ -j ゲートウェイ・リスト][ -w タイムアウト時間] 対象ホスト(ホスト名またはIPアドレス)
Linuxの場合
traceroute[ -dFInrvx][ -g ゲートウェイ・リスト][ -i インターフェイス][ -f 初期TTL値][ -m 最大TTL値][ -p ポート番号][ -q 試行回数][ -s 送信元アドレス][ -t TOS][ -w タイムアウト時間] 対象ホスト(ホスト名ま たはIPアドレス)[ パケットサイズ]


+arpコマンド+
IPアドレスからMACアドレスを確認

+netstatコマンド+
ポートの接続状態を確認することができるコマンドである
PingやTracing routeとは違う方向からアプローチして問題点を探し出すことができる
【Windowsの場合】
netstat[ -a][ -e][ -n][ -s][ -p プロトコル][ -r][ インターバル]
【Linuxの場合】
――接続一覧表示
netstat[ -vnNcaeol][ ソケットレベル]
――インターフェイスごとの統計表示
netstat[ -veenNac] -i
――マスカレード機能の統計表示
netstat[ -cnNe] -M
――ネットワーク全般の統計表示
netstat -s[ ソケットレベル]
――ルーティング・テーブルの表示
netstat[ -veenNcCF][ -A アドレスファミリ名] -r


・nslookupコマンド
問い合わせたいドメイン名を入れると、応答が返ってくる
ネームサーバのアドレスもわかる
起動してから
>set d2で詳細表示
>set type = mxでmxレコードを送信(メールサーバなどの確認)
>set type = nsで戻す
>set allでrootが分かる
>exitでコマンド終了





つ、つかれた。
ねよっと。

コメントの投稿

非公開コメント

プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。