9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WireSharkで学ぶネットワークの基礎

Last updated at Posted at 2023-05-15
1 / 29

初めに


ネットワークを勉強しよう

  • アプリ~ミドルウェアはよく話題に出る
  • ただ、ネットワークは良く分からない...と言う人が多い
  • 社内勉強会でネットワークやったのでその資料を基にQiitaで記事にしました!

WireSharkをインストールしよう


Wiresharkの使い方 - ネットワーク入門サイト より


キャプチャしたデータを見てみよう

  • 16進数が表示しているエリアで右クリック
    image.png
  • 「ビット列として...」を選択
    image.png
  • なんじゃこりゃ!?

そもそもデータってなに?

  • ネットワーク上を流れているデータは、実はモールス信号に近い

image.png

  • さっきの0と1は電気信号のON/OFFを表している

画像も全部0と1

image.png

  • 画像の色は3原色(赤青緑)で様々な色を表現できる
  • Red/Green/Blueとそれぞれの濃淡(0~255)で表現
  • この1ドットを組み合わせることで画像を表現

もっとWireSharkのデータを見てみよう

  • これはHTTPSをキャプチャしたデータ。
    image.png
  • なんか「Ethernet」とか「Internet Protocol」とか書いてある
  • データには様々な区分分けがあって、これらは層で出来ている
  • この層ごとに役割がことなり、記載されている情報にはすべて意味がある

OSI参照モデルとTCP/IP階層モデル

WireSharkで表示されていた層は、TCP/IP階層モデルがベースになっている
image.png


OSI参照モデルとTCP/IP階層モデル

  • これはHTTPをキャプチャしたデータ。http://google.com/
    image.png
  • これを OSI参照モデルとTCP/IP階層モデルで表現すると以下の区分け
    • Ethernet:データリンク層/ネットワークインターフェース層
    • Internet Protocol:ネットワーク層
    • Transmission Control Protocol:トランスポート層
    • Hypertext Transfer Protocol:セッション層以上/アプリケーション層

各層の説明はこのサイトを参照しました


物理層

物理的なネットーワーク接続(接続口の規格や伝送方式)を取り扱うよ。(電気/光信号など)
image.png
OSI参照モデル - その2 | ネットワークエンジニアとして 「OSI参照モデル:物理層」より


物理層の技術

  • 端末の「0」「1」のビット列を電気信号等に変換し、ネットワークへの伝搬を行う
  • 分かりやすいものはケーブル規格
    • Ethernetケーブル:電気信号
    • 光ケーブル:光信号
    • 無線:電波

データリンク層

隣接する端末同士の通信に関することを取り扱うよ。(イーサネットフレームなど)
image.png
OSI参照モデル - その2 | ネットワークエンジニアとして 「OSI参照モデル:データリンク層」より


データリンク層の技術

  • Ethernet:一般的なLAN/WANネットワークで利用されるプロトコル
    • MACアドレス:NICや機器ごとに割り当てられる48ビットの識別子、物理アドレスとも呼ばれる
      • 上位24ビットはベンダー毎にコードが割り当てられている
      • 下位24ビットは製品番号となる

ネットワーク層

端末間の終点と起点の通信を取り扱うよ。(インターネットプロトコルなど)
image.png
OSI参照モデル - その2 | ネットワークエンジニアとして 「OSI参照モデル:ネットワーク層」より


ネットワーク層の技術

  • Internet Protocol(IP):ネットワーク間の通信を行うためのプロトコル
    • IPアドレス:基本は一つの機器に割り当てられる(IPv4だと) 32ビットの識別子
      • ローカルエリアネットワーク(LAN)で使えるのがプライベートIPアドレス
        • 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8など
      • ワイドエリアネットワーク(WAN)で使えるのがグローバルIPアドレス

トランスポート層

端末間のデータ転送における通信の信頼性を取り扱うよ。(TCP/IPなど)
image.png
OSI参照モデル - その2 | ネットワークエンジニアとして 「OSI参照モデル:ネットワーク層」より


トランスポート層の技術

  • TCP:コネクション型の通信を提供するプロトコル
    • 信頼性の高い通信に使用される
  • UDP:コネクションレス型の通信を提供するプロトコル
    • 信頼性が低いが高速な通信に使用される
  • ポート番号:アプリケーションを特定するための番号、TCP/UDPで使用
    • ウェルノウンポート番号: IANA で管理されている 0~1023のポート番号
    • 22:SSH / 25:SMTP / 80:HTTP / 110:POP3 / 143:IMAP4

セッション層以上について

  • OSI参照モデルでは分かれているが、TCP/IPモデルだと一緒の部分
  • プロトコル的にはこの辺は厳密には分かれていないものが多い

セッション層

  • 端末間の通信の確立、維持、終了を取り扱う
  • Webサーバだとログイン/ログアウトなどが想定

プレゼンテーション層

  • データの表現形式を取り扱う
  • 文字コード、ファイル形式、暗号化/圧縮など

アプリケーション層

  • アプリケーション固有の規定を取り扱う
  • HTTP / SSH / DNSなど

カプセル化

送られるデータは各層のデータでカプセル化された状態で送られる。
image.png
WireSharkでキャプチャしてたデータもカプセル化されている。


プロトコルって結局なに?

  • データの規格でもあるし、データを取り扱う手続きでもある
    • 分かりやすいのはWireSharkで取得したデータ
    • でもデータ単体だけでは、特に意味はない (0と1の羅列)
    • このデータを各機器が読み取り、適切な手順で処理、実行することで意味が出てくる

誰がプロトコルを決めてるの?

  • これらのプロトコルはRFC(Request For Comments)で定義されている
  • インターネット技術標準化を行うIETF(Internet Engineering Task Force)が発行
  • 各ベンダーはRFCを元に製品開発を行っている
  • つまりRFCに準拠しない動きをするベンダーはクソのは基本的に良くない

RFCで規定されているデータ

image.png


Q:この情報って実務で役に立つの?

A:知っているのと、知らないのではかなり差が出ます。例えばトラブルーシューティングなどが良い例です。


Ping(ICMP)を用いた疎通確認

  • Pingが通る:L3レベルまでの疎通はOK
    • もし疎通できない場合、L4以上に問題があり
    • サーバ側のデーモン/ミドルウェア等に問題がある
  • Pingが通らない:L3以下のレベルの疎通がまずNG
    • 物理的に疎通が取れていない(ネットワークの寸断、機器の故障)
    • ネットワークの設定的に問題がある(L2/L3のネットワーク設定)

まとめ


ネットワークの基礎を説明

  • WireSharkで確認できる通信データを調べると、ネットワークの基礎を学ぶことができる
  • 通信データはTCP/IP階層モデルとして定義されているため、各層を理解すると通信データの内容がわかる
  • これらの情報を知っていると、トラブルシューティングなどに役立てることができる
9
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?