本来いろいろ何かを覚えたりするのって楽しいことなんだよなぁ。理解できなかった部分を少しずつ溶かしていく行為って、氷に圧力かけてその部分を早く溶かしたりするのと同じぐらい楽しい。例えが微妙すぎる。


学校って、ほんとに駄目な場所だと、ほんとに思う。「教えられること」って殆ど楽しくない。「教えられてしまったこと」は後で楽しいものになりにくい。普通、学校って、その「学校」っていう場所は選べても、教えてくれる人は選べない。間接的には選べるからいいっていえばいいんだろうけど、そのために使う労を、そのまま違う方向に使えたらいいのにと思う。まぁでも、本当に凄い人は、その程度の労をなんとも思わないのだから、もういいや。


コンピュータ関連のことって、殆どは独学可能なことだと思う。みんなそれぞれが、作ったこと、やっていることを公開してる。オープンソースプロジェクトは沢山あるし、ソース読むだけで、コーディング方法が学べる。パクったってライセンスを守っていれば誰も文句を言わないし、むしろよい動きと見てくれる。

プログラムの書き方の方言って言語ごとにかなり沢山あったりするけど、やっぱりデファクトスタンダード的な書き方はあるし、そういうのが往々にして「美しい」コードになる。でもそれって「流行」が混ざっていたりして、一定しない。例えば Perl の「どのモジュールを使うのがいいか」っていう感じ。これからはコレダっていう何かがどんどんでてくる感じ (DBIx::Class, Class::DBI とか)。

そういう流れの早さについていくのも、今ではその気になればそんなに難しいことじゃない。SBS なんかのホットエントリーをいくつか読んで、流行っているアプリケーションのソースを読んだらいい。今だったら Plagger とか、Catalyst 関連の動きを追っていると流れが見えてくる。(殆どソース読んでないけど)

で、そういう流れの早さが顕著だから、教科書みたいなものが作りにくい。絶対的に信用に値する分かりやすい教科書がなかなかないから、教員の言ってることがいまいち信用できない。結局自分で調べなおさないと、間違いを掴む可能性が割りと高い。教科書に載っているコードが今のトレンドにあっているか全然わからない。

それに、例えばウェブ技術はすごい早さで展開しているのに、教員はいろいろ忙しいからそういうことに気付けない。ついでにだいたい学校教員って「安定」しているから、そういう不安定な先端を走ることに興味が薄いみたいな感じがする。ステレオタイプかな。

考えれば考えるほど、学校に行っている時間が無駄に思える。しかし別の視点から考えると、学校に行くこともまぁ必要なのかもなぁとも思うし、なんともいえない。


「そういう」ばっかりだなぁ。日本語書けるようになりたい。

  1. トップ
  2. life
  3. 無題ドキュメント1
  1. トップ
  2. thinking
  3. 無題ドキュメント1

192.168.0.1/24 なネットワークを分けるには?

192.168.0.240/30 とかいうサブネットを作って、親ルータのルーティングテーブルに追加してあげればいいのかな。子ルータの IP が親ネットワークで 192.168.0.2 だったら、IP/サブネット: 192.168.0.240/30, ゲートウェイ: 192.168.0.2 メトリクス: 1

この場合子ルータの DHCP サーバーは動かせないけど、子ルータの下にぶら下がるホストの自動設定は親ルータの DHCP サーバがうまくふってくれるんだろうか? 無理だよなぁ。わからん。


あれ違うなぁ、なんか間違ってる。DHCP サーバーは起動できるのか? むしろ「サブネット分ける」の意味がわかってないなぁ。


サブネットマスクを延長して、既存ネットワークを分割することが「サブネット分ける」でいいのかなぁ。つまり1ビット延長して /25 なサブネットマスクにしたら、半分にセグメントが分かれて、みたいなことでいいんだろうか。

神のささやきをもらったよ!!

  • 親ルータ: 192.168.0.1/24
  • 子ルータ WAN: 192.168.0.2/24, LAN: 192.168.1.1/24
  • 親ルータの静的ルーティングを 192.168.1.1/24 -> 192.168.0.2 に
  • 子ルータの静的ルーティングを 192.168.0.1/24 -> 192.168.0.1 に (子から親直下のホストが見えるように)デフォルトゲートウェイ設定すればおk
  • DHCP 鯖は子ルータで立てる (見える位置ならどこでもいい?)

NAT をちゃんと理解してないなぁ。NAT はグローバル IP をプライベートに変換するだけで、NAPT がポートを空けるやつらしい。

ローカルルータ動作の場合は NAT を切らないといけない。子ルータの NAT が有効な場合、子ルータは親ネットワークに対して一個のホストとして認識されるので、親ネットワークから、子ルータ以下のホストにはアクセスできない。ついでに親ルータに静的ルーティングを追加する必要はなくなる。見方を変えるとそのまま普通の WAN-LAN の関係。ってことを教えてもらった。

  1. トップ
  2. net
  3. サブネット分ける

最近ずっと手のことを考えてるような気がする。

少し前と同じように今でも目を閉じるとこちらに伸ばされた綺麗な手が見えるし、街中で綺麗な手を見ると、心底綺麗だなぁと思ってしまう。暗くなってから散歩に出ると、なんとなく自分の手を見て「変な形だなぁ」と思ったり、「なんでこんな形なんだろう」とか思ったりする。

  1. トップ
  2. life
  3. 手フェチなのだろうか

中身がどんなにくだらなくても、「何か」を感じていたいなぁと思うし、もっと感じられるようになりたいなぁと思うのですよ。だから、くだらないとか一蹴するのはできるだけ避けたいと、思う。


いろいろ考えてみても、どこをどう見たらいいのか全然わからないものがあって、そういうのにむしろ多くの人が惹かれているようなのを見て恐いなぁ・気持ち悪いなぁと思うことはすごくよくあるけど、そういうのをどう解消するかを考えている。生理的に受け付けない、みたいなもの。とりあえずスタンスとしては、一切言及しないということにしておきたい。ということにしておきたい。とりあえず、時が来るまで無視しておく。あとでよさに気付いたら言及してみたらいいかとか。先に「これはだめだ」って言ってしまうと、あとでよさに気付いたとき「撤回」っていうやっかいな手続きをとらないといけない。めんどうくさい。

しかしやたらルビがついたアレなのは読めない、たぶん読めるようにならない、という矛盾。クリティカルポイントとか。いやあれはある意味ではだいぶ楽しかったから、全然ほんとに素晴らしいものだと思うけど皮肉じゃなくてさ?


というよりも、何も感じなかったり、くだらないとしか思えないものって、実は自分が「感じられない」だけなんだなぁと、最近思うから、むしろ「これはくだらない・つまらない」と言う事は、相手を貶めるようなことではなく、むしろ「自分はこんなにも感受性がない」といっているようなものな気がして、恥ずかしい。


すんごいいろいろ矛盾していて気持ち悪い。なんだかんだいって「これはひどいww」とか言うしなぁ。雑魚すぎだからなぁ。

  1. トップ
  2. life
  3. 眠りながら考える
  1. トップ
  2. thinking
  3. 眠りながら考える

低レベルな層が全然わかってない。TCP/IP 以下は特に全然わかってない。とりあえず TCP/IP と、ルーター・ハブ・ブリッジがそれぞれどう働くかを完全に理解したい。

  • イーサネット (何か今使ってる何か・物理層とデータリンク層レベルの話らしい)
  • CSMA/CD (ホストが増えると効率が悪くなるやつ)
  • セグメント
  • サブネットマスク (IP)
  • デフォルトゲートウェイ (IP. 困ったときに送る方向?とかなんとか。ゲートウェイって何。牛?)
  • 半二重・全二重 (全二重の場合は CSMA/DA は関係ない)
  • コリジョンドメイン
  • ブロードキャストドメイン
MAC アドレス
物理層の識別アドレス
フレーム
物理層の通信単位
パケット
IP における通信単位
ブロードキャスト
ある範囲に一括送信する
ユニキャスト
あなただけに。

さて最終的に自分でルータ (ハブ) を二段以上の構成にして、ネットワークを組めるようになることを目標にして理解をしたい。必要なことは、ネットワーク設定の項目 (IP アドレス, サブネットマスク, デフォルトゲートウェイ) を理解して自由に設定できること。


まずイーサネット基本。物理層・データリンク層の規格。基本的に送るデータは同じイーサネット内の全てのホストに配送される。ホスト側が自分宛でないデータを破棄する。結構ゴリ押しみたいな仕様なんだなぁ。でもって、この仕様の場合、データの衝突が起きて通信が阻害されるので、コリジョン回避のための方法が定義されており、それが CSMA/CD である。なるほど。

あーそうか、100Base とかっていうのはイーサネットの用語なのか。

「セグメント」は物理的な区分けのようだ。イーサネットでは通信の効率を保つため?に、物理的な長さで一つのイーサネットの大きさを規定していて、ハブの段数も制限があるみたいだ。

異なるセグメントをつなぐにはルーターが必要

純粋な「ルーター」はポートを二つしかもっていないっていうけど、なんで物理的に繋ぐところが二個なのにいくつもコンピュータが繋げるのか不思議だった。分かる人はたぶんこの「不思議さ」が理解できないと思う。なんかこう、何かの魔法で、必要なパケットはいつのまにか必要なホストにだけ届くと考えていた。でもそれが実はゴリ押しで全部に配送するってことを知ったので、ちょっとそれを理解できたかもしれない。

ハブは物理的にポートに送られてきた信号を増幅したり波形を直したりして、他の全ポートに送信する。例えばそれはあるポートにルータが繋がれているかどうかなんて知ったこっちゃなく、全部平等?なんだね。

といっても、それじゃちょっと効率が悪いから、MAC アドレスで振り分けてあげるハブがスイッチングハブ (ブリッジ)、でいいのかな。ブリッジは接続されたホストが発信した MAC アドレスを学習して、他のホストにブロードキャストし、他のホストはその MAC アドレスへ送信し、ブリッジは学習したポートに向けてフレームを送信する。もし知らない MAC アドレスがあて先だったら、普通に (?) 全てのポートに送信する。

これでハブとブリッジについてのすごく基本的な部分はわかったのかな。


さてルーターとか、デフォルトゲートウェイとかをちゃんと理解したい。ルーターは IP とかと同じレイヤーの話で、物理的な (電気信号がとかいう) 話はない、というのでいいのかな。と、思いきや、物理層のアドレスである MAC アドレスは扱うようだ。ふーむ。

  • ローカルルータとリモートルータの違いって何よ
  • WAN って何よ
  • 「ルーティング」って結局何よ

ローカルルータとリモートルータの違いは LAN と LAN を繋ぐかと、LAN と WAN とを繋ぐかっていうこと。らしいけど、どういう意味かわからない。

WAN って LAN とって、違うのは大きさだけだと思っているけど、それでいいのかな。

だとすると、リモートルータはただたんに大きいほうと小さいほうを区別する、ってだけだよなぁ。


ユニキャストの場合を考えると、MAC アドレスがルータ自身のもので (イーサネット的にはルータ向けの通信) IP アドレス自身のものではない (IP 的にはルータなんてどうでもいい) 場合、ルータさんは IP をルーティングテーブルで検索してどこに送信するか決定する。送信するときには MAC をそっちの方向にあるネットワークのルータに書き換える。この MAC アドレスは、ARP テーブルとかいうのに学習しておく? ブリッジの学習と同じなのかな。つまり、MAC を学習していない場合はそっちのネットワークにブロードキャスト?


ルーティングテーブル云々はちゃんと IP を理解しないとだめみたいだ。ルーティングテーブルに保存される情報は「あて先ネットワークとマスク、隣接ルーターの IP アドレス、送出インターフェイス」らしい。これらがなぜ必要か、どういう場合に必要かを理解したい。

疲れた。@2006-07-08T23:01:12+09:00 90分で集中力終了


続き。IPv4 - Wikipediaのルーティングの部分や、イーサネットとルーティングとかを読んでみた。

後者の記事のおかげでサブネットについて分かってきたかもしれない。あるサブネットに所属するホストは全て同じセグメント内にいないといけないとかなんとか。当たり前といえば当たり前か。同一セグメント内の全てのホストを一括して扱うためにサブネットがある?みたいな。

でもまだ実際にサブネットを設定するさいどうすればいいかがわかっていない。ルータも含めて同じセグメント内のサブネットは同じにしないといけない、というのは経験的にもわかる。じゃあ、ルータにルータを繋いで、さらにサブネットを分割するとき、どう設定するか、ということがわかってない。ついでに、ブロードバンドルータをローカルルータとして使用する場合どうすればいいかもよくわからない。

現在うちのネットワークは、WAN からルータが DHCP でアドレスをもらって、ルータの4ポートハブ (思うのだけれど、ルータポートも含めれば5ポートなんだよね?) に自宅のPCが全て有線で繋がっている。LAN 側のルータの IP は 192.168.0.1 で、サブネットマスクは 255.255.255.0 になってる。いくつかの PC は DHCP で設定され、いくつかの PC は固定 IP になってる (つまりこのルータでは DHCP 鯖が立ってる)。ここにルータをもう一つ使って、ネットワークを構築し、このルータの下にぶらさげたい (少し制限されたネットワークを構築したい)。

二段目のルータの IP はどう設定すればいいんだろう。今試せないので考えるだけで書くと、WAN 側の IP は 192.168.0.254/24 とかにして、LAN 側の IP を 192.168.10.1 にして、二段目のルータの DHCP を有効にする。とかだとうまくいく気がするけど、わからないし、なんか変な気がする。サブネットを分割してるわけじゃなくて、NAT * NAT になってる?

ぐぐろう。

落ち着いて見直す。


イーサネットだからコリジョンが発生するというわけじゃない。全二重ならばコリジョンは発生しない。全二重は送信側と受信側が別々に同時に通信できるから、受け取るぶんはずっと受け取っていられるし、送るぶんはずっと送っていられる。ref. 全二重通信と半二重通信 - The all-round Dictionary of Network Terms


セグメント=コリジョンドメイン。セグメントを繋ぐのはルーターでなくて、ブリッジでもいい。ブリッジはは必要なフレームを振り分けるので、コリジョンドメインは拡大させない。ハブ (not スイッチングハブ) は単純に増幅するだけなのでコリジョンドメインが拡張される。

ブロードキャストドメインは、ブロードキャストフレームが届く範囲。ブリッジはブロードキャストフレームを同じネットワーク内 (すなわちブロードキャストドメイン内) に転送するので、ブリッジはブロードキャストドメインを分割しない。ルータはブロードキャストフレームを転送しないので、ブロードキャストドメインを分割する機器と説明される。

ref. ネットワークエンジニアを目指して・イーサネット技術:コリジョンドメインとブロードキャストドメイン


  • 無線 LAN を導入するときどうするか。無線接続のノート PC から、一段目の固定 IP のホストは見えてほしい。でもセグメントは分けたい (samba 共有は見えなくしたい)。一段目に無線 LAN アダプタを繋げば普通に見える? つまり無線 LAN ルータではなく、ルーティングは一段目にまかせる
  1. トップ
  2. net
  3. ネットワークがわかってない。

なんでネットワークに接続するクライアント PC に IP を設定すると、それがそのネットワークで使えるようになるんだろうって疑問だったんだけど、そもそも「クライアント」とかいう考えたが間違っていた。

基本的に全て P2P なんだよなぁ。分かっていたつもりで分かってなかった。今まではルータがサーバー、PC がクライアント、みたいなモデルを考えてた。確かに DHCP を使う場合の多くではこの関係は成立するけど、ふと DHCP 使うのをやめて、手動設定をしたとき、「ルータにはこの IP を登録しなくていいんだろうか」と疑問に思ってしまう。実際には、IP を使う機器は全て自分の IP をネットワーク上にブロードキャストするからそんなことをしなくていい。ルータもそのブロードキャストを受け取っている一つの機器にすぎない。

ということを ARP の説明を読んで理解した。

  1. トップ
  2. net
  3. ネットワーク続き

幅広い視野ないし全てのことをステレオタイプ無しに見て評価できる人は尊敬できるなぁ。好きな何かに対して「信仰」レベルにならず、好きなまま批判できる人や、どう考えても「くだらない」ことから、新しいことを見出したりできる人。

  1. トップ
  2. life
  3. ステレオタイパー
  1. トップ
  2. thinking
  3. ステレオタイパー

  • ファイル処理には IO::File を使え。(IO::Handle, IO::Seekable)
  • LOCK_EX とかは use Fcntl;。でも IO::File::Lockable っていうモジュールがあったりする (使う?)
  • EOF まで一気に読み込む (ruby の File#read) には join "", $f->getlines とか、リストコンテキストで I/O 演算子使って join?
  • package; は deprecated. 戻すときは明示するらしい package main;
  • @ISA (あいえすえー、と読んでた) って何だよって思ってたけど、is_a だった。

クラスの作り方を寝ると忘れる。

  • 継承のやりかたを覚える。
  • use の挙動を把握する (use すると import ルーチン呼ぶんだぜって教えてもらった)
  1. トップ
  2. perl
  3. Perl 雑多メモ

L2スイッチ機能搭載ブロードバンドルータ NetGenesis SuperOPT100E

あんまり熱くならない。前まで、そこらに TCP セッションを張っては切り張っては切りをしまくるとかやってる (torrent とか) とそれ自体にダウンロード速度が出ていなくても、他まで巻き込んでかなり遅くなっていたけれど、それが改善されたっぽい。

しかし今日になって LAN が切れまくる現象が発生し、ひたすら原因究明するはめになった。原因は DHCP の設定 (先頭 IP アドレス) が何故かちゃんと反映されず (192.168.0.5/24 とかにしても 3 を割り振る)、ネットワーク上で IP アドレスが競合していたからっぽい。固定 IP を大きめ (192.168.0.250 以上) に設定し、DHCP 割り当て個数を減らした (253 -> 240) 。

IP が競合してても ubuntu たんは警告してくれないようだ?


何はともあれありがとう><


引越しに際する課題

  • サブネットわけるとかして自分のファイル共有を家族のとわける。
  1. トップ
  2. net
  3. ルータを新しくした

全部最初から決まっているっていうのと、全て可能性で無意識の働きかけによってどうにでもなりえる、みたいなのが一緒になってる。なんでもいいけど、全部最初から決まっているっていうのも、全て可能性で、の場合の一つの解にすぎないような気がする。

  1. トップ
  2. life
  3. 全部最初から決まっている
  1. トップ
  2. thinking
  3. 全部最初から決まっている