IPとは?IPプロトコルを徹底解説

こんにちは。

今回は、

「IP」

について解説していきます。

今回の記事では、あなたのこんな疑問を解消していきます。

こんな疑問を解消!
  • IPってなにをするプロトコルなの?
  • コネクションレスってなに?
  • ベストエフォートってよく聞くけど、どういう意味?
  • IPヘッダの中身を詳しく教えて!

IPはネットワークにおいて非常に重要な役割を担っています。IPを知らなければ、ネットワークを理解することはできません。

インターネットに欠かすことのできない「IP」について一緒に学んでいきましょう。

1.IPとは?

 

IPとは、正式には

Internet Protocol

という通信プロトコルの一種です。

普通は略してIPと言います。

IPは、TCP/IPのプロトコルの一つで、その中でも中心的なプロトコルです。

 

なぜ中心的なプロトコルなのでしょうか?

 

それは、IPが

「パケットを宛先のネットワークまで送り届ける」

というネットワークにおける最も重要な役割を担っているからです。

パケットとは、IPで扱うデータの単位です。

 

どのくらい重要なのか、少しお話したいと思います。

IPはインターネット層のプロトコルですが、

インターネット層より下層のネットワークインターフェイス層では、

同一のネットワークの機器にデータを送ることしかできません。

同一のネットワークの機器としかデータのやり取りができないということは、
自分の家の中のコンピュータや、自分の会社の中のコンピュータとしかデータのやり取りができないということです。

でも、普段の生活の中で、友達(別の家)にメールを送ったり、ラインで電話をしたり、取引先(別の会社)にファイルを転送したりしますよね?

そのようなことを行うには、異なるネットワークの機器(スマホやパソコン)にデータを送る必要があります。

この、

「異なるネットワークの機器にデータを送る」

ということを可能にするのが、インターネット層のプロトコルであるIPです。

IPの重要性を少し理解していただけたでしょうか?

 

今の話の中で、

「TCP/IPってなに?」

「インターネット層ってなに?」

と思った方は下の記事を参考にしてください。

TCP/IPとは?初心者がTCP/IPを理解するための完全ガイド

2.IPの特徴

 IPの特徴は以下の4点です。

2-1.コネクションレス型プロトコル

コネクションレスとは、

「送信側と受信側で通信がうまくできているかの確認を行わない」

ということです。

通信がうまくできていなくても、送信側ではパケットを送信します。

そして、ちゃんと届いているかどうかという確認はしません。送ったら送りっぱなしです。

2-2.階層型アドレッシング

IPは、パケットを宛先のネットワークにいる相手に届けるために、ネットワーク上の位置情報を管理します。

その位置情報をIPアドレスといいます。

IPアドレスは、階層構造のアドレス体系です。階層構造とは、枝分かれになってるもののことをいいます。

IPアドレスについて、詳しい内容は以下の記事をご覧ください。

いまさら聞けない!IPアドレスとサブネットマスク

2-3.ベストエフォート型の配信

ベストエフォートとは、

「最大限の努力をします」

ということです。

何に対して最大限の努力をするんでしょうか?

いま、 IPについて話していますので、もちろんパケットの送信に関して最大限努力するということです。

つまり、ネットワークにおいて

「パケットを相手に確実に届ける保証はしないけど、最大限努力します!」

というのがベストエフォート型の配信です。

 IPでは、パケットを確実に相手側に届けるという保証はしてくれません

保証はしないけど、できる限り届けるようにする。というのがIPです。

確実に届けたい場合は、TCPなどの上位プロトコルに任せます。

2-4. IP version4とIP version6

IPには、IP version4とIP version6があり、普通IPv4とIPv6と呼びます。

この記事では、IPv4についてご説明します。

3.IPv4ヘッダ

TCP/IPのカプセル化のところで説明しましたが、

図のようにトランスポート層のプロトコル(ここではTCP)から受け取ったデータ(TCPセグメント)にIPヘッダが付加されます。

実は、このヘッダとデータは図のようになっています。

そして、赤い矢印の部分がIPヘッダです。

IPヘッダは、基本的には20バイトですが、オプションを使用する場合は、最大で60バイトになります。

また、IPヘッダ以外のデータ部分(TCPセグメントなど)をIPペイロードといいます。IPに限らず、ヘッダ以外のデータ部分はペイロードと呼びます。

それでは、一つ一つの項目を見ていきましょう。

3-1.バージョン(4ビット)

バージョンには、IPプロトコルのバージョン番号が4ビットで入ります。

IPv4ヘッダなので、IPのバージョン番号は「4」です。

そのため、「4」を2進数で表した「0100」が入ります。

3-2.ヘッダ長(4ビット)

ヘッダ長には、IPヘッダの長さが4ビットで入ります。そして、その長さを32ビット単位、つまり32ビットの何倍かで表し、その「何」倍の数字が入るわけです。

先にオプションを説明してしまいますが、通常はオプションは使用されません。そのため、通常ヘッダ長は20バイトです。

ヘッダ長は32ビット単位で表し、

20バイト=160ビット=5×32ビット

(※1バイト=8ビット)

なので、32ビットの5倍となるため、ヘッダ長には「5」が入ります。4ビットで表せば、「0101」です。

3-3.サービスタイプ(TOS : Type Of Service)(8ビット)

サービスタイプとは、パケットの優先順位の情報です。

パケットの優先制御を行います。

3-4.パケット長(16ビット)

パケット長は、文字通りパケットの長さを表します。

パケットの長さは、IPヘッダと IPペイロードを合わせた全体の長さです。

そして、パケットの長さを8ビット単位で表します。8ビットの何倍かで表して、その「何」倍の数字が入るわけです。

たとえば、パケット長が500バイトなら

500バイト=500×8ビット

なので、「500」倍となります。

2進数で表すと「111110100」です。

パケット長は16ビット分ありますので、

「0000000111110100」

が入ります。

3-5.識別子(16ビット)

転送する IPパケットがMTUを超える場合、 IPパケットを分割して送ります。

その時に、分割されたそれぞれの IPパケットに対して、識別子が割り当てられます。

そして、識別子に同じIDが割り当てられ、データの復元に使用されます。

分割したパケットのうち、どれとどれが同じものなのかを識別子で判断するわけです。

MTUとは、Maximum Transmission Unitの略で、日本語では最大転送ユニットといいます。

MTUは一度に送ることのできるデータの最大のサイズをいいます。例えば、イーサネットでは1500バイトです。

3-6.フラグ(3ビット)

フラグとは、パケットの分割に関する情報が記録されています。

各ビットの意味は以下の通りです。

1ビット目 未使用。0が入る。
2ビット目

分割して良いかどうかを表す。

「0→分割可能」

「1→分割不可能」

3ビット目

分割されたパケットである場合、最後のパケットか途中のパケットかを表す。

「0→最後のパケット」

「1→途中のパケット」

 

3-7.フラグメントオフセット(13ビット)

fragmentとは、「断片」という意味です。

識別子のところでご説明しましたが、パケットサイズがMTUを超える場合は、パケットは分割されます。

その分割されたそれぞれのパケットが、元の一つパケットのどの部分なのか、を表すのがフラグメントオフセットです。

フラグメントオフセットによって、分割されたパケットの順番がわかり、元の一つのパケットに戻すことができます。

フラグメントは、13ビット

3-8.生存時間(TTL : Time To Live)(8ビット)

生存時間は、文字通りパケットの生存時間です。通常、TTLと呼びます。

生存「時間」といっても、実際に何秒とかいう時間のことではありません。

パケットが通過できるルータの数のことです。

パケットは、ルータを通過するたびにTTLが1つずつ減らされていきます。

そして、TTL=0となるとそのパケットは破棄されます。

これは、不要なパケットがネットワーク上を転送され続けて、ネットワークを圧迫することを防ぐためです。

TTLは8ビットなので、パケットが通過できるルータは最大255個です。

3-9.プロトコル(8ビット)

IPより上位のプロトコルは何を使用しているのかを表すのが、この項目です。8ビットで構成されます。

この項目によって、IPヘッダの次のヘッダがどのプロトコルのものなのかを知ることができます。

主なものは以下の通りです。

  • ICMP  →  1
  • TCP    →  6
  • UDP   → 17 

3-10.ヘッダチェックサム(16ビット)

ヘッダチェックサムでは、 IPヘッダのエラーチェックをするための値です。

チェックサムの計算を行い、IPヘッダが壊れていないことを確かめます。

3-11.送信元アドレス(32ビット)

 IPパケットの送信元の IPアドレスのことです。

このパケットは、この IPアドレスのコンピュータから送られてますよ、という情報です。

 IPアドレスは32ビットの情報なので、送信元アドレスも32ビット分ありますね。

3-12.宛先アドレス(32ビット)

 IPパケットの宛先のIPアドレスのことです。

このパケットの宛先は、このIPアドレスのコンピュータですよ、という情報です。

もちろんこの項目も32ビット分あります。

3-13.オプション(可変長)

パケット長のところで説明しましたが、通常オプションは使用されません。

ただ、テストなどの時に使用されます。

オプションの長さはその時々によります。可変長といいます。

その程度の理解で十分です。

3-14.パディング(可変長)

パディングは、「詰め物」という意味です。

オプションを使用する場合、オプションの長さが32ビット単位とならない場合があります。

そのときに、足りない部分に「0」を詰めて32ビットになるようにします。

オプションを使用して足りない部分にパディングが入るので、パディングも可変長です。

4.まとめ

いかかでしたでしょうか?

IPはTCP/IPの中心的なプロトコルですので、必ず抑えておかなければいけない内容です。

今回お話した内容以外にもIPに関連する技術はいろいろあります。詳しくは、以下の記事をご覧ください。

いまさら聞けない!IPアドレスとサブネットマスク

ICMPとは?pingやtracerouteが大切な理由

ARPとは?アドレス解決プロトコルのすべて

それでは、今回も最後まで読んでくださり本当にありがとうございました。

 

この分野も記事を書いてほしい!
ここがわらかないから教えてほしい
など、ブログを読んで疑問に思ったこと・気づいたことなど、何でもメールしてください!

  お問い合わせはこちら