IPアドレスとポート番号の次は「TCP/IP」

「60歳から始めるホワイトハッカーへの道」第4回です。

これまでにIPアドレスとポート番号について勉強してきました。


IPアドレスが通信相手を識別するために使われ、ポート番号によって通信先のサービスを区別する。

ここまでは何となく分かってきました。


ところがネットワークについて調べていると、必ずと言っていいほど「TCP/IP」という言葉が出てきます。

以前の仕事でPCのセットアップをしていたときにも見た言葉ですが、正直なところ「ネットワーク関係の何か」という程度の理解でした。

今回はTCP/IPとは何なのか、Macを実際に操作しながら勉強してみます。



TCP/IPとは何だろう?

ネットワークでは、コンピューター同士が勝手な方法でデータを送ってしまうと通信できません。

そこで、コンピューター同士が通信するための共通のルールが必要になります。

この通信ルールを「プロトコル」と呼びます。

TCP/IPは、インターネット通信で使われる複数のプロトコルをまとめた呼び方です。

前回までに勉強したIPも、その中の重要な一つだったわけです。



TCPとIPは役割が違う

初心者の私には「TCP/IP」という一つのものに見えていましたが、TCPとIPにはそれぞれ役割があります。


大まかに考えると、

IP ↓ データをどこへ届けるか TCP ↓ データを相手とどのようにやり取りするか

という違いがありそうです。


実際の通信はもっと複雑ですが、最初から全部覚えようとすると先に進めません。

今の段階では「インターネットでは決められた通信ルールに従ってデータが運ばれている」と理解して先へ進みます。



Macから相手に届くか確認してみる

では実際にMacBook Proのターミナルを開いてみます。

今回はpingというコマンドを使ってみます。

ping -c 4 example.com

実行すると、相手から応答があれば結果が表示されます。

最後には送信したパケット数、受信したパケット数、応答時間なども表示されます。


MacBook-Pro ~ % ping -c 4 example.com
PING example.com (104.20.23.***): 56 data bytes
64 bytes from 104.20.23.***: icmp_seq=0 ttl=59 time=18.984 ms
64 bytes from 104.20.23.***: icmp_seq=1 ttl=59 time=19.452 ms
64 bytes from 104.20.23.***: icmp_seq=2 ttl=59 time=19.583 ms
64 bytes from 104.20.23.***: icmp_seq=3 ttl=59 time=19.766 ms


普段ブラウザを使っているだけでは見えませんが、こうしてターミナルから確認すると「本当にネットワークを通して通信しているんだな」と少し実感できます。

なお、相手側の設定によってはpingに応答しない場合もあるため、応答がないことだけで通信障害と判断できるわけではありません。



データは直接相手まで飛んでいる?

次に気になったのが、

「自分のMacからWebサイトまで、データは直接届いているのだろうか?」

という疑問です。

そこで今度はtracerouteを試してみます。

traceroute example.com

実行すると、通信経路上の機器についての情報が順番に表示されます。

つまり、自分のMacから目的地まで一本の線で直接つながっているのではなく、複数のネットワーク機器を経由しながら通信していることが見えてきます。


MacBook-Pro ~ % traceroute example.com

traceroute: Warning: example.com has multiple addresses; using 104.20.23.***

traceroute to example.com (104.20.23.***), 64 hops max, 40 byte packets

 1  ntt.setup (192.168.1.1)  3.798 ms  3.784 ms  3.374 ms

 2  133.208.184.49 (133.208.184.49)  22.197 ms  20.723 ms  24.448 ms

 3  133.208.184.50 (133.208.184.50)  24.288 ms  22.319 ms  23.064 ms

 4  * 133.208.193.206 (133.208.193.206)  22.666 ms  22.919 ms

 5  162.158.4.58 (162.158.4.58)  25.582 ms  23.413 ms  23.108 ms

 6  162.158.4.47 (162.158.4.47)  24.879 ms  24.225 ms

    162.158.4.25 (162.158.4.25)  25.110 ms

 7  104.20.23.154 (104.20.23.***)  22.779 ms  21.620 ms  23.816 ms


途中に「*」が表示されることもありますが、必ずしも異常というわけではなく、応答しないよう設定されている機器などもあります。



少しずつネットワークがつながってきた

ここまで勉強してきた内容を並べてみます。

IPアドレス ↓ 通信相手を識別する ポート番号 ↓ 通信先のサービスを区別する TCP/IP ↓ ネットワークで通信するためのルール ping ↓ 相手との通信状況を確認する traceroute ↓ 目的地までの経路を調べる

第1回のときには「ホワイトハッカーになるには何を勉強すればいいの?」という状態でした。

まだ入口ですが、知らなかった言葉同士が少しずつつながってきました。



これがセキュリティとどう関係する?

ホワイトハッカーやセキュリティを勉強するなら、まず通常の通信がどう動いているのかを理解する必要がありそうです。


正常な状態を知らなければ、「何がおかしいのか」も判断できません。

このシリーズでは、いきなり攻撃手法を覚えるのではなく、まずネットワークやWebの基本的な仕組みを理解してからセキュリティへ進んでいこうと思います。

また、これから行うネットワークの実験についても、自分のMacや自分で管理している環境を中心に行います。



今回覚えたこと

  • ネットワーク通信にはプロトコルというルールがある
  • TCP/IPはインターネット通信を支えるプロトコル群の総称
  • IPとTCPにはそれぞれ役割がある
  • pingで通信状況を確認できる
  • tracerouteで通信経路を調べられる



次回はDNSを調べてみる

今回の実験では、

ping -c 4 example.com

と入力しました。

でも前回までの話では、コンピューターはIPアドレスを使って通信相手を識別するはずです。

それなのに、なぜexample.comという名前だけで相手へ通信できたのでしょう?


ここで登場するのがDNSです。

次回は「DNSとは?なぜURLを入力するだけでWebサイトにつながるのか」を、またMacを実際に操作しながら調べてみます。