初めに
ネットワークを勉強しよう
- アプリ~ミドルウェアはよく話題に出る
- ただ、ネットワークは良く分からない...と言う人が多い
- 社内勉強会でネットワークやったのでその資料を基にQiitaで記事にしました!
WireSharkをインストールしよう
Wiresharkの使い方 - ネットワーク入門サイト より
キャプチャしたデータを見てみよう
そもそもデータってなに?
- ネットワーク上を流れているデータは、実はモールス信号に近い
- さっきの0と1は電気信号のON/OFFを表している
画像も全部0と1
- 画像の色は3原色(赤青緑)で様々な色を表現できる
- Red/Green/Blueとそれぞれの濃淡(0~255)で表現
- この1ドットを組み合わせることで画像を表現
もっとWireSharkのデータを見てみよう
- これはHTTPSをキャプチャしたデータ。
- なんか「Ethernet」とか「Internet Protocol」とか書いてある
- データには様々な区分分けがあって、これらは層で出来ている
- この層ごとに役割がことなり、記載されている情報にはすべて意味がある
OSI参照モデルとTCP/IP階層モデル
WireSharkで表示されていた層は、TCP/IP階層モデルがベースになっている
OSI参照モデルとTCP/IP階層モデル
- これはHTTPをキャプチャしたデータ。http://google.com/
- これを OSI参照モデルとTCP/IP階層モデルで表現すると以下の区分け
- Ethernet:データリンク層/ネットワークインターフェース層
- Internet Protocol:ネットワーク層
- Transmission Control Protocol:トランスポート層
- Hypertext Transfer Protocol:セッション層以上/アプリケーション層
各層の説明はこのサイトを参照しました
物理層
物理的なネットーワーク接続(接続口の規格や伝送方式)を取り扱うよ。(電気/光信号など)
OSI参照モデル - その2 | ネットワークエンジニアとして 「OSI参照モデル:物理層」より
物理層の技術
- 端末の「0」「1」のビット列を電気信号等に変換し、ネットワークへの伝搬を行う
- 分かりやすいものはケーブル規格
- Ethernetケーブル:電気信号
- 光ケーブル:光信号
- 無線:電波
データリンク層
隣接する端末同士の通信に関することを取り扱うよ。(イーサネットフレームなど)
OSI参照モデル - その2 | ネットワークエンジニアとして 「OSI参照モデル:データリンク層」より
データリンク層の技術
- Ethernet:一般的なLAN/WANネットワークで利用されるプロトコル
- MACアドレス:NICや機器ごとに割り当てられる48ビットの識別子、物理アドレスとも呼ばれる
- 上位24ビットはベンダー毎にコードが割り当てられている
- 下位24ビットは製品番号となる
- MACアドレス:NICや機器ごとに割り当てられる48ビットの識別子、物理アドレスとも呼ばれる
ネットワーク層
端末間の終点と起点の通信を取り扱うよ。(インターネットプロトコルなど)
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アドレス
- ローカルエリアネットワーク(LAN)で使えるのがプライベートIPアドレス
- IPアドレス:基本は一つの機器に割り当てられる(IPv4だと) 32ビットの識別子
トランスポート層
端末間のデータ転送における通信の信頼性を取り扱うよ。(TCP/IPなど)
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など
カプセル化
送られるデータは各層のデータでカプセル化された状態で送られる。
WireSharkでキャプチャしてたデータもカプセル化されている。
プロトコルって結局なに?
- データの規格でもあるし、データを取り扱う手続きでもある
- 分かりやすいのはWireSharkで取得したデータ
- でもデータ単体だけでは、特に意味はない (0と1の羅列)
- このデータを各機器が読み取り、適切な手順で処理、実行することで意味が出てくる
誰がプロトコルを決めてるの?
- これらのプロトコルはRFC(Request For Comments)で定義されている
- インターネット技術標準化を行うIETF(Internet Engineering Task Force)が発行
- 各ベンダーはRFCを元に製品開発を行っている
- つまりRFCに準拠しない動きをする
ベンダーはクソのは基本的に良くない
RFCで規定されているデータ
Q:この情報って実務で役に立つの?
A:知っているのと、知らないのではかなり差が出ます。例えばトラブルーシューティングなどが良い例です。
Ping(ICMP)を用いた疎通確認
- Pingが通る:L3レベルまでの疎通はOK
- もし疎通できない場合、L4以上に問題があり
- サーバ側のデーモン/ミドルウェア等に問題がある
- Pingが通らない:L3以下のレベルの疎通がまずNG
- 物理的に疎通が取れていない(ネットワークの寸断、機器の故障)
- ネットワークの設定的に問題がある(L2/L3のネットワーク設定)
まとめ
ネットワークの基礎を説明
- WireSharkで確認できる通信データを調べると、ネットワークの基礎を学ぶことができる
- 通信データはTCP/IP階層モデルとして定義されているため、各層を理解すると通信データの内容がわかる
- これらの情報を知っていると、トラブルシューティングなどに役立てることができる