TCPIPプロトコル
TCP/IPは、現在のインターネット通信およびイントラネット通信において最も利用されている通信プロトコルです。
OSI参照モデルとは違うがOSI参照モデルと対比するとどうなるか下に確認する。
OSI参照モデル 国際標準化機構(ISO)が作ったもの
TCPIPプロトコル 米国国防高等研究計画局(DARPA)
アプリケーション、プレゼンテーション、セッション層 = TCP/IPのアプリケーションになる。
各一緒。
tcp ip のカプセル化
先ほどに記述したOSI参照モデルと一緒の考え方で、上位層からヘッダが負荷され、送信先で外れていく
これを非カプセル化という。
インターネット層
TCP/IPの4階層モデルで、下から2番目に位置する層。インターネットの基本となるプロトコルである「IP」がこの層に含まれる。
インターネット層は、ホストツーホストの通信を実現する階層であり、その通信のために「IPアドレス」が使われる。インターネット内で固有のIPアドレスをホストに割り当てることで、ネットワークの種類に関係なく、世界中のどの場所からでも通信したい相手ホストを特定できる。また、IPではデータを「パケット(データグラム)」という単位に分割する
ヘッダという話が先ほど出ましたが、そのヘッダに何があるか確認する。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
バージョン | ヘッダ長 | サービス種別 | 全長 | ||||||||||||||||||||||||||||
識別子 | フラグ | 断片位置 | |||||||||||||||||||||||||||||
生存時間 | プロトコル | チェックサム | |||||||||||||||||||||||||||||
送信元アドレス | |||||||||||||||||||||||||||||||
宛先アドレス | |||||||||||||||||||||||||||||||
拡張情報 | |||||||||||||||||||||||||||||||
データ |
- バージョン(Version) IPのバージョンであり、IPv4の場合は4が格納される。
- ヘッダ長(Internet Header Length、IHL) IPヘッダの長さで、4オクテット単位で表される。この値によりデータの開始位置を知る事が出来る。通常は「5」が入る。
- サービス種別(Type Of Service、TOS、優先順位) パケットが転送される際に重視するサービスを指定する。ただし、ルータの実装においてパケット毎にサービスを区別する事は容易では無い。送信元が全てを重視とする設定を行う場合や、ネットワークの運用方針によっては境界に位置するルータが値を書き換える場合もある。優先度はパケットの優先度を8段階で示す。パケットの送信待ち行列を8個用いて実現する実装もある。遅延度はパケットを早く宛先へと到達させる事を求める。転送量はパケットを多く宛先へと到達させる事を求める。信頼性はパケットを失わず宛先へと到達させる事を求める(このような処理をQoSと呼ぶ)。IPv6のIPv6パケットでは、サービス種別の代わりに「フローラベル」(Flow Label)が定義されている
- 全長(Total Length) IPヘッダを含むパケットの全長。8ビット単位なので8ビット×nの「n」が入る。
-
- 識別子(Identification、識別番号とも) パケットの送信元が一意な値を格納する。断片化したパケットの復元に用いられる。パケットを転送するルータがデータを分割したときにバラバラになった複数のパケットを同一のものと判断する。
フラグ 0 1 2 予備 禁止 継続 - フラグ(Various Control Flags) 断片化の制御に用いる。ビット3は使用しない。ビット1は1の場合に断片化の禁止を意味する。ビット2は断片化された後続のパケットが存在するパケットであることを意味し、0の場合は断片化されたパケットのうち最終パケットであることを意味する。
- 断片位置(Fragment Offset) ルータなどがパケットを断片化した際に、その位置を8オクテット単位で格納する。断片化したパケットの復元に用いられる。以上の識別子、フラグ、断片位置の情報からフラグメントを行うことができる。
- 生存時間(Time to Live、TTL) パケットの余命を示す値である。送信元はパケットが経由できるルータ数の上限を設定し、ルータはパケットを転送する毎に値を一つ減らし、値が0になるとパケットは破棄される。パケットがネットワーク上で無限に巡回する問題を防ぐ効果が有る。TTLは8ビットのため0〜255の値をセットできる。
- プロトコル(Protocol) TCPなどの上位プロトコルを示すプロトコル番号が設定される。パケットの宛先である装置がパケットを受信すると、この値を用いて上位プロトコルを識別し、その実装へペイロードを渡す。主に使われるプロトコルには、ICMP、TCP、UDP、IPv6、EIGRP、OSPFが挙げられる。
- チェックサム(検査合計、Header Checksum) IPヘッダの誤り検査に用いられる。転送毎に生存時間の値が変わるため、ルータはチェックサムも転送毎に再計算する必要がある。データ部分に関してはTCPなどの上位層に任せ、IPパケットのヘッダのチェックサムの対象はヘッダ部分だけである。また、IPパケットのチェックサムフィールドは設定必須の項目なので省略できない。IPv6ではチェックサムフィールドはなくなった。
- 送信元アドレス(Source Address) パケットの送信元IPアドレスが設定される。
- 宛先アドレス(Destination Address) パケットの送信先IPアドレスが設定される。
- 拡張情報(Options) 可変長の拡張情報が32ビット単位で設定される。めったに使用されることがないが、セキュリティ、ルーズソースルーティング/ストリクトソースルーティング、レコードルート、インターネットタイムスタンプなどの情報が埋め込まれる。可変長のため0を足すパディングを必要とする。
- データ パケットが伝達すべきペイロードである。
- 以上wikiより引用。https://ja.wikipedia.org/wiki/IPv4
チェックサムとかフラグメントオフセットは試験に出ることがあります。
ARPとは
Address Resolution Protocol (アドレス解決プロトコル、略称:ARP、アープ)は、イーサネット環境で、IPアドレスから対応するMACアドレスを動的に得るためのプロトコル。
ARPリクエストとARPリプライ
別ネットワークへのARP
コンピュータAが通信したい相手のコンピュータの
IPアドレスが192.168.0.5だとします。その場合、192.168.0.5と通信したいので192.168.0.5の
MACアドレスを得るためのARPリクエストではなく、デフォルトゲートウェイのIPである192.168.1.2のMACアドレスを得るためのARPリクエストを送信します
ICMP
IPプロトコルのエラー通知や制御メッセージを転送するためのプロトコルです。
ICMPヘッダは以下のようにMACヘッダ・IPヘッダの後ろにある。
+------------+-----------+-------------+----------- | MACヘッダ | IPヘッダ | ICMPヘッダ | データ... +------------+-----------+-------------+-----------
Contents
ICMPヘッダ
ICMPヘッダは一般的に以下の通りとなる。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
タイプ | コード | チェックサム | |||||||||||||||||||||||||||||
データ |
データグラムのデータ部分の最初のオクテットはICMPタイプフィールドであり、このフィールドの値は、以降のICMP通知の書式を決定する。
「未使用」とラベル付けされているフィールドは今後の拡張のために予約されており、送信時には0を入れなければならないが、受信者はこれらのフィールドを(チェックサムに含めることを除いて)使用すべきではない。
チェックサムは、ICMPヘッダの先頭から(すなわちタイプから)データの末尾までを対象に、16ビット単位で算出される。チェックサムフィールド自身も計算対象に入っているが、
計算時には0として扱う。バイト数が奇数の場合は末尾に0のバイトがあるものとして計算する。
また、いくつかのタイプでは、ICMP通知が発生する原因となった元データグラムの先頭部分をコピーしている。この種のタイプは以下の形式をとる。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
タイプ | コード | チェックサム | |||||||||||||||||||||||||||||
未使用 | 長さ | 未使用 | |||||||||||||||||||||||||||||
IPヘッダ + 元データグラムの先頭部分 |
Echo Message(エコー要求通知)・
Echo Reply Message(エコー応答通知)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
タイプ(0または8) | コード (0) | チェックサム | |||||||||||||||||||||||||||||
識別子 | シーケンス番号 | ||||||||||||||||||||||||||||||
データ(可変長) |
エコー要求はタイプ=8で送信される。現在のところ定義されているコードは0だけである。識別子は送信元で適当な値を決める。要求したプロセスのプロセスIDなどが使われる。シーケンス番号は、同じ識別子で繰り返しエコー要求を送信した場合の通し番号である。
Ping
IPネットワークの目的のPCやサーバーから返事が返ってくる時間などを測定するプログラムです。
たとえば電話なら、目的の相手につながっているかどうか「もしもし」って声かけますよね。
そうすると普通ならもしもしと帰ってきます。
このようにPingというものを送信して返信を確認し疎通しているか確認するためのコマンドです。
traceroute(トレース ルート)はIPネットワークにおいて、ノードまでの経路情報を取得するツールである。 インターネット上で、2つのノード(パソコンやサーバなど)が通信する場合、2つのノードの間には0個以上のルータが存在する。 tracerouteを利用することで、tracerouteを実行したノードから指定したノードに到達するまでに、経由するルータのリストが得られる。
例えば3番目のルーターが悪いなどこのコマンドを打てばわかる。