com4dc’s blog

Javaプログラマーのはずだけど運用してます

3分間ネットワーク基礎講座を読んだ

IPA基本情報技術者試験応用情報技術者試験を取る際に一通り学んだはずだし、大学でも一通り入門はしたはずなのだがやはり何年も使ってないと次々と忘れてしまうネットワーク周りの話。

今や AWSGCP 等によってアプリケーションエンジニアでも気軽にインフラ環境を手に入れることができるのだが、ネットワーク周りの設計等は正直公式リファレンスから毛の生えたような程度の設定でなんとなく動かせてしまっている。なんでこういう設計にしたのかがちゃんと説明できないなどなど、なんだかんだ基盤周りの知識はないと困るので、まずはネットワークから復習のために買った

読んだもの

[改訂新版] 3分間ネットワーク基礎講座

[改訂新版] 3分間ネットワーク基礎講座

  • 作者:網野 衛二
  • 発売日: 2010/09/11
  • メディア: 単行本(ソフトカバー)

読了までかかった時間

3時間くらい

雑な感想

物理層からアプリケーションレイヤーまで一通りエッセンスをギュッとまとめて紹介してくれていて、復習にはとても良い。読んでいてわかったのだが、どうやら自分はレイヤー3以下が苦手らしい。ルーティングプロトコルデフォルトゲートウェイなどの話は、単語は聞いたことあるしどういう設定すれば動くのかわかるけど、実際中で何をやっているのか説明ができない、という状態だったのでそのあたりざざっと復習ができたのでとても良かった。

正直普段アプリケーションを開発している側からすると、TCP/IPあたり以降の話しかあまり意識したことがなく、それこそ自前でネットワークを組んでみるとかしない限りはうすらぼんやりとした知識しかないのが正直なところだ。そういう意味ではネットワークのレイヤー構造は下位レイヤーの隠蔽がうまくいってるんだなぁと感心する。

スイッチ、ハブ、ルーターはその昔はそれなりに研究室に転がっていたりして、なんとなく研究室内のネットワークへつなげるために利用していたが、それこそあまり使い分けは意識していたわけではない(さすがにルーターとハブの違いくらいはわかっていたが)

ただ、やはり当然ながらそれぞれの機器にはそれぞれの利点と不利な点があるなど再度色々と勉強できたのは良かった。以下途中からだけど雑なメモ

  • RIP
    • ルーティングプロトコル
    • ルーティングアップデート
    • ルーティングテーブルを30秒に一回交換し合う
    • 6回受け取らなかったらルートからそのルーターを削除
  • メトリック
    • 最適な経路を決定する際の判断基準
    • ホップ数、回線スピード、込み具合、エラー率とか
  • ICMP
  • IPデータグラムのTTL
    • ルーターを通るたびに-1
    • Linuxは64、Windowsは128
    • 通常30くらいですべて到達可能なので十分不正な数値となりうる
  • タイプ3
  • ping
    • タイプ0
      • エコー応答
    • タイプ8
      • エコー要求
  • タイプ11
    • Time Exceeded
    • TTLきげんぎれ
    • traceroute
      • チェック用Software
      • 宛先までのルートを調べられる
      • 悪用されるといろいろまずいのでルーター管理者はICMPの扱い注意
  • レイヤー4
    • 到達後の話
    • エラー回復
    • フロー制御
    • 届いたデータがどのアプリケーションのものかわからんのでポートで振り分け
    • TCPUDP
  • TCP
    • TCPヘッダ=20オクテット
    • データ転送の許可要求
    • 3wayハンドシェイク
    • MSS
      • Max Segment Size
    • シーケンス番号
    • シーケンス番号は送るデータの先頭オクテット番号
    • 確認応答番号は次に送ってほしいデータの先頭オクテット番号
    • RTT=Round Trip Time
    • ウィンドウ制御
      • 複数のセグメント転送 → 確認応答
      • バッファで一時的に保管
      • ウィンドウサイズ=バッファ量=確実に受け取れる最大のデータ量
    • Wellknown Port
    • 送信元は49152~の重複してないポートを利用する
  • UDP
    • 何も制御しないのでめちゃくちゃ早い
    • ブロードキャストはUDP
  • クラスレスアドレッシング
  • NAT
    • ネットワークアドレス変換
    • 同時接続数の限界=割り振られたGlobal IPの最大値
    • NATの発展したもの=NAPT
  • NAPT
    • ネットワークアドレスポート変換
    • ポート番号も変換対象なので同じGlobal IPから複数のアプリケーションが外に出れる
    • IP以外にポートも正しくないとデータが流れないので、より安全
    • 内側から外へアクセスする分にはIP、ポート番号が記録されるので問題ない
    • 外側から内側へアクセスするときには、変換テーブルがないので無理
      • LAN内部に80ポートの公開サーバーがある場合等
    • 静的NAPT
      • あらかじめIPとポート番号の変換を書いておく