📕

ネットワークの基礎 - Cyber Security Roadmap

2024/11/15に公開

ネットワークの基礎

サイバー攻撃の大半は遠隔で行われ、増加傾向にある

サイバー攻撃の大半は遠隔で行われるため、ネットワークを知っておく必要があります。また、その必要性は年々増加傾向にあります。

総務省の「令和6年版 情報通信白書」 - 図表Ⅱ-1-10-3 NICTERにおけるサイバー攻撃関連の通信数の推移総務省の「令和6年版 情報通信白書」 - 図表Ⅱ-1-10-3 NICTERにおけるサイバー攻撃関連の通信数の推移

遠隔であれば、物理的な接触なしにターゲットにアクセスできるため、攻撃者にとってコストやリスクを低減できるメリットがあります。リモートワークの普及や、画期的なサービスなど。ネットワークの恩恵を受けると同時に、それを知っておく必要性も高まります。

この投稿で解説するネットワークの基礎について

ネットワークの基礎

この投稿ではCCNA(Cisco Certified Network Associate)を参考にしつつも、更に最も基礎的だと思う部分だけ押さえていきます。

なのでCCNAを受けようと考えている方にとっては、超初心者向けになると思います。最も対象な読者層としては、まだ資格は取らなくていいので、とりあえずネットワークとはこんな感じのもので、あとは所々触りながら覚えたいみたいな人をイメージしています。

ネットワークとは?

ネットワークとは?

ネットワークは、さまざまなものがつながり合って機能しているものを指します。例えば友人関係やコミュニティもある種のネットワークといえます。

ただ、サイバーセキュリティやIT技術者にとって「ネットワーク」とは、コンピュータ同士がつながってデータをやりとりするコンピュータネットワークを指します。

コンピュータネットワーク(以降、ネットワーク)があると、データやリソースを簡単に共有でき、遠く離れた場所や大勢の人とスムーズに情報のやり取りができるのが大きなメリットです。

ネットワークの種類(LANとWAN)

LANとWAN

ネットワークは、使われる範囲によって大きくLANWANに分けられます。

  • LAN(Local Area Network):オフィスや家庭など限られたエリアで使うネットワークです。たとえば、自宅や会社のWi-FiもLANの一種です。LANには、ケーブルで接続する有線LANと、Wi-Fiなどの無線LANがあります。

  • WAN(Wide Area Network):地理的に離れた複数のLANをつなぐ広い範囲のネットワークです。例えば、東京本社と北海道支社を結ぶネットワークがWANです。WANを構築するには、通信事業者(キャリア)の提供する回線やサービスが必要です。

無線LAN

無線LAN

馴染み深い無線LANは、ケーブルを使わずにデータの送受信を行うLANで、ワイヤレスLAN、WLAN、Wi-Fiとも呼ばれます。有線LANがケーブルを使うのに対し、無線LANは電波を使用して空中を通して通信します。

メリット

  • ケーブルが不要なため見た目がすっきりし、設置が簡単。
  • デバイスを自由に移動させても通信が可能。

デメリット

  • 通信状態が不安定になりやすい(電波干渉や距離の影響)。
  • 有線LANに比べると盗聴や不正アクセスのリスクが高い。

無線LANは便利ですが、データが空中を飛ぶ性質上、盗聴や不正アクセスのリスクがあります。そのため、WPA2や最新のWPA3などのセキュリティ規格を活用して成りすまし、盗聴、不正アクセスを防ぐ対策が重要です。

ネットワークトポロジ

ネットワークの構成を表す用語として「トポロジ」があります。トポロジは、ネットワーク内の機器(ノード)同士がどのように接続されているか、全体的な配線の形状や構成を指します。以下に代表的なトポロジの種類を紹介します。

バス型トポロジ

バス型トポロジ

  • 1本の「バス」と呼ばれる共通のケーブルに複数のノードを接続し、ネットワークを構成する方式です。
  • 昔のLAN構成でよく見られたシンプルな構成です。
  • 大量のデータを処理することができず、ネットワーク全体が機能しなくなることがあります。
  • すべてのノードが1本のバスに繋がっているため、もしバスが断線するとネットワーク全体が機能しなくなります。
    バスが断線し通信ができなくなったイメージ
    バスが断線し通信ができなくなったイメージ

スター型トポロジ

スター型トポロジ

  • ハブやスイッチといった「集線装置」を中心に、それぞれのノードが独自のケーブルで接続してネットワークを構成します。
  • 現在のLAN構成で一般的に使用される構成です。
  • 各ノードが集線装置と独立して接続されているため、特定のケーブルが断線しても、他のノードには影響がありません。
  • 各ノードが通信する時はすべて集線装置を介して送信されます。集線装置がダウンするとネットワーク全体が機能しなくなります。
    特定のケーブルが断線した。集線装置が壊れて通信ができなくなったイメージ
    特定のケーブルが断線した、集線装置が壊れて通信ができなくなったイメージ

メッシュ型トポロジ

メッシュ型トポロジ

  • 複数のノードを網の目のように繋ぐ構成で、各ノードが複数のノードと接続されるため、耐障害性(問題が発生した時の備え)が高くなります。
  • 構成の種類は2つあり、全てのノードが直接接続される「フルメッシュ型」と、重要なノードのみを直接接続する「パーシャルメッシュ型」があります。
  • 拠点間の通信が重要な企業のWANなどで利用されることが多いです。

ネットワークのトポロジは、目的や予算、必要な耐障害性に応じて適切なものを選ぶことが重要です。例えば、耐障害性が求められる環境ではメッシュ型が有効ですが、コストも高くなるため、用途に応じた検討が必要です。

インターネットとは?

インターネットとは?

インターネットは、WANに分類される巨大なネットワークで、ISP(Internet Service Provider)、と呼ばれる通信事業者を通じて世界中のコンピュータやデバイスが網の目のようにつながっています。

インターネットは、誰でも自由に利用することができます。稀に国によってはその自由を脅かす法律ができたり、そもそも経済や土地の地形的な要因でインターネット回線が普及してなかったりして利用できないこともありますが。そういう例外を除けば、誰でも自由に利用できます。

AS(Autonomous System)という単位

Autonomous System

驚くかもしれませんが、インターネットはビルゲイツが管理しているわけではありません。そして、一つの組織や個人が全てを管理しているわけでもありません。世界規模のこのネットワークは、AS(自律システム) という単位で構成されています。ASは、ISP、大企業、大学などがそれぞれ運営する独立したネットワークの集合です。

AS同士は、共通の通信ルールを使って情報を交換し、インターネット全体をつなぎます。この仕組みにより、異なるAS間でデータが効率よくやり取りされ、インターネットがスムーズに動いています。

例えば、ウェブサイトにアクセスする際、リクエストは複数のASを経由してサーバに届きます。ASは、インターネットを小さな単位に分け、それぞれが独立して管理しつつ、全体として一つのネットワークとして動く重要なシステムであり単位です。

https://youtu.be/Dxcc6ycZ73M
Code.org:What is the Internet?

アナログとデジタル

アナログとデジタル

アナログとデジタルは、データの表現方法の違いを表す概念です。一度この概念について違いを言語化しておきましょう。

  • アナログ:アナログ時計のようにデータを連続的(アナログ)に表現します。データの変化が滑らかである分、その区切りが見る人によって異なることがあります。
  • デジタル:デジタル時計のようにデータを離散的な値(デジタル)で表現します。情報の変化に区切りがあるため、誰でもデータを正確に把握することができます。

つまるところ、コンピュータにアナログは向きません。誰が見ても同じデータを提供するには、デジタルで表現する必要があります。そのため、コンピュータは原則としてすべてのデータを「0」と「1」で区切るデジタルデータ(2進数)で表現します。

2進数、10進数、16進数

2進数、10進数、16進数

先ほど、コンピュータは2進数のデジタルデータで表現すると解説しましたが、「0~9」で区切ったり、「0~9とA~F」で区切ったりする別の表現方法もあるのでチェックしておきましょう。

2進数

2進数

  • 「0」と「1」の2種類の数字でデータを表現します。
  • コンピュータが扱うデータです。別の表現方法はありますがコンピュータは最終的に2進数で処理します。
  • 0,1のデータを使って表現したあとは、10,11と桁上がりして表現します。

10進数

10進数

  • 「0~9」の10種類の数字でデータを表現します。
  • お金や数の数え方然り、僕たちの日常生活では10進数を使っています。そのため人にとってはわかりやすいデジタルデータの表現です。
  • 繰り返しますが、コンピュータは2進数で処理するため、10進数は人にとっての補助的な役割を果たしています。
  • 0~9のデータを使って表現したあとは、10~19,20~29と桁上がりして表現します。

16進数

16進数

  • 「0~9」の10種類の数字と「A~F」の6種類のアルファベットでデータを表現します。
  • 10進数に比べ、6種類のアルファベットを加えることで、コンピュータで扱うデータを簡潔に表現できます。
  • 0~Fのデータを使って表現したあとは、10~1Fと桁上がりして表現します。

2進数、10進数、16進数の対応表と変換について

各進数の表現方法は、対応表を確認することで簡単に理解できます。WEBのリソースを活用しましょう。(例:IBM-ASCII、10 進数、16 進数、8 進数、およびバイナリーの変換表

また、変換については、CCNAなどの試験で用いたり、日常的に変換を行う人でないのであれば、以下のようなWEBツールを利用することで面倒な計算を簡単に済ませることができます。

もし頻繁にこれらの変換を行うのであれば、変換の計算式を理解しておくと、ツールを使えない環境でも脳内で変換が可能です。

※計算:
・2進数から10進数: 各桁の値を2の累乗で足し合わせる。
・10進数から16進数: 16で割り、余りを対応する数字やアルファベット(A~F)に置き換える。

ビット(bit)とバイト(byte)という単位

ビット

デジタルなデータ表現について解説したところで、ビットとバイトについても簡単に押さえておきます。

ビット(bit):2進数のことです。デジタルデータの最小単位で、0または1の値を持ちます。コンピュータはこの2つの状態を使って情報を処理します。例えば、1ビットで「オン(1)」か「オフ(0)」を表現できます。

バイト(byte):通常8ビットをまとめた単位で、データ量を測る基準として広く使われます。1バイトは8ビット(8桁の0か1)になります。つまり、1バイトで256通り(2の8乗)の情報を表現できます。

このように、2進数や10進数といったデータ表現と、ビットやバイトなどの単位を組み合わせることで、コンピュータは膨大なデータを効率的に扱っています。

サーバーとクライアント

サーバーとクライアント

  • サーバー:サービスを提供する側のコンピュータを指します。特定のリクエストを受け取ると、対応するデータをクライアントに返します。
  • クライアント:サービスを受ける側のコンピュータを指します。特定のリクエストをクライアントに送り(サービス要求)、サーバーから特定のレスポンスを受け取ります(サービス提供)。

この関係で、クライアントはデータを「欲しい」とリクエストし、サーバーがそれに「応える」とレスポンスとしてデータをやりとりできます。

リクエストとレスポンス

P2Pネットワーク

P2P

P2P(Peer to Peer)とは、サーバーとクライアントのような主従関係が固定されていない、対等な関係でデータをやり取りするネットワーク形態です。簡単に言えば、各コンピュータが必要なときにデータを送り合い、直接通信する仕組みです。

P2Pの特性として、情報を複数のコンピュータで分散して保持することが挙げられます。このため、ネットワークの一部のノードが壊れても、他のノードが情報を保持している限り、ネットワークは機能を維持できます。例えば、ブロックチェーンやファイル共有ネットワークは、この仕組みを活用しています。バイネームだと、LINEでのメッセージのやり取りはP2Pです。

P2Pのイメージ

ネットワークの階層化

ネットワークの階層化

ネットワークでデータ通信を行うには、さまざまな通信ルールが必要です。ルールがなければお互いどのようにしていいかがわかりません。それは通信はもちろん、通信を設計するコンピュータ製造の工場でも必要なことです。(メーカーによってルールが異なれば、通信がおかしくなります)。ネットワークの階層化とは、これらのルールを役割ごとにグループ化し、通信を行う際に適切な順序で積み重ねて層状にする仕組みです。まるでミルフィーユのように、各層が独立しながら全体が一つの形としてまとまっています。

階層化には次のようなメリットがあります:

  • ネットワーク設計時に、対象となる範囲を明確に区分できる。
  • 各層が独立しているため、変更や機能追加が容易になる。

のちに詳しく解説しますが、例えば、OSI参照モデルTCP/IPモデルでは、物理層やネットワーク層、アプリケーション層といった層に分かれており、それぞれが異なる役割を担っています。このような分割により、たとえば物理層(ケーブルの交換)やアプリケーション層(通信アプリの改善)を独立して変更できるようになります。

また、階層化によりネットワークのトラブル時には、どの層に問題があるかを特定しやすくなります。例えば、「通信が届かない」といった問題が発生した場合、原因がケーブルの断線(物理層)なのか、IPアドレスの設定ミス(ネットワーク層)なのかを分けて確認できるため、迅速な対応が可能です。

プロトコルとプロトコルスタック

約束と通信

ネットワークの階層化で述べた通信のルールのことを、ネットワーク用語ではプロトコル(Protocol) と呼びます。そして、プロトコルスタック(Protocol Stack) とは、各階層で使用するプロトコルを積み重ねたものです。

プロトコルスタックは、階層化の考え方を実際の通信に適用したもので、各プロトコルが特定の役割を持ちつつ、全体としてスムーズに動作する仕組みを作っています。つまるところ、プロトコルスタックとその内側のプロトコルがあることで、異なるコンピュータが共通の通信ルールを適用し、データの送受信を行うことができます。

プロトコルスタック

OSIモデルとTCP/IPモデルとは?

スタック

プロトコルスタックには、OSIモデルとTCP/IPモデルというものがあります。

  • OSIモデル:7つの層で構成され、通信の仕組みを細かく整理しています。
  • TCP/IPモデル:4つの層で構成され、実際のインターネットで使われるシンプルなモデルです。

「OSIモデル使用してないのなら学ばなくてよくない?」

という当然の疑問はあるのですが、OSIモデルはTCP/IPモデルより細かく整理されている分、通信の仕組みを体系的に理解するのに適したプロトコルスタックなため学習に適してます。

OSIモデル

OSIモデル

OSIモデルでは、通信を7つの層(レイヤ)に分けて考えます。それぞれの層が特定の役割を持ち、下の層が上の層をサポートする仕組みです。

レイヤ番号 名前 主な役割 例となるプロトコル
7 アプリケーション層 ユーザーが利用するアプリケーションの操作をサポート HTTP, FTP, DNS, SMTP
6 プレゼンテーション層 データの形式変換、暗号化、圧縮 JPEG, PNG, SSL/TLS
5 セッション層 通信の開始、維持、終了を管理 NFS, RPC
4 トランスポート層 信頼性のあるデータ送受信 TCP, UDP
3 ネットワーク層 IPアドレスによるデータルーティング IP, ICMP, IPSec
2 データリンク層 隣接ノード間のデータ転送の制御 Ethernet, Wi-Fi
1 物理層 データを物理的に送信 電気信号、光信号、無線信号

この表をもとに、各レイヤの役割を少し掘り下げていきます。

レイヤ1: 物理層

物理層

物理層は、データを物理的に送受信する役割を持つ層です。皆さんはネットに接続するとき、どんな手段を使っていますか?

例えば、外出先でコーヒーショップのオープンなWi-Fiを利用したり、コアなゲーマーは自宅で光ファイバーの有線接続を使って安定した通信環境を確保したりすることがあるでしょう。このように、物理層はケーブルや無線といった「物理的な仕組みや技術」を通じてデータ通信を支えています。

物理層では、データを電気信号や光信号、無線信号に変換して転送します。具体的には次のような役割を果たします:

  • データを送る手段(伝送手段): Ethernetケーブル(有線)、Wi-Fi(無線)、光ファイバーなど。
  • 役割: データを信号に変換し、それを物理的な媒体(ケーブルや電波)を通じて送信。

この層の技術を使い、信号が送受信され、上位層へ渡されることで初めてデータ通信が成立します。物理層は、ネットワークの土台を支える、非常に身近で重要なレイヤです。

https://youtu.be/ZhEf7e4kopM
Code.org:Wires, Cables, and Wi-Fi

レイヤ2: データリンク層

データリンク層

データリンク層は、隣接するネットワーク機器間での通信を管理・制御する役割を担う層です。例えば、LAN(ローカルエリアネットワーク)を思い浮かべてください。Wi-Fiで構築された無線LANでは、複数のデバイスが同じWi-Fiアクセスポイントに接続しています。

この場合、データリンク層の役割は、それぞれのデバイスが正しく通信できるように制御することです。すべてのネットワーク対応デバイスにはネットワークインターフェースカード(NIC) が搭載されており、ネットワークと通信する際に利用されます。しかし、どのデバイスのNICが通信を行っているのかを特定するためには、個別に識別する情報が必要です。

この識別情報がMACアドレス(Media Access Control Address) です。MACアドレスは製造時に設定される固有のアドレスで、ユーザーが変更することはできません。ネットワークインターフェースカード(NIC)に割り当てられ、このアドレスを使ってデバイス間の通信が行われます。

より具体的には、データリンク層では以下のような機能を果たしています:

  • フレーム化: データを「フレーム」という単位に分割し、送り先や送り元のMACアドレスを付加して送信。
  • 誤り検出: 通信中に発生したエラーを検出し、再送要求などの処理を行う。
  • 使用例: LAN内の通信やWi-Fi接続でのデバイス間通信。

例えば、LAN内の通信では、データリンク層が送信元と宛先のMACアドレスを用いてデータをフレーム化し、物理層に渡します。一方、受信側ではフレームを解析し、上位層(ネットワーク層)で処理する準備を行います。

レイヤ3: ネットワーク層

ネットワーク層

ネットワーク層は、データを目的のネットワークまで届けるための最適な経路(ルート)を選択する役割を担います。そしてルートの点と点を効率よく繋ぐためにネットワークの世界では、IPアドレスを使用します。同一ネットワークではMACアドレスが適していますが、異なるネットワークをまたぐ通信ではMACアドレスでは対応できない理由があります。

  • MACアドレスではダメな理由:

    • ローカル限定: MACアドレスはデバイス固有で、同一ネットワーク内の通信にしか使えません。異なるネットワーク間の通信では、どのネットワークに所属するかを判断できないため使えません。
    • ルーティング不可能: MACアドレスにはネットワークの場所や経路情報が含まれておらず、複数のネットワークをまたぐルーティングには不向きです。
    • 柔軟性の欠如: MACアドレスは物理的に固定されているため、ネットワーク構造の変更に対応できません。一方、IPアドレスは動的に割り当て可能で柔軟です。
  • IPアドレス: データの送り先を特定する住所のようなものです。デバイスを一意に識別し、送信元と宛先を指定することでデータを正確に配信します。

  • パケット(IPパケット):データを「パケット」という単位に分割し、送り先や送り元のIPアドレスを付加して送信。

  • ルーティング: 複数のネットワークをまたぐ通信で、データが通る最適な経路を決定します。ルートを選ぶ際には、以下のような要素が考慮されます:

    • 最短経路: パケットが通過するデバイスの数を最小限にする。
    • 信頼性: データが損失しにくいルートを選ぶ。
    • 速度: 接続の物理的性能(例: 光ファイバーが銅線より高速)を重視する。

例えば、あるデバイスから別のデバイスにデータを送る際、ネットワーク層では送信元と宛先のIPアドレスをもとにルートを決定し、データをパケットとしてルーティングします。ルーターがこの役割を担うことで、インターネットや異なるネットワーク間の通信が可能になります。

より具体的には、ネットワーク層のプロトコルにはOSPF(Open Shortest Path First)RIP(Routing Information Protocol) といったものが含まれており、これらが効率的で信頼性の高い通信を実現するためのルールを決めています。

レイヤ4: トランスポート層

順序制御がされていない極端なイメージ
順序制御がされていない極端なイメージ(ハリーポッターより、ネタバレ注意)

トランスポート層は、送信元から宛先まで(エンドツーエンド)データを確実に届ける役割を果たします。この層では、いくつかの要因に基づいて決定される2つの異なるプロトコルを用いてデータを送ります。

  • TCP(Transmission Control Protocol): 信頼性の高い通信を行うためのルールです。データの順序や正確性を保証します。
  • UDP(User Datagram Protocol): 高速性の高い通信を行うためのルールです。高速で簡易的な通信を提供します。

つまるところ、TCPとUDPでは通信を行うときの手間のかけようが違うため、それぞれ特性があり役割が分担されています。例えば、以下のような違いがあります。

TCP

  • 3ウェイハンドシェイク
    接続を確立するために、送信元と宛先間で3回のメッセージのやり取りを行います。これにより、通信が開始できることを互いに確認します。
  • 順序制御
    データを送信した順番通りに受信側で並べ替えます。例えば、100メートル走で「よーい、どん!」と同時にスタートしても、到着順は異なるように、データ送信でも順序が乱れることがあります。このズレを修正して、正しい順序で受信できるようにします。
  • 再送制御
    送信が失敗した場合、自動で再送を要求します。一定時間内(再送タイマー)に確認応答がなければ、送信失敗とみなし再送を行います。
  • 輻輳制御
    ネットワークの混雑を検知し、データの送信速度を調整します。忙しい上司にデータを送るタイミングを伺う若手社員のように、混雑していないかを確認してからデータを送信します。
  • フロー制御
    受信側の処理能力を考慮して、データの送信量を調整します。忙しい上司が「このくらいのデータなら大丈夫だよ」と若手に指示を出すイメージです。
  • ウィンドウ制御
    送信可能なデータ量を「ウィンドウサイズ」という単位で管理し、効率的な通信を実現します。通信の信頼性を重視しつつも、速さも考慮して、受信側に一時的にデータを保管するバッファ(ウィンドウ)のサイズを調整します。バッファが空いている場合は、送信元が確認を待たずにデータを送信できるようになります。

UDP

  • 接続不要(コネクションレス): 送信元と宛先間で事前に接続を確立する手間がありません。
  • データ順序の保証なし: データは送信された順番で届かない場合があります。
  • 再送制御なし: データが欠落しても再送要求は行いません。
  • 高速通信: TCPのような複雑な制御がないため、軽量で高速な通信が可能です。
  • 用途が限定的: 主にリアルタイム性が求められる通信(例: 音声や映像のストリーミング、オンラインゲーム)に適しています。

TCPとUDPは、それぞれの特性を活かして通信の役割を分担し、効率的なデータ転送を実現しています。この選択によって、さまざまなアプリケーションで必要な通信品質が確保されてます。

レイヤ5: セッション層

セッション層

セッション層は、通信の「セッション」を管理します。通信の開始、維持、終了を制御し、途中で接続が途切れても再接続をサポートし、安定した通信を提供します。また、接続がしばらく使用されなかった場合や接続が失われた場合に接続を適切に閉じる責任も担います。

  • 役割: 接続を安定して維持し、必要に応じて再接続を行うこと。また、データ送受信中のエラーや中断を防ぐためにチェックポイントを設定し、途中で途切れた場合でも再接続後に中断した場所から通信を再開できるようにすること。さらに、チェックポイントによって、データが失われた場合でも最新のデータのみを送信するため、帯域幅を節約します。
  • 使用例: ZoomやMicrosoft Teamsなどのビデオ会議アプリ。オンラインゲームでもネットワークが一時的に途切れても、セッションを維持して通信を再開できるようにする。

例えば、オンライン会議中に一時的な接続障害が発生しても、セッション層が再接続を行うことで会議を継続できる仕組みを提供しています。また、セッションは固有であるため、データはセッションを越えて移動することはなく、各セッション内でのみやり取りされます。この層は、アプリケーション層やトランスポート層と連携して動作し、ユーザーが途切れない通信体験を行えるよう支えています。

レイヤ6: プレゼンテーション層

プレゼンテーション層

プレゼンテーション層は、データを統一された形式に変換する層です。異なるシステム間でデータのやり取りが円滑に行えるよう、形式を調整したり、通信の安全性を確保する処理を行います。

  • データ形式の変換: 異なるシステム間でデータを正しく扱えるように調整。
  • 暗号化: 安全な通信を実現するため、データを暗号化(例:SSL/TLS)。

例えば、画像ファイルにはJPEGやPNGなど様々な形式がありますが、受信側がJPEG形式を正しく理解できるように調整するのがこの層の役割です。また、通信の暗号化を行うことで、データが不正に盗まれたり改ざんされるのを防ぎます。プレゼンテーション層は、異なる環境間でデータを正確かつ安全にやり取りするための重要な役割を担っています。

レイヤ7: アプリケーション層

アプリケーション層

アプリケーション層は、ユーザーが直接操作する部分に対応する層です。この層では、ネットワークを利用するアプリケーション(例:Webブラウザやメールアプリ)が動作を支えるためのプロトコルや機能を提供します。

  • 使用例: Webページの閲覧(HTTP)、メール送信(SMTP)、ファイル転送(FTP)。

例えば、Webページを閲覧する際、ブラウザがHTTPプロトコルを使用してWebサーバーと通信し、ページの内容を取得します。また、メールの送受信ではSMTPやIMAPといったプロトコルを使用します。この層のおかげで、ユーザーはインターネットや他のネットワーク上でさまざまなサービスをシームレスに利用することができます。

OSIモデルのイメージ(手紙の例え)

OSIモデルのイメージ

OSIモデルを初めて学ぶとき、手紙で例える事でイメージを掴むことがあります。ここでは、Aさんが手紙を書いてBさんに送るシナリオを用いることにしました。文字を追いながら頭の中で想像してみてください。同時に各層の知識を思い起こすことで、イメージの定着につながることがあります。

Aさん側の処理(データを送信する側)

  1. アプリケーション層
    Aさんが手紙に、Bさんに伝えたい内容を書きます。この段階では、手紙そのものがデータです。たとえば、Webページを閲覧するためにブラウザがHTTPリクエスト(WEBでページを表示する時にサーバーに送るリクエスト)を生成するのと同じ役割を果たします。
    対応する通信の動き: アプリケーションが通信プロトコル(例:HTTP、SMTP)を使ってデータを生成。

  2. プレゼンテーション層
    Aさんは手紙をBさん以外に読まれないよう、内容を暗号化したり、丁寧なフォーマットに整えて封筒に入れます。場合によっては、Bさんが手紙を読めるようにの普段使う言語に翻訳(形式変換)することもあります。
    対応する通信の動き: データの暗号化(例:SSL/TLS)、形式変換(例:JPEG、PNG)。

  3. セッション層
    Aさんは手紙を郵便局で扱ってもらうために、封筒にBさんの住所と自分の住所を書き、郵便番号も記載します。この段階で、手紙がやり取りされるためのルールが整います(郵便局のルールに従って管理する)。
    対応する通信の動き: 通信の確立、維持、終了の管理(例:会話のセッション管理やチェックポイントの設定)。

  4. トランスポート層
    Aさんは郵便局で「速達」や「書留」といった配送方法を選びます。手紙が確実に届くように追跡番号を付ける(TCP)か、軽量で早い配送を選ぶ(UDP)かを決定します。
    対応する通信の動き: データの信頼性保証(TCP)または迅速な送信(UDP)。

  5. ネットワーク層
    郵便局は、Bさんの住所をもとに最適な配送ルートを決定します。途中で別の郵便局を経由する場合もあります。
    対応する通信の動き: IPアドレスによるルーティングや経路選択。

  6. データリンク層
    郵便局はトラックやバイクなどの配送手段を使って、次の拠点(郵便局)に手紙を届けます。この層は、隣接する機器間でのデータ転送を担当します。
    対応する通信の動き: MACアドレスを使った隣接ノード間の通信制御。

  7. 物理層
    手紙は実際に郵便車や飛行機などを使って運ばれます。この層では、電気信号や光信号を使って物理的にデータを送信します。
    対応する通信の動き: 電気信号、光信号、無線信号によるデータ転送。

Bさん側の処理(データを受信する側)

  1. 物理層
    手紙がBさんの住所に最寄りの郵便局に到着しました。トラックやバイクが安全に運んできた状態です。
    対応する通信の動き: 信号を物理的に受け取り、上位層に渡します。

  2. データリンク層
    最寄りの郵便局は手紙をBさんの住所に届けるため、担当配達員に手紙を渡します。
    対応する通信の動き: 隣接機器間でのデータの受け渡し。

  3. ネットワーク層
    配達員が住所(IPアドレス)をもとに、Bさんの家に直接手紙を届けます。
    対応する通信の動き: IPアドレスを使ったデータの最終ルーティング。

  4. トランスポート層
    郵便局はAさんに「手紙が無事届きました」と通知を送ります(TCPの場合)。また、手紙が複数あった場合は正しい順序で配達されるように調整します。
    対応する通信の動き: データの受信確認や順序制御(TCP)。

  5. セッション層
    配達員がBさんの家に直接手紙を渡し、受け渡しが無事に完了します。この層では、通信の終了が管理されます。
    対応する通信の動き: 通信の終了処理やエラー発生時の再接続。

  6. プレゼンテーション層
    Bさんは封筒を開け、内容が分かる状態に整えます。暗号化されている場合は復号化し、元の形式に戻します。
    対応する通信の動き: データの復号化や形式の再変換。

  7. アプリケーション層
    最後に、Bさんは手紙を読み、Aさんの伝えたい内容を理解します。
    対応する通信の動き: アプリケーションがデータを処理してユーザーに表示。

この手紙の例えでは、Aさんがデータの送信元、Bさんが送信先(受信者)に相当します。そして郵便物を送るときの同様それぞれの層が連携してデータ通信を実現しています。

https://youtu.be/AYdF7b3nMto
Code.org:Packets, Routing, and Reliability

カプセル化と非カプセル化

カプセル化のイメージ

先ほどOSIモデルのイメージ(手紙の例え)で示した通り、コンピュータがデータを送信するとき、通信はOSIモデルに沿って、最上位のアプリケーション層から順に処理されます。これを進める過程で、各層がデータに必要な情報を付け加えることで、送信側と受信側が正しくデータをやり取りできる仕組みが作られます。この仕組みをカプセル化と呼びます。

一方、データが受信側に届いたときには、カプセル化されたデータを元に戻す必要があります。このプロセスを非カプセル化といいます。非カプセル化によって、受信側は送信側が使ったプロトコル(通信ルール)を正しく解釈し、元のデータを理解することができます。

非カプセル化のイメージ

カプセル化と非カプセル化がないとどうなる?

もしカプセル化と非カプセル化の仕組みがなければ、どうなるでしょうか?
例えば以下のような問題が発生します。

  1. データが届かない
    送り先や送り主の情報がないため、データがどこに行くべきか分からず、正しく通信できません。

  2. 異なるシステム間で通信できない
    データ形式が統一されないため、異なるOSやアプリ同士の通信が不可能になる可能性があります。

  3. データの信頼性が失われる
    一部のデータが消失したり順番が入れ替わっても、それを検出したり修復する仕組みがなくなります。

  4. セキュリティリスクが増大する
    暗号化が行われないため、送信中のデータが盗まれたり改ざんされる危険があります。

  5. ネットワークが効率的に動かない
    データの分割や再送制御ができず、大容量データの送信に失敗しやすくなります。

このようにカプセル化と非カプセル化がなければ、通信の正確性、効率性、安全性が失われ、インターネット通信は成り立ちません。OSIモデルなどと同様にこの仕組みはインターネットを成立される基盤となる仕組みと言えます。

ヘッダとトレーラ

ヘッダとトレーラ

カプセル化や非カプセル化のプロセスでは、各層がデータに必要な情報を追加したり解釈することで、送信側と受信側が正しくデータをやり取りできるようにしています。この「必要な情報」をヘッダと呼びます。

ヘッダは、データの先頭に付け加えられ、その層が通信を行うために必要な情報を含んでいます。一方、データリンク層では、データの末尾にも追加情報を付け加えます。この部分をトレーラと呼びます。

カプセル化や非カプセル化のプロセス

なぜデータリンク層だけトレーラが必要なのか?

データリンク層は、隣接する機器間の通信の信頼性を確保する役割を持っています。そのため、トレーラにはエラー検出情報(例:フレームチェックシーケンス:FCS)が含まれています。受信側はこの情報を使って、通信中にデータが破損していないかを確認します。なお、フレームチェックシーケンス(FCS) の仕組みは、送信側がフレーム全体のデータに基づいて計算したチェックサム(検査用の数値)を付加し、受信側が同じ方法でチェックサムを再計算して一致するかを確認することで、データのエラーを検出するものです。

上位層(ネットワーク層以降)では、エラーの管理は確認応答(ACK)や再送制御といった別の仕組みで行われるため、トレーラは必要ありません。一方、物理層は単に信号を送るだけの役割を担っており、エラー検出は行いません。そのため、データリンク層だけがトレーラを使用してエラー検出を行う仕組みになっています。

PDU(Protocol Data Unit)とは?

これまでの解説で登場した「セグメント」「パケット」「フレーム」といった言葉。これらは、ネットワーク通信におけるデータの単位を指しています。このデータの単位を PDU(Protocol Data Unit:プロトコルデータユニット) といいます。

PDUは、データが通信される際に、OSIモデルやTCP/IPモデルの各層がデータをどのように扱っているかを示す単位です。各層ごとに呼び方が異なり、それぞれが特定の役割を持っています。

各層ごとのPDUとその役割

層名 PDUの名称 役割
アプリケーション層 データ(Data) ユーザーが使用するアプリケーションが生成するデータ。
トランスポート層 セグメント(Segment) データを分割し、通信が確実に行われるよう信頼性を確保。
ネットワーク層 パケット(Packet) 送信元から宛先までデータを届けるためのルート情報を付加。
データリンク層 フレーム(Frame) 隣接するノード間で正確にデータを送受信。
物理層 ビット(Bits) 電気信号や光信号として送られるデータの最小単位。

PDUのポイント

  • PDUが変わる仕組み
    データは通信の際に各層を通過します。そのたびに新しいヘッダが付加されて「PDUの形式」が変わります。たとえば、トランスポート層ではセグメント、ネットワーク層ではパケットという単位になります。

  • トラブルシューティングの手がかりになる
    ネットワークトラブルの解析では、どの層でどのPDUに問題があるかを特定することが重要です。たとえば、「フレームエラー」はデータリンク層、「パケットルートの問題」はネットワーク層に関係しています。

具体例:PDUの流れをイメージ

  1. アプリケーション層
    ユーザーがWebページを閲覧するためにデータが生成されます(PDUは「データ」)。

  2. トランスポート層
    このデータはセグメントに分割され、通信が確実に行われるようTCPヘッダが追加されます。

  3. ネットワーク層
    セグメントはパケットとなり、送信元と宛先のIPアドレスが付加されます。

  4. データリンク層
    パケットがフレームに変換され、隣接するノード間で正確にデータを送るためのMACアドレスが付加されます。

  5. 物理層
    最終的に、フレームはビット(電気信号や光信号)となり、ネットワーク上に送信されます。

ポート番号

ポート番号

少しポート番号についても触れておきましょう。IPアドレスを住所に例えると、ポート番号はその中の「部屋番号」のようなものです。たとえば、実家(IPアドレス)の自分の部屋(ポート番号)とイメージしてみてください。

具体的には、ポート番号はネットワーク通信において、データがどのアプリケーションやサービス(プロセス)に送られるべきかを判断する目印になります。これにより、同じデバイスで複数のアプリケーションが同時に通信を行える仕組みが可能になります。

プロトコルには「既定のポート番号」が割り当てられており、これを使用することで通信内容を識別できます。たとえば:

  • HTTP(ウェブ通信): ポート番号 80
  • HTTPS(暗号化されたウェブ通信): ポート番号 443
  • SMTP(メール送信): ポート番号 25
  • DNS(ドメイン名解決): ポート番号 53

なお、これらのポート番号は「既定値」であり、必要に応じて変更可能です。ポート番号を活用することで、ネットワーク内の通信が整理され、効率的にデータを処理する仕組みが実現されています。

ポート番号やプロトコルには多くの種類があり、一度に全てを覚えるのは難しいかもしれません。まずは基本的なプロトコルとポート番号を理解し、具体的な通信分野を学ぶ際に少しずつ深掘りしていくことをお勧めします。

2種類のIPアドレス

2種類のIPアドレス

IPアドレスには、以下の2種類があります。

  • IPv4: 32ビットの2進数で構成されていますが、理解しやすいように8ビットずつドットで区切り、10進数に変換した形で表記します(例:192.168.1.1)。現在も多く使用されていますが、アドレス枯渇が課題となっています。
  • IPv6: 128ビットのアドレスで、16ビットごとにコロン(:)で区切り、各部分を16進数で表記します(例:2001:db8::1)。非常に広大なアドレス空間を持ち、IPv4の枯渇問題を解決するために設計されました。

16進数の説明で、10進数に比べ、6種類のアルファベットを加えることで、コンピュータで扱うデータを簡潔に表現できます。と解説しました。実際に128ビットのアドレスを10進数で表現しようとするのは、現実的ではなく。16進数で表現するようになっています。

パブリックIPアドレスとプライベートIPアドレス

パブリックIPアドレスとプライベートIPアドレス

すでに2種類あるIPアドレスですが、さらに2種類に分かれます。インターネット全体で使われるパブリックIPアドレスと、家庭や職場などのローカルネットワーク内で使われるプライベートIPアドレスです。

パブリックIPアドレス

  • インターネット上で一意に割り当てられるIPアドレスです。
  • グローバルに利用され、世界中の他のデバイスと直接通信が可能です。
  • 例:8.8.8.8(GoogleのDNSサーバー)

インターネットに接続するには、インターネットサービスプロバイダ(ISP)からパブリックIPアドレスを取得する必要があります。

プライベートIPアドレス

  • ローカルネットワーク内で使用されるIPアドレスです。
  • インターネット上から直接アクセスすることはできず、通常はルータや**NAT(Network Address Translation)**を使ってインターネットと通信します。
  • 主な用途: 家庭やオフィス内でのデバイス間の通信(例:PCとプリンタ、スマホとWi-Fiルータの接続)。

プライベートIPアドレスは、ローカルネットワーク内で一意に割り当てられます。また、パブリックIPアドレスとの衝突を防止したり、ネットワーク機器同士の互換性の向上、全世界で標準化して管理を容易にするなどの理由から、アドレスの範囲が決まっています。

クラス 範囲
A 10.0.0.010.255.255.255
B 172.16.0.0172.31.255.255
C 192.168.0.0192.168.255.255

パブリックとプライベートの違い

項目 パブリックIPアドレス プライベートIPアドレス
利用範囲 インターネット全体 ローカルネットワーク内
一意性 世界中で一意 ネットワーク内で一意
アクセス方法 他のインターネットデバイスと通信可能 ルータやNAT(プライベートIPをパブリックIPアドレスに変換する技術)を介してインターネット通信
203.0.113.1(グローバルIP) 192.168.1.1(家庭用ルータ)

なぜパブリックとプライベートを分けるのか?

  1. アドレス資源の節約
    プライベートIPアドレスを使用することで、限りあるパブリックIPアドレスを節約できます。

  2. セキュリティの向上
    プライベートIPアドレスは直接インターネットからアクセスできないため、外部からの不正侵入を防ぐ役割も果たします。

  3. ネットワーク設計の柔軟性
    家庭やオフィス内で独自のネットワークを構築する際に便利です。プライベートIPアドレスの範囲は固定されており、再利用も可能です。

https://youtu.be/5o8CwafCxnU
Code.org:IP Addresses and DNS

サブネットマスクとCIDR表記

マスク

サブネットマスクは、IPアドレスをネットワーク部分ホスト部分に分けるために使用される重要な情報です。

  • ネットワーク部分: どのネットワークに属しているかを示します。
  • ホスト部分: ネットワーク内で特定のデバイスを識別します。

サブネットマスクは、ネットワーク部分を1のビット、ホスト部分を0のビットで表します。これにより、ネットワーク部分とホスト部分を区別します。

CIDR表記

サブネットマスクを簡略化した形式がCIDR表記(Classless Inter-Domain Routing)です。
CIDR表記では、ネットワーク部分のビット数をスラッシュ(/)の後に記載します。

例:

  • 255.255.255.0/24(ネットワーク部分が24ビット)。
  • 255.0.0.0/8(ネットワーク部分が8ビット)。

サブネットマスクの例

IPアドレス サブネットマスク CIDR表記 ネットワーク部分 ホスト部分
192.168.1.1 255.255.255.0 /24 192.168.1 1
10.0.0.1 255.0.0.0 /8 10 0.0.1

サブネットマスクを使う理由

  1. ネットワーク分割
    大きなネットワークを小さなサブネットに分割することで、トラフィックを効率化し、ネットワーク全体のパフォーマンスを向上させます。

  2. IPアドレスの節約
    必要なホスト数に応じて柔軟にネットワークを設計でき、IPアドレスの無駄を防ぎます。

  3. セキュリティ強化
    ネットワークを分割することで、部門ごとの通信を制限するなどセキュリティ向上に役立ちます。

基本的なプロトコル

DHCPとARPとICMP

ネットワークで活躍するプロトコルの中から、基本的なプロトコルの導入として3つのプロトコルを解説したいと思います。他にも様々なプロトコル(HTTPやSMTPなど)があるのですが、それはまた別途取り上げたいと思います。(あくまで導入です)

DHCP

僕たちが普段、コンピュータやスマートフォンをネットワークに接続してすぐにWebを利用できるのは、DHCPのおかげです。
DHCP(Dynamic Host Configuration Protocol) は、ネットワーク内のデバイスに対して、自動的にIPアドレスを割り当てる仕組みです。

この機能により、ユーザーが手動でIPアドレスを設定する必要がなくなり、ネットワーク接続が簡単かつスムーズに行えるようになっています。DHCPは、現代のネットワークを快適に利用するために重要な存在です。

DHCP通信の流れ

DHCPがどのようにしてIPアドレスを割り当てるのか、その仕組みを簡単に説明します。DHCP通信は、クライアント(IPアドレスを必要とするデバイス)とサーバー(IPアドレスを提供する機器)の間で行われます。

  1. DHCPディスカバー(Discover)
    クライアントが「IPアドレスが欲しいです!」とネットワーク全体にブロードキャストでメッセージを送ります。

  2. DHCPオファー(Offer)
    DHCPサーバーがクライアントに「このIPアドレスを使っていいですよ」という提案を返します。

  3. DHCPリクエスト(Request)
    クライアントが「そのIPアドレスを使いたいです!」とリクエストを送ります。

  4. DHCPアクノリッジ(Acknowledge)
    DHCPサーバーがリクエストを承認し、クライアントに正式にIPアドレスを割り当てます。

この流れが非常に短時間で行われ、ネットワークにスムーズに接続できるようになります。

ARP

ARP(Address Resolution Protocol) は、ネットワーク通信で使用されるプロトコルの一つで、IPアドレスから対応するMACアドレスを取得する仕組みです。ネットワーク内でデータを送信する際、IPアドレスだけでなく、デバイス固有のMACアドレスが必要になるため、ARPはその橋渡し役を担います。

ARPの仕組み

  1. ARPリクエスト
    ネットワーク内で特定のIPアドレスを持つデバイスのMACアドレスを知りたいとき、ARPリクエストがブロードキャスト(同じネットワーク内にいる全員に同じデータを送る)で送信されます。

  2. ARPリプライ
    リクエストを受け取った該当デバイスが、自分のMACアドレスをリプライ(応答)として返します。この応答はユニキャスト(同じネットワーク内にいる一人にデータを送る)で送信されます。

ICMP、Ping、Traceroute

ネットワーク通信では、エラー通知や接続確認、経路の解析が重要な役割を果たします。これらの機能を提供する主なプロトコルとツールは以下です。

ICMP(Internet Control Message Protocol)

ネットワーク通信中にエラーが発生した場合に、その情報を通知するためのプロトコルです。たとえば、パケットが宛先に届かなかったり、ルートに問題がある場合に使用されます。

Ping

ICMPを利用して接続状況を確認するツールです。具体的には、ICMPエコーリクエストを送信し、宛先からのエコーリプライを受信することで、通信が正常であるかどうかをチェックします。

  • 実行例
ping www.google.com
  • 出力例
Pinging www.google.com [142.250.190.68] with 32 bytes of data:
Reply from 142.250.190.68: bytes=32 time=14ms TTL=114
Reply from 142.250.190.68: bytes=32 time=15ms TTL=114
Reply from 142.250.190.68: bytes=32 time=13ms TTL=114
Reply from 142.250.190.68: bytes=32 time=14ms TTL=114

Ping statistics for 142.250.190.68:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 13ms, Maximum = 15ms, Average = 14ms
  • 説明
  • Reply from: 接続先のサーバーから応答が返ってきたことを示します。
  • time=14ms: 応答までにかかった時間(遅延)。
  • TTL=114: パケットが通過できる残りのホップ数(最大255から減少)。
  • パケットの損失がないため、通信状態は正常です。

Traceroute

ネットワーク経路を解析するツールです。データが送信元から宛先に到達するまでに通過するルータ(ホップ)の情報を収集し、経路の状態を確認します。途中でエラーが発生した場合、ICMPのエラー通知が利用されます。

  • 実行例
traceroute www.google.com
  • 出力例
traceroute to www.google.com (142.250.190.68), 30 hops max, 60 byte packets
 1  192.168.0.1 (192.168.0.1)  1.528 ms  1.512 ms  1.480 ms
 2  10.1.0.1 (10.1.0.1)  14.715 ms  14.680 ms  14.647 ms
 3  203.0.113.1 (203.0.113.1)  25.421 ms  25.387 ms  25.355 ms
 4  142.250.190.68 (142.250.190.68)  30.211 ms  30.179 ms  30.148 ms
  • 説明
  1. 1 192.168.0.1: 最初に通過するルーター(通常はローカルネットワーク内のゲートウェイ)。
  2. 2 10.1.0.1: 次に通過するルーター(ISPのネットワーク内)。
  3. 3 203.0.113.1: 外部ネットワークのルーター。
  4. 4 142.250.190.68: 目的地(Googleサーバー)。
  • 各行には、ルーターのIPアドレスと応答時間(ミリ秒単位)が表示されます。
  • 経路中の遅延を確認することで、どの区間で遅延が発生しているかがわかります。

Wiresharkでの実習

サメ

実習として、Wiresharkというネットワークパケットアナライザを使用して実際のパケットをキャプチャしてみましょう。

Wiresharkの準備

  1. Wiresharkをインストールする(まだの方のみ)
    公式サイト(Wireshark)からインストールできます。
  2. 管理者権限で起動する
    ネットワークインターフェースへのアクセス権限が必要です。必ず自身が管理しているネットワーク(自宅のWi-Fiなど)だけをキャプチャしてください。他人のネットワークを無断で解析することは法律で禁止されています。
  3. インターフェースを選択
    キャプチャしたいネットワーク(Wi-Fi、有線LANなど)のインターフェースを選択します。

TCP通信のキャプチャ

目標: TCP通信で行われるHTTPリクエストのSYN/ACKフローを観察します。

  1. ブラウザを開いてWebページにアクセス
    例として、「http://example.com」にアクセスします(HTTPSではなくHTTPのサイトを選びます)。

  2. Wiresharkでフィルタを設定
    フィルタ欄に以下を入力します:

    tcp.port == 80
    

    これはTCPのポート80(HTTP通信)だけを表示するフィルタです。

  3. キャプチャを開始
    「Start Capture」ボタンを押してキャプチャを開始します。

  4. キャプチャ結果を観察
    以下のポイントを確認します:

    • SYN: クライアント(あなたのPC)がサーバーに接続を要求するパケット。
    • SYN/ACK: サーバーが接続を承認する応答。
    • ACK: クライアントがサーバーの応答を確認するパケット。

    この3つのフローは「3ウェイハンドシェイク」と呼ばれ、TCP通信の信頼性を確保する重要な仕組みです。

  5. キャプチャを停止
    通信の流れが確認できたら、「Stop Capture」ボタンを押します。

UDP通信のキャプチャ

目標: DNSクエリの送信とレスポンスを確認します。

  1. コマンドを使ってDNSクエリを送信
    ターミナルまたはコマンドプロンプトを開き、以下を入力します:
    nslookup example.com
    
    これにより、DNSサーバーに対して「example.com」のIPアドレスを問い合わせます。
  2. Wiresharkでフィルタを設定
    フィルタ欄に以下を入力します:
    udp.port == 53
    
    これはDNS通信に使用されるUDPポート53のパケットだけを表示します。
  3. キャプチャを開始
    「Start Capture」ボタンを押してキャプチャを開始します。
  4. キャプチャ結果を観察
    以下のポイントを確認します:
    • クエリパケット: クライアントから送信されるDNSリクエスト。
    • レスポンスパケット: DNSサーバーから送信されるIPアドレスの応答。
  5. キャプチャを停止
    DNS通信が確認できたら、「Stop Capture」ボタンを押します。

TCPヘッダやIPヘッダのキャプチャ

目標: TCPやIPのヘッダを確認し、カプセル化による制御情報やルーティング情報を確認します。

  1. 通信を発生させる
    キャプチャ中にWebブラウザを開き、任意のWebページ(例:http://example.com)にアクセスします。これにより、HTTPリクエスト(TCPを使用)が発生します。

  2. フィルタを設定してTCPパケットを表示
    キャプチャが進んだら、フィルタ欄に以下のフィルタを入力してTCPパケットを絞り込みます:

    tcp
    

    または、特定の通信を絞り込む場合は、IPアドレスやポート番号でフィルタを設定します(例:HTTP通信の場合はポート80):

    tcp.port == 80
    
  3. TCPパケットを選択
    リストに表示されたTCPパケットの1つをクリックして選択します。選択したパケットの詳細が画面下部に表示されます。

  4. TCPヘッダの詳細を確認
    画面下部の解析結果に表示される項目から、Transmission Control Protocol(TCP)を展開します。以下の情報が確認できます。

    • Source Port(送信元ポート)
      データを送信したアプリケーションのポート番号。
    • Destination Port(宛先ポート)
      データを受信するアプリケーションのポート番号(例:HTTPなら80)。
    • Sequence Number(シーケンス番号)
      データの順序を識別する番号。
    • Acknowledgment Number(確認応答番号)
      データの受信確認に使用される番号。
    • Flags(フラグ)
      SYN、ACKなどTCP通信の状態を示すフラグ。
  5. IPヘッダの詳細を確認
    次に、Internet Protocol(IP)を展開します。以下の情報が確認できます。

    • Source Address(送信元IPアドレス)
      データを送信したデバイスのIPアドレス。
    • Destination Address(宛先IPアドレス)
      データを受信するデバイスのIPアドレス。
    • Protocol(IPv4の場合)
      使用しているプロトコル(例:TCP)。
    • Next Header(IPv6の場合)
      使用しているプロトコル(例:TCP)。
  6. キャプチャを停止
    必要な情報を確認したら、「Stop Capture」ボタンをクリックしてキャプチャを終了します。

ICMP通信のキャプチャ

目標: ICMPにより、GoogleのIPアドレスが正しく解決されていることを確認します。

  1. Ping通信のキャプチャ
    コマンドプロンプトまたはターミナルで、以下のコマンドを実行してGoogleにPingを送信します:
ping www.google.com
  1. Wiresharkで以下のICMPメッセージを確認します
  • Echo Request(エコーリクエスト)
    クライアント(あなたのデバイス)がGoogleのサーバーに送信するPingのリクエスト。
  • Echo Reply(エコーリプライ)
    Googleのサーバーがクライアントに返す応答。

Traceroute通信のキャプチャ

目標: Tracerouteにより、Googleへの経路を追跡します。

Googleへの経路を追跡するために、以下のコマンドを実行します。
使用しているOSに応じてコマンドが異なります:

  • Windowsの場合
    tracert www.google.com
    
  • Linux/macOSの場合
    traceroute www.google.com
    

Wiresharkを使用してキャプチャを行い、以下のポイントを観察します:

  1. 各ホップ(ルータ)でのICMPエラー通知
    Tracerouteでは、送信パケットに含まれる**TTL(Time To Live)**の値を利用して、ネットワーク経路を追跡します。
  1. 最終的なターゲットホストへの応答
    Googleのサーバーに到達すると、通常、ICMPプロトコルのEcho Reply(エコー応答)が返されます。この応答は、送信元(あなたのデバイス)が送信したEcho Requestに対する正常な応答を意味します。

各ルータでのTime Exceededメッセージを探し、経路の順番を確認します。
また、Googleのサーバーから返されるEcho Reply(エコー応答)を確認し、通信が正常に到達したことを確認します。

最後に

やはりというか、記事としては結構長くなってしまいました...。覚えることが多くって挫折しがちなネットワークですが、ある程度の仕組みへの理解やイメージがあれば、実際に触りながら覚えることもそう難しくないのではと思います。(よくわからなければ、AIに聞けますし。ネットのリソースも豊富です)

今後もサイバーセキュリティを主な軸として、アウトプットをしていく予定ですが、その際の基礎的な振り返りとしてこの投稿が機能する様、今後も内容のアップデートを行なっていく予定です。

もしかしなくとも資格取得など本格的な知識を身につけたい方にとっては、あまり参考にならなかったかもしれませんが、この投稿でネットワークの雰囲気をなんとなく掴んでいただき、実習などでより深く学ぶきっかけとなれば幸いです。

Discussion