Introduction
ネットワークの基本概念 ― TryHackMe「Networking Concepts」
インターネットに接続するためにIPアドレスが必要なのはなぜでしょうか?
IPアドレスは本当にユーザーを一意に特定できるのでしょうか?
また、1つのパケットがどのようにやり取りされるのか気になったことはありませんか?
もし答えが「はい」なら、この学習ルームで一緒に探ってみましょう!
4部構成シリーズの第1ステップ
このルームは、ネットワークの重要な概念や代表的なプロトコルを学ぶためのシリーズの最初のステップです。
-
Networking Concepts(本ルーム)
事前知識
このルームでは「IPアドレス」や「TCPポート番号」といった用語を知っていることを前提としています。
ただし、それらを専門的に説明できる必要はありません。
もし全く馴染みがない場合は、Pre Securityパスから始めるのがおすすめです。
学習目標
このルームを終える頃には、次の内容を理解できるようになります。
-
ISO/OSIネットワークモデル
-
IPアドレス、サブネット、ルーティングの基本
-
TCPとUDPの仕組み、ポート番号の役割
-
コマンドラインから開いているTCPポートに接続する方法
OSI Model
最初に断っておきますが、OSIモデルは一見すると複雑に思えるかもしれません。ですが安心してください。難解な略語に出会っても、このモジュールでは具体的な例を交えて解説しています。学習を終える頃には、OSIモデルの理解がぐっと身近なものになっているはずです。
OSIモデルとは?
OSI(Open Systems Interconnection)モデルは、ISO(国際標準化機構)が策定した「コンピュータネットワークで通信がどのように行われるべきか」を示す概念モデルです。
理論的な枠組みではありますが、ネットワークの基礎を深く理解するためには欠かせないものです。OSIモデルは次の7階層で構成されています。
-
Physical Layer(物理層)
-
Data Link Layer(データリンク層)
-
Network Layer(ネットワーク層)
-
Transport Layer(トランスポート層)
-
Session Layer(セッション層)
-
Presentation Layer(プレゼンテーション層)
-
Application Layer(アプリケーション層)
下から順に番号が振られており、最下層の物理層がレイヤー1、最上層のアプリケーション層がレイヤー7です。
各レイヤーの解説
Layer 1: Physical Layer(物理層)
デバイス同士を物理的に接続する役割を担います。電気信号・光信号・無線信号などの伝送方式や、ビット(0と1)の定義がここで扱われます。
媒介となるのはイーサネットケーブル、光ファイバー、WiFiの電波帯(2.4GHz/5GHz/6GHz)などです。
Layer 2: Data Link Layer(データリンク層)
同一ネットワークセグメント内のノード間通信を規定します。例えば、オフィス内の10台のPCを1台のスイッチに接続した場合、それが1つのネットワークセグメントです。
代表例はEthernet(IEEE 802.3)やWiFi(IEEE 802.11)。アドレスとしてMACアドレスを使用します。MACアドレスは6バイト(48ビット)で構成され、左の3バイトはベンダー識別子です。実際の通信では送信元と宛先の2つのMACアドレスが含まれます。
Layer 3: Network Layer(ネットワーク層)
異なるネットワーク間でデータを転送します。論理アドレス(IPアドレス)とルーティングが中心の役割です。
例として、複数の都市や国に分散したオフィスを接続するのがこの層です。代表的なプロトコルはIP、ICMP、VPN(IPSec、SSL/TLSなど)。
Layer 4: Transport Layer(トランスポート層)
アプリケーション同士のエンドツーエンド通信を提供します。通信の信頼性確保や誤り訂正、分割と再構築を担当します。
代表的なプロトコルはTCPとUDPです。
Layer 5: Session Layer(セッション層)
アプリケーション間の通信セッションを確立・維持・同期します。データが正しい順序で届くよう管理し、障害時には回復手段を提供します。
例:NFS(Network File System)、RPC(Remote Procedure Call)。
Layer 6: Presentation Layer(プレゼンテーション層)
データをアプリケーション層が理解できる形式に変換します。エンコード、圧縮、暗号化がこの層の役割です。
例:文字コード(ASCII、Unicode)、画像形式(JPEG、PNG、GIF)、電子メールで利用されるMIME(Base64でのエンコード)。
Layer 7: Application Layer(アプリケーション層)
最上位層であり、ユーザーが直接利用するアプリケーションにサービスを提供します。
代表的なプロトコルはHTTP、FTP、DNS、POP3、SMTP、IMAPなどです。
まとめ
OSIモデルを初めて学ぶと難しく感じるかもしれませんが、ネットワークプロトコルを学習するうちに自然と理解が深まります。以下に各層を表で整理しました。
レイヤー番号 | レイヤー名 | 主な役割 | 代表的なプロトコル・規格 |
---|---|---|---|
Layer 7 | Application layer | アプリケーションへのサービス提供 | HTTP, FTP, DNS, POP3, SMTP, IMAP |
Layer 6 | Presentation layer | データの変換・暗号化・圧縮 | Unicode, MIME, JPEG, PNG, MPEG |
Layer 5 | Session layer | セッションの確立・維持・同期 | NFS, RPC |
Layer 4 | Transport layer | エンドツーエンド通信・分割/誤り訂正 | TCP, UDP |
Layer 3 | Network layer | 論理アドレスとルーティング | IP, ICMP, IPSec |
Layer 2 | Data link layer | 同一セグメント内の通信制御 | Ethernet (802.3), WiFi (802.11) |
Layer 1 | Physical layer | 物理的なデータ伝送媒体 | 電気信号、光信号、無線信号 |
Answer the questions below
TCP/IP Model
ISO OSIモデルという概念的なモデルを学んだので、今度は実際に実装されたモデルである TCP/IP Model を見ていきましょう。
TCP/IPとは Transmission Control Protocol / Internet Protocol の略で、1970年代に米国国防総省(DoD)によって開発されました。軍がなぜこのようなモデルを作ったのか、不思議に思うかもしれません。その理由のひとつは、ネットワークの一部が停止しても全体が機能し続けられる仕組みを実現するためです。例えば戦時中の攻撃によって一部が破壊されても、ルーティングプロトコルがネットワーク構成の変化に適応し、通信が継続できるよう設計されているのです。
OSIモデルとの違い
OSIモデルはレイヤー1からレイヤー7まで下から上に積み上げる形で説明しましたが、ここでは逆に上から順に見ていきます。TCP/IPモデルでは次のように整理されます。
-
Application Layer: OSIモデルのアプリケーション層・プレゼンテーション層・セッション層(レイヤー5〜7)をまとめたもの
-
Transport Layer: OSIモデルのトランスポート層(レイヤー4)
-
Internet Layer: OSIモデルのネットワーク層(レイヤー3)に相当
-
Link Layer: OSIモデルのデータリンク層(レイヤー2)
対応関係の表
レイヤー番号 | ISO OSI Model | TCP/IP Model (RFC 1122) | 主なプロトコル |
---|---|---|---|
7 | Application Layer | Application Layer | HTTP, HTTPS, FTP, POP3, SMTP, IMAP, Telnet, SSH |
6 | Presentation Layer | ||
5 | Session Layer | ||
4 | Transport Layer | Transport Layer | TCP, UDP |
3 | Network Layer | Internet Layer | IP, ICMP, IPSec |
2 | Data Link Layer | Link Layer | Ethernet (802.3), WiFi (802.11) |
1 | Physical Layer |
4層モデルと5層モデル
RFC 1122ではTCP/IPは上記のように4層モデルとして説明されますが、近年のネットワーク教科書では5層モデルとして紹介されることも多くなっています。
-
Application
-
Transport
-
Network
-
Link
-
Physical
Answer the questions below
IP Addresses and Subnets
IPアドレスとは?
「IPアドレス」と聞いて、192.168.0.1
や 172.16.159.243
といった数字を思い浮かべる人も多いでしょう。どちらも正解で、これは IPv4アドレス の例です。
ネットワーク上のすべてのホスト(PCやスマホなど)は、他のホストと通信するために一意の識別子が必要です。もし識別子がなければ、誰が誰なのか分からず通信が成り立ちません。TCP/IP環境では、この識別子が「IPアドレス」になります。
IPアドレスは郵便住所に例えると分かりやすいでしょう。住所があるからこそ世界中から手紙や荷物を受け取れます。住所がなければ、ネットショッピングもできませんよね。
現在は IPv4 と IPv6 の2種類がありますが、一般的に「IP」といえばIPv4を指すことが多いです。
IPv4アドレスの仕組み
IPv4アドレスは 32ビット(4オクテット) で構成され、それぞれのオクテットは0〜255までの数値を表します。
例:
-
192.168.1.0
→ ネットワークアドレス -
192.168.1.255
→ ブロードキャストアドレス(ネットワーク全体宛て)
この仕組みから、IPv4アドレスは理論上約42億個(2³²)までしか作れません。
IPアドレスの確認方法
自分のIPアドレスは簡単に確認できます。
-
Windows:
ipconfig
user@TryHackMe$ ifconfig
[...]
wlo1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.66.89 netmask 255.255.255.0 broadcast 192.168.66.255
inet6 fe80::73e1:ca5e:3f93:b1b3 prefixlen 64 scopeid 0x20<link>
ether cc:5e:f8:02:21:a7 txqueuelen 1000 (Ethernet)
RX packets 19684680 bytes 18865072842 (17.5 GiB)
RX errors 0 dropped 364 overruns 0 frame 0
TX packets 14439678 bytes 8773200951 (8.1 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
-
Linux / Unix系:
ifconfig
またはip address show
(省略形ip a s
)
user@TryHackMe$ ip a s
[...]
4: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether cc:5e:f8:02:21:a7 brd ff:ff:ff:ff:ff:ff
altname wlp3s0
inet 192.168.66.89/24 brd 192.168.66.255 scope global dynamic noprefixroute wlo1
valid_lft 36795sec preferred_lft 36795sec
inet6 fe80::73e1:ca5e:3f93:b1b3/64 scope link noprefixroute
valid_lft forever preferred_lft forever
同じ情報を /24
のように表すこともあります。192.168.66.89/24
は「上位24ビットが同じネットワーク」を意味し、192.168.66.1
〜 192.168.66.254
が利用可能になります。
Private Addresses(プライベートアドレス)
IPアドレスには大きく分けて パブリックIP と プライベートIP の2種類があります。
プライベートIPは外部インターネットから直接アクセスできない「閉じた空間」での通信に使われます。例えばマンションの部屋番号のように、内部では便利に使えるけれど外部からは直接届かないイメージです。
RFC 1918で定義されている範囲は以下の3つです:
-
10.0.0.0 ~ 10.255.255.255 (10/8)
-
172.16.0.0 ~ 172.31.255.255 (172.16/12)
-
192.168.0.0 ~ 192.168.255.255 (192.168/16)
外部に出るときは、ルーターがパブリックIPを持ち、NAT(アドレス変換)によって通信します。
Routing(ルーティング)
ルーターは郵便局のようなものです。郵便物の宛先を見て「次はどこに送るか」を判断します。もし宛先が海外なら、地域の郵便局から中央の国際郵便局へ、そこから相手国へと渡されます。
同様に、ルーターはパケットのIPアドレスを確認し、目的地へ近づくように最適な経路に転送します。最終的に目的地へ届くまでに、パケットは複数のルーターを経由することが普通です。
Answer the questions below
UDP and TCP
IPプロトコルによって、ネットワーク上の宛先ホストに到達できます。ホストはIPアドレスで識別されますが、実際にやり取りを行うのはホスト上の「プロセス同士」です。そのためにはトランスポート層のプロトコルが必要であり、代表的なのが UDP と TCP です。
UDP
UDP(User Datagram Protocol) は、対象ホスト上の特定のプロセスにデータを届ける仕組みを提供します。トランスポート層(レイヤー4)で動作するシンプルなコネクションレス型プロトコルで、通信の前に接続を確立する必要がありません。さらに、送信したパケットが実際に届いたかどうかを確認する仕組みも持ちません。
ホストを識別するのはIPアドレスですが、どのプロセスに送るかを識別するにはポート番号を使います。ポート番号は2オクテットで表されるため範囲は 1〜65535 となり、0番は予約されています。
UDPは「普通郵便」のようなものです。荷物を送っても配達証明はなく、届いたかどうか分かりません。その代わり、安価で迅速に送れるのが利点です。同じようにUDPも、確認の仕組みがない分、高速に処理できるというメリットがあります。
ただし、「確実に届いたことを保証したい」場合はUDPではなくTCPを使います。
TCP
TCP(Transmission Control Protocol) は、コネクション型のトランスポート層プロトコルです。通信を始める前に接続を確立し、データを正確に届ける仕組みを備えています。UDPと同じくレイヤー4で動作しますが、TCPは信頼性を重視しているのが大きな違いです。
TCPでは、送信するデータの各オクテットにシーケンス番号を割り当てます。受信側はその番号を確認することで、データが欠落していないか、重複していないかを判断できます。また、受信側は「どこまで受け取ったか」を示す**ACK(確認応答番号)**を返します。
TCP接続は「3ウェイハンドシェイク」と呼ばれる3段階のやり取りで確立されます。
-
SYNパケット: クライアントが接続要求を出し、自分の初期シーケンス番号をサーバに送る。
-
SYN-ACKパケット: サーバが応答として、自分の初期シーケンス番号を含めて返す。
-
ACKパケット: クライアントが受信確認を送り、接続が確立される。
この3つのパケット交換によって、安全に通信を始められる状態になります。
TCPでもプロセスの識別にはUDPと同じく**ポート番号(1〜65535、0は予約)**を使用します。
Answer the questions below
Encapsulation
最後にもう一つ重要な概念である Encapsulation(カプセル化) を説明しましょう。
ここでのカプセル化とは、各レイヤーが受け取ったデータにヘッダー(場合によってはトレーラーも)を付加し、下位のレイヤーへ渡す処理を意味します。
この仕組みによって、各レイヤーは自分の役割に専念できるようになります。以下のような流れで進みます。
-
Application data
ユーザーがアプリケーションにデータを入力するところから始まります。例えばメールやメッセージを送信する操作です。アプリケーションはデータを整形し、下位のトランスポート層へ渡します。 -
Transport protocol segment or datagram
トランスポート層(TCPまたはUDP)がヘッダーを追加し、TCPセグメント(またはUDPデータグラム)を生成します。そして下位のネットワーク層に渡します。 -
Network packet
ネットワーク層(インターネット層)は、受け取ったTCPセグメントまたはUDPデータグラムにIPヘッダーを付け、IPパケットを作成します。これをさらに下位のデータリンク層に渡します。 -
Data link frame
データリンク層(EthernetやWiFi)は、受け取ったIPパケットにヘッダーとトレーラーを追加して「フレーム」を作成します。
つまり、アプリケーションデータ → TCP/UDPセグメント → IPパケット → データリンクフレーム、という順にカプセル化されていきます。そして受信側では逆の手順でヘッダーやトレーラーを取り除き、最終的にアプリケーションデータが取り出されます。
The Life of a Packet(パケットの一生)
これまで学んだ内容をもとに、簡単な例でパケットがどのように流れるかを見てみましょう。
シナリオ:あなたがTryHackMeで部屋を検索するとき。
-
ブラウザで検索ページにクエリを入力し、Enterを押す。
-
ブラウザはHTTPSを利用し、HTTPリクエストを作成してトランスポート層に渡す。
-
TCP層は、ブラウザとTryHackMeサーバの間で3ウェイハンドシェイクを行い接続を確立。その後、検索クエリを含むHTTPリクエストを送信する。各TCPセグメントはネットワーク層へ渡される。
-
IP層は送信元(自分のPC)と宛先(TryHackMeサーバ)のIPアドレスを追加し、パケットをデータリンク層に渡す。
-
データリンク層はヘッダーとトレーラーを付け、パケットをルーターに送る。
-
ルーターはデータリンク層のヘッダーとトレーラーを取り除き、IPアドレスなどを確認して次の経路へ転送する。この処理を繰り返し、最終的に宛先サーバのルーターに到達する。
-
宛先のネットワークに着いた後は、逆の手順でカプセルを剥がし、HTTPリクエストがサーバのアプリケーションに届く。
この流れが、パケットが生きて動く「一生」の簡略版です。後の学習でさらに詳しいバージョンを扱っていきます。
Answer the questions below
Telnet
まずは下の Start Machine ボタンを押して仮想マシンを起動しましょう。
続いて、画面上部にある Start AttackBox ボタンを押すと AttackBox が起動します。デフォルトではスプリット画面で表示されますが、見えない場合は上部の Show Split View ボタンをクリックしてください。
両方のマシンが起動するまでに約2分かかります。準備ができたら、AttackBox上でターミナルを起動し、telnet を試していきます。
Telnetとは
TELNET(Teletype Network) プロトコルは、リモート端末に接続するためのネットワークプロトコルです。簡単に言うと、telnetクライアントを使うと、リモートのシステムに接続してテキストコマンドを送信できるという仕組みです。
もともとはリモート管理に使われていましたが、実際には任意のサーバのTCPポートに接続して通信を試すことができます。
今回の演習では、ターゲット仮想マシン上で動作している以下のサービスに接続してみます。
-
Echoサーバ: 送信した内容をそのまま返すサーバ。デフォルトはポート7。
-
Daytimeサーバ: 現在の日付と時刻を返すサーバ。デフォルトはポート13。
-
Web (HTTP) サーバ: ウェブページを返すサーバ。デフォルトはTCPポート80。
※ EchoサーバとDaytimeサーバはセキュリティリスクとされ、通常は利用されませんが、ここでは学習目的で起動しています。
Echoサーバへの接続
次のコマンドでターゲットVMのEchoサーバ(ポート7)に接続します。終了する際は CTRL + Shift + ] を押してから quit
と入力します。
Daytimeサーバへの接続
次に、Daytimeサーバ(ポート13)に接続します。接続すると現在の日時が返され、自動的に切断されます。
HTTPリクエストの送信
最後に、HTTPサーバ(ポート80)に接続してウェブページを取得してみます。接続後に以下のコマンドを入力してください。
その後、Enterを2回押して空行を送るとリクエストが完了します。応答例は以下の通りです(一部省略)。
※ 応答が返らない場合は、コマンド入力後にもう一度 Enter を押してください。
Answer the questions below
Conclusion
このルームでは、ISO OSIモデル と TCP/IPモデル を比較しながら解説しました。さらに、IPアドレスとサブネット、そしてルーティングの基本について触れました。加えて、TCPとUDP の違いを学び、Encapsulation(カプセル化) の仕組みも整理しました。
実演としては、telnet を利用し、TCPを介してさまざまなサーバと通信する方法を試しました。
これで Networking Concepts を完了です。次はぜひ、ステップアップとして Networking Essentials に進みましょう。