ネットワーク基礎
🎨

ネットワーク基礎

タグ
Azure
公開日
September 26, 2022

今回は弊社でネットワーク基礎の勉強会を実施しました。その時の内容を公開させていただきます。一度ご覧いただけますと幸いです。

はじめに

Azureなどで環境構築をおこなったり、トラブルが発生した時に担当の方と会話する時にネットワークの話が出る事があり、基礎から理解したいというニーズが社内であったため前職のネットワークエンジニアだったことを活かして社内勉強会を行う事にしました。

第一回はネットワーク基礎という事で、OSI参照モデルとネットワークでの実際の通信時何が起きているかをシミュレーションしてみました。

目次

  1. OSI参照モデル
  2. 実際のネットワーク通信
  3. 今後の予定

OSI参照モデル

ネットワークはデータを運搬するという事で、実際の運送業に例えながらOSI参照モデルの説明を行いました。

OSI参照モデルの概要

image
image
image
image
image
image
image

ヘッダとカプセル化

各レイヤ毎にヘッダが存在し、送信側では上から順にヘッダをつけていき受信側では下から順にヘッダを参照していくという説明をし実際にパケットキャプチャソフト「WireShark」を使って中身を見てみました。

image

IPアドレスを調べる

実際にキャプチャしたデータを確認する際にIPアドレスがわかっていないとどのデータでやり取りしているかを見つけられないので、PC側、サーバー側のIPアドレスを実際のコマンドで確認しました。

自分のIPアドレスを調べる

・PCのインタフェースを確認する

networksetup -listallhardwareports

Hardware Port: Ethernet Adapter (en4)
Device: en4
Ethernet Address: 1a:4b:ab:8d:1f:da

Hardware Port: Ethernet Adapter (en5)
Device: en5
Ethernet Address: 1a:4b:ab:8d:1f:db

Hardware Port: Ethernet Adapter (en6)
Device: en6
Ethernet Address: 1a:4b:ab:8d:1f:dc

Hardware Port: Wi-Fi
Device: en0
Ethernet Address: c8:89:f3:b7:db:5c

Hardware Port: Thunderbolt 1
Device: en1
Ethernet Address: 36:0b:6b:6e:60:80

Hardware Port: Thunderbolt 2
Device: en2
Ethernet Address: 36:0b:6b:6e:60:84

Hardware Port: Thunderbolt 3
Device: en3
Ethernet Address: 36:0b:6b:6e:60:88

Hardware Port: Thunderbolt Bridge
Device: bridge0
Ethernet Address: 36:0b:6b:6e:60:80

VLAN Configurations

Wi-Fi接続なのでHardware Port: Wi-FiDevice: en0 ⇦このインタフェース名を覚えておくEthernet Address: c8:89:f3:b7:db:5c

・PCのアドレス情報を確認する

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether c8:89:f3:b7:db:5c 
	inet6 fe80::18af:8a26:db1a:65ab%en0 prefixlen 64 secured scopeid 0xe 
	inet 172.16.0.140 netmask 0xfffff800 broadcast 172.16.7.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active

172.16.0.140 が自分のIPアドレスだと分かりました。※Windowsではipconfigコマンドで確認可能です。

サーバーのIPアドレスを調べる

20.124.141.213 がサーバーのIPアドレスだと分かりました。

このアドレスで宛先アドレスや送信元アドレスをフィルタやソートする事でキャプチャしたデータを見つける事ができます。

image

実際のネットワーク通信

先ほどの例ではPC側だけでしたが、実際にはサーバーとの間に複数のネットワーク機器を介して通信が成立しています。実際のネットワーク通信では何が起きているかを順を追って説明しました。

image
image
image
image
image
image
image
image
image
image
image

データを送信する機器(PC)の挙動

送信側では上のレイヤからヘッダをつけていきますが各レイヤの宛先アドレス情報は分からない事がほとんどです。ネットワークではヘッダの宛先アドレス情報を調べるのに各レイヤ毎に対応したテーブルを持っておりそのテーブルを参照して、各レイヤのヘッダ情報を埋めていきます。

データを転送する機器(SW、RT)の挙動

データを受け取った転送機器は、一番下のレイヤの宛先アドレス情報を見て自分宛かどうかを判断します。自分宛の場合は、そのヘッダを外して上のレイヤのヘッダを参照し処理します。(SWはL2までRTはL3までのヘッダを参照できます。)自分宛でない場合は、自分の持っているテーブルを参照します。そのテーブルに宛先があればそこに転送し、なければ破棄します。

データを受信する機器(サーバ)の挙動

データを受け取った転送機器は、一番下のレイヤの宛先アドレス情報を見て自分宛かどうかを判断します。自分宛の場合は、そのヘッダを外して上のレイヤのヘッダを参照し処理します。(サーバはL7までのヘッダを参照できます。)どこかのレイヤで宛先アドレスが自分宛でなかった場合は、そこでデータを破棄します。

PCで各種テーブルを確認するコマンド

・IPアドレステーブル(L3)宛先ネットワークアドレスと、次にどのIPアドレスへ転送するかが記載されているテーブルです。

netstat -rn
Routing tables
Internet:
Destination        Gateway            Flags           Netif Expire
default            172.16.0.1         UGScg             en0       
127                127.0.0.1          UCS               lo0       
127.0.0.1          127.0.0.1          UH                lo0       
169.254            link#14            UCS               en0      !
169.254            link#26            UCSI              en9      !
169.254            link#27            UCSI             en12      !
169.254.84.181     link#26            UHLSW             en9      !
169.254.157.170/32 link#26            UCS               en9      !
169.254.188.28/32  link#27            UCS              en12      !
172.16/21          link#14            UCS               en0      !
172.16.0.1/32      link#14            UCS               en0      !
172.16.0.1         80:22:a7:31:92:2f  UHLWIir           en0   1157
172.16.0.119       8a:11:5e:e3:8b:1a  UHLWIi            en0   1053
172.16.0.140/32    link#14            UCS               en0      !
172.16.7.255       ff:ff:ff:ff:ff:ff  UHLWbI            en0      !
224.0.0/4          link#14            UmCS              en0      !
224.0.0/4          link#26            UmCSI             en9      !
224.0.0/4          link#27            UmCSI            en12      !
224.0.0.251        1:0:5e:0:0:fb      UHmLWI            en0       
239.255.255.250    1:0:5e:7f:ff:fa    UHmLWI            en0       
239.255.255.250    1:0:5e:7f:ff:fa    UHmLWI            en9       
239.255.255.250    1:0:5e:7f:ff:fa    UHmLWI           en12       
255.255.255.255/32 link#14            UCS               en0      !
255.255.255.255/32 link#26            UCSI              en9      !
255.255.255.255/32 link#27            UCSI             en12      !

Destinationが宛先ネットワーク、Gatewayが次に転送するIPアドレスになります。PCの場合はデフォルトゲートウェイと呼ばれる全ての宛先はここに転送するという記載があります。ここではdefaultと書かれていますが、0.0.0.0と記載されている事もあります。

※Windowsでは route print コマンドで確認できます。

・ARPテーブル(L2.5)IPアドレスとMACアドレスを紐づけるテーブルです。上記IPアドレステーブルで参照した次に転送するIPアドレスのMACアドレスを調べる時に使います。

arp -a
xxxxxxxxxxxxx.local (169.254.84.181) at (incomplete) on en9 [ethernet]
? (172.16.0.1) at 80:22:a7:31:92:2f on en0 ifscope [ethernet]
? (172.16.0.119) at 8a:11:5e:e3:8b:1a on en0 ifscope [ethernet]
? (172.16.7.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet]
? (224.0.0.251) at 1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]
? (239.255.255.250) at 1:0:5e:7f:ff:fa on en0 ifscope permanent [ethernet]
? (239.255.255.250) at 1:0:5e:7f:ff:fa on en9 ifscope permanent [ethernet]
? (239.255.255.250) at 1:0:5e:7f:ff:fa on en12 ifscope permanent [ethernet]

・MACアドレステーブル(L2)MACアドレステーブルはMACアドレスと、転送する宛先インタフェースが記載されたテーブルです。スイッチなどのL2の転送機器で使うため、PCやRTサーバーにはありません。

今後の予定

今回は、ネットワークの基礎という事で実際の通信の概要を説明していきました。今後は、実際にそれぞれのレイヤで知っておくべき内容を説明し、実際のトラブルシューティングのやり方や切り分け方法などをやっていこうと思います。

・L2を少し
 ・MACアドレスについて
 ・LAN、VLAN

・L3を深掘り
 ・IPアドレス、ネットワークアドレス、サブネットマスク
 ・プライベートアドレス、グローバルアドレス
 ・NAT、PAT
 ・ルーティング、ロンゲストマッチ
 ・IPアドレスでのフィルタリング

・L4を少し
 ・TCP 3wayハンドシェイク
 ・ポート番号でのフィルタリング

・トラブルシューティング