パソコンのIPアドレスとWiFiのIPアドレスが違うのはなぜ？

こんにちは！テコンドーです。

ネットワークの勉強をしようと思い[マスタリングTCP/IP 入門編](https://www.amazon.co.jp/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0TCP-IP-%E5%85%A5%E9%96%80%E7%B7%A8-%E7%AC%AC5%E7%89%88-%E7%AB%B9%E4%B8%8B/dp/4274068765/ref=pd_sim_14_1?_encoding=UTF8&pd_rd_i=4274068765&pd_rd_r=0ff5ee02-1ae1-11e9-9cbc-e5bb783317a4&pd_rd_w=tNlLZ&pd_rd_wg=y51xG&pf_rd_p=b79503b3-46ea-4244-8b06-2f14c40a97b1&pf_rd_r=NXDB1PQPGFWYYX1JEQSA&psc=1&refRID=NXDB1PQPGFWYYX1JEQSA)を読破しました。
これでTCP/IPの基礎基本が理解できたので実際に手を動かしてみて自分のパソコンで何が行われているのかを確認しようとした時です。

[IPアドレスを確認できるサイト](https://www.cman.jp/network/support/go_access.cgi)

で確認できたIPアドレスが

![スクリーンショット 2019-01-18 14.24.42.png](https://qiita-image-store.s3.amazonaws.com/0/231063/cc3f9473-1f99-4668-ce01-a27588703253.png)

となっているのに対し、

パソコン上で確認できたIPアドレスが

```
HogeHogeMacBook-Air.local
10.~~~.38.184
```

でした。

ん？同じパソコンなのになぜIPアドレスが違うのか？？？

はじめにネットワークの学習をする際につまずいたのでこれを解説していきます！

（注）
自分のパソコンのIPアドレスを知る方法は
[こちら](http://www.geolocation.co.jp/learn/program/03.html)に書かれていますので参照ください。

## 結論
忙しい読者の皆様のために結論から述べます。
今回の記事では次の三つの画像を理解できれば終了となります。

グローバルIPとプライベートIP
![スクリーンショット 2019-01-18 17.18.56.png](https://qiita-image-store.s3.amazonaws.com/0/231063/10c9a2ea-94b3-d86a-a19c-983407b0aba4.png)


DHCP（Dynamic Host Configuration Protocol）
![スクリーンショット 2019-01-18 17.19.59.png](https://qiita-image-store.s3.amazonaws.com/0/231063/1cc102d8-c7b8-bb9b-48fa-6970d2ec53ad.png)


NAT（Network Address Translation）
![スクリーンショット 2019-01-18 17.19.50.png](https://qiita-image-store.s3.amazonaws.com/0/231063/4939f34b-aa55-fdc1-91f5-d70a474e1100.png)

以上の三つです。
なお、こちらの画像はあくまでイメージですのでご了承ください。


## プライベートIPアドレスとグローバルIPアドレスについて
先ほどの疑問を解決するために二つのIPアドレスの存在について知る必要があります。
**プライベートIPアドレス**と**グローバルIPアドレス**についてです。

グローバルIPアドレスとは
>グローバルIPアドレスとは、インターネットで相手と通信するために持つ、ほかのアドレスと重複しない一意のIPアドレスのこと。TCP/IPでは、通信相手を特定してIPパケットを送信したり、ルーティングするために必要となる。
[引用](http://www.atmarkit.co.jp/aig/06network/privateip.html)

のことです。
このグローバルIPアドレスを用いてネットワークに繋がり、世界と繋がる事ができるものです。

それに対してプライベートIPアドレスとは

>プライベートIPアドレスとは、LANなどの企業内ネットワークに存在する端末が、自由に使用できるIPアドレスのこと。自ネットワーク内でのみ一意であるため、ほかのネットワークでは同じプライベートアドレスが利用されている可能性がある。
[引用](http://www.atmarkit.co.jp/aig/06network/privateip.html)

となっています。ある限られたネットワークの範囲で有効なアドレスです。このあたいは他のネットワークで使われているアドレスである可能性があります。

以上の事を踏まえると冒頭の疑問も解けます。グローバルとプライベート二つのアドレスが僕のパソコンに存在していました。

`サイトで確認できるアドレス（写真）：グローバルIPアドレス
自分のパソコンで確認できるアドレス：プライベートIPアドレス
`
となっていたってことなんですね。

### プライベートIPアドレスはなぜあるのか？？
プライベートIPアドレス存在している理由は、**IPアドレスの枯渇**が原因となっています。

IPアドレスは32ビット（IPv4）なので約43億個のIPアドレスを割り当てる事ができます。

IPアドレスが作られた当時はここまでネットワークが発達し大量の機器をインターネットに接続する事が想定されていませんでした。４３億個もあれば余裕だろ！！！と思ってたわけですね。

しかし時代の移り変わりでIPアドレスの枯渇が懸念されるようになりました。その問題の一つの解決策として提案されたのがプライベートIPアドレスです。

固有のネットワークでのみ一意であるアドレスを使用する事で他のネットワークでも同じIPアドレスが使われていても問題ありません。
プライベートアドレスを実装する事でIPアドレス数を増やすことに成功しました。

自分のパソコンのプライベートIPアドレスですが、WiFi変えると変わるのが確認できると思います。
確認してみてください！！！

---


## 自分のプライベートアドレスはどこ所属なの？？？
二つのアドレスがある原因はわかったのですが、次に気になったのはプライベートアドレスについてです。

*一つのネットワークで一意である*

とのことなんですが、自分のパソコンのプライベートIPアドレスはどこ所属なのでしょうか？？？

この答えは、
**今接続しているネットワーク（WiFi、回線）**
です。WiFiに接続した時に自動でそのネットワークの中の空いているアドレスを自分のアドレスとして設定してくれます。
この仕組みをDHCP（Dynamic Host Configuration Protocol）と言います。

DHCPがあるためWiFi等に接続さえすれば自分のパソコンに勝手にプライベートIPアドレスが割り当てられ、インターネットを利用する事ができます。

## プライベートIPアドレスとグローバルIPアドレスはどうやって変換するの？
プライベートIPアドレスの謎も無事解けましたが最後の謎が残っています。
どうやって**プライベートIPアドレスで通信している**のでしょうか？

プライベートIPアドレスは自分のネットワーク内での自分のアドレスであるため、他のネットワークと通信することはできません。何らかの形でプライベートIPを変換する必要があります。

この時に使うのがNAT（Network Address Translation）です。
これは**プライベートIPアドレスをグローバルIPアドレスに変換する**機能です。
この機能を使うことで自分の必要な時にだけIPアドレスをグローバルアドレスに変換して外のネットワークと通信する事ができます。

この仕組みを使う事で外のネットワークと通信する事が可能になります。

## まとめ
簡単ですが自分が疑問に思ったことをまとめました。
ここでもう一度冒頭に用意した三つの画像をみていただけると何をしているのか理解できると思います。

気になったところについては自分なりに理解したので共有させていただきました。

気づいたこととしては、**実際に手を動かさないと理解できない（していない）ことは多い**事が身にしみてわかりました。

今日お伝えした内容って全部「マスタリングTCP/IP」に書かれてるんですよね笑

ああそうだったそうだったと調べながら思い出していきました、、
やっぱり本読むだけなく手元で確認することも大事ですね。

ネットワークは中で何が起こっているのかわかりにくいですよね、けれどWebアプリケーションを作る際などは本当に基本中の基本になるのでしっかりと抑えていきましょう！！！

## 修正について
内容について不備等あればいつでもご意見お待ちしています。
何かあればコメントしていただけると幸いです。