• ベストアンサー

CSMA/CD方式

イーサネットで用いられる二進指数バックオフアルゴリズムで、フレームの衝突が発生した場合に、衝突回数に比例して乱数の最大値Zを動的に変化させる目的を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6632/9395)
回答No.1

大概のフレーム衝突は、1回・2回、多くても数回以内に解消し、通信できます。 しかしその数回でもおさまらないほど通信が混雑したらどうなるでしょうか。 コリジョンが解消しないうちに他のクライアントも通信を始め、さらにコリジョンが発生し、ほとんどのフレームが再送上限を超えて破棄されてしまうようになってしまうかもしれません。 なので、一度衝突したら、より長く待って渋滞を解消しようとします。 そのための簡潔かつ有効な処置が「待ち時間のための乱数最大値を増加させる」ということです。 1つ増えるごとに最大値は2のn乗で増加しますので、幾何級数的に待ち時間は増えることとなります。 乱数ですから必ず長く待つとは限りませんが、確率的に長く待つ通信機器が増えた結果、いくらかの通信は通るようになって、渋滞が解消されていきます。 しかし逆に、コリジョン1回目から、そんな長い間待つ必要も、無いでしょう。 なので、初めのうちは待つといってもちょっとだけ、コリジョンが発生し始めたなら速やかに長く待つようにと考えられたのが、「truncated binary exponential backoff」方式ということになります。 >イーサネットの規格とCSMA/CDアクセス制御方式 (4/5) >https://www.atmarkit.co.jp/ait/articles/0105/23/news004_4.html ※最下部に待ち時間の表あり

関連するQ&A

  • EthernetのCSMA/CDに関して

    [7]EthernetのCSMA/CDに関して CSMA(搬送波感知多重アクセス)では、 信号を送る前にケーブル上を他の信号が流れていないかをチェックしてから信号を送る ↓ どういう方法で他の信号が流れているかいないかをチェックしているのか? 他の信号との衝突を避けるため一定の間隔を空けてデータを送信 ↓ 一定の間隔はどういう計算式で導くの? また、具体的な時間はどのくらい? CSMAで信号が流れていない事を確認しても 同時に2台のPCが信号を送り出すと信号の衝突は 避けることが出来ない為、信号の衝突に気付いた PCが衝突の発生を知らせる為のジャム信号を送信する。 リピータハブも同様に信号の衝突が発生すると ジャム信号で全てのPCに知らせる。 ↓ ひたすら衝突した場合にはどうなるの?? 以上 よろしくお願いします

  • VBA AからZで乱数を発生させたい

    Sub AからZで乱数を発生させる() Dim 最大値 As Integer Dim 最小値 As Integer Randomize 最小値 = 1 最大値 = 10 Debug.Print Int((最大値 - 最小値 + 1) * Rnd + 最小値) End Sub --------------------------------------------------------- これを実行すると、1から10の間で乱数を発生させられるのですが、 AからZの間で乱数を発生させたい場合は、 このコードをどのようにすればいいでしょうか? アドバイスよろしくお願いします。

  • CSMA/CD方式

    http://www.pursue.ne.jp/jouhousyo/sysad/Network/AccessControl.html 上記サイトでシスアドについて勉強しています。 CSMA/CD方式のところで、データは衝突が検出されてから、一定時間待って再送信するとありますが、ランダム時間待って再送信するとの記述もあります。 一定とランダムでは全く矛盾すると思うのですが、 私の見解としては、 ほかのコンピュータと再度衝突しないように、ランダムな待ち時間を決めて、その決めた時間を一定時間として再送信する、 のように捉えています。 正直、この捉え方もパッしないのですが、このような見解でよろしいでしょうか?? 以上、拙い文書で申し訳ありませんが、宜しくお願いいたします。

  • 最小MACフレーム長はなぜ64byte(512bit)?

    質問させていただきます。 イーサネットでは最小MACフレーム長が64byte(512bit)と 決められていますが、これはなぜでしょうか? 例えば10BASE5で最大セグメント長2500mだとして、 10Mbpsの伝送速度でMACフレームが512bitないと 衝突を検知できない、というのを具体的に式などで 説明して頂けないでしょうか? どなたか分かる方、ご回答の程、よろしくお願いいたします。

  • 待ち行列のプログラム(Fortran)

    Fortranで待ち行列(レジ待ち)のプログラムを作りたいのですが、途中で行き詰まってしまい、うまくできません!  待ち行列についてまだよく理解できてないのだと思います。指数乱数を発生させるプログラムだけだったらできるのですが、それをヒストグラムで示して、待ち行列がどのように変化するのか観察するプログラムができないのです。  待ち行列のプログラムについて詳しく載っているHPなどがあれば教えてください!!(本でもOKです)

  • CSMA/CDって?

    CSMA/CDって簡単に言ってどのようなものなのですか? 教えてください

  • RAND関数です

    お願いします。 A1~A20までに入力枠があります この数値は他の箇所より参照しています。 このA1~A20の数値に対してB1~B20に=RAND()で乱数を発生するようにしていますが、ただ、データー入りがA1~A20行が最大で、A1~A7までの時とか毎回変化します。当然、データーの入っていない行にも乱数が発生します。 =IF(ISERROR(RAND()))、” ”、((RAND())))) で表示させないようにとしましたが、できません。 関数の」組み合わせ?マクロのコード? いい方法がありませんでしょうか、宜しくお願いします。

  • くじびきソフト作りたい

    先回質問させていただき、乱数発生は教えてもらいわかりました。 <html><head><title>乱数発生器</title></head> <body> 1~150の乱数を発生させます。<br> <input type="button" value="発生させる。" onclick="alert( Math.floor( Math.random() * 149 ) + 1 )"> </body></html> もしRAND関数使った場合はどのようにすればよいのでしょうか? また一度出た数字は除外していくのにはどうしたらいいですか? 目的はビンゴゲームのようなくじに使いたいと思います。 参照URLのようなものがベストなのですが、99までしかなく できれば3桁ほしいです。 http://www.ne.jp/asahi/ja/asd/gijutu/kuji/ よろしくお願いします。

  • Excelで最大値を与える説明変数求める方法

    ソルバーを使うと結構な確率でエラーになります。 共役傾斜法とか準ニュートン法ってのが「最初にどこからスタートするか」に依存するからのような気がするのですが、そこで、 (1)適当に正規分布に従う乱数を100個発生させる。 (2)その乱数を説明変数にして目的変数を得る。これを100回繰り返す。 (3)100個の目的変数が得られたら、そのうち目的変数の値が大きい方から上位50個についての説明変数の標準偏差を求める(下位50個は捨てる) (4)上位50個の目的変数のうちでも最大値を与える説明変数1つを選らんで平均値とし、(3)で求めた上位50個の標準偏差を標準偏差として、この2つのパラメータにて正規分布に従う乱数を50個出す。 (5)先ほど(3)で使った上位50個の説明変数(下位50個は捨てる)と(4)の50個説明変数の計100個より100個の目的変数を得る (6)以後(3)~(5)を何度も何度も繰り返す。そのうちに上位50個の標準偏差がだんだん小さくなってくる。ある程度小さくなったところで、そのときの説明変数を「目的変数を最大にする説明変数」とする。 というVBAのマクロを組んでみたところ、時間はかなりかかるするものの(と言っても等間隔の目的変数をしらみつぶしにする方法よりははるかに速い)、エラーになりにくい(もちろん関数が収束するなら)し、結果を念のためソルバーに入れてやるとほぼそこから答えが動かない、と、結構いいような気がするのですが、悲しいことに基礎的な素養が無いからこれが数理的に正しいことなのかわかりません。 感覚的には正しい気がするのですが、いかがなものでしょうか。

  • 同じ数字が連続する箇所を数える関数

    エクセルである関数を作ろうとしています。 まず前提として僕が知ろうとしているのは、「(1)~(4)の4択形式の試験で全N問あったとき、同じ数字が最大n連続するものが一つでも現れる確率は◯◯だ」ということが知りたいと思っています。 センター試験とかで同じ数字が何連続も続くと不安になりますよね?あれはどういう確率分布をしているのか、統計的に調べてみようという感じです。 そのために、Nに色々数値を代入して、(例えば10でやってみましょう)10個の乱数を発生させます。 その中で同じ数字が最大2連続している箇所の個数、最大3連続している箇所の個数、最大4連続している箇所の個数・・・、最大10連続している箇所の個数、をそれぞれ数えます。これを例えば1万回繰り返して、最大n(2~10)連続する箇所が1万回の試行回数のうちで何回出てきたかを集計すれば、だいたいどれくらいの確率で最大n連続するものが出現するかが分かるのでは、という寸法です。 長くなりましたが知りたいのは、 『乱数を10個発生させ、例えば 1433444133とすると、 この中で数字が 最大2連続している箇所が2箇所 最大3連続している箇所が1箇所 最大4連続している箇所が0か所 ・・・ 最大10連続している箇所が0か所 のようなことが分かる関数』 で、できれば 『これを一万回繰り返して、各n(2~10)について集計してくれる関数』 をぜひ考えてほしいです!>< 皆様のアイディアを頂ければ嬉しいです。よろしくお願いします…!