ビジネス開発者必須講座

P2P/ブロードバンド時代の新・TCP/IP 入門
村上 健一郎

第6回

法政大学ビジネススクール イノベーション・マネジメント研究科 教授

なぜ宣伝どおりのスピードが出ない？

−その 1 −

7 月号では、複雑な IP/TCP ヘッダーの中で最も重要な IP アドレスと TCP ポートについて説明しました。また、IP アドレスをもとに、パケットの中継をするルーターがどのような処理を行っているのかについても明らかにしました。
今回と次回は、TCP ヘッダーが絡む通信速度の上限について 2 回に分けて考えてみます。

[Q1]
光ファイバーのインターネット接続サービスに加入したのに、なぜ、宣伝どおりのスピードが出ないのでしょうか？ 速度がベストエフォートなら、料金の支払いをベストエフォートにしたいのですが……。パソコンのパラメーター設定にも原因があると聞いたんですが……。

車ではなく道路のほうが悪いことだってあ（図ではサーバー）に到着するのですが、ります。普通のドライバーや車では、パそのデータが到着したことを知らせる「確リ・ダカールラリーのようなとんでもない路認応答」パケットが逆に送られてくるので面には耐えられないでしょう。

す。確認応答があって初めて、データがこのように考えてみると、速度が出ない相手で確実に受信されたことがわかりま

原因はさまざまで、その原因も時刻や状す。もし、ある時間以内に確認応答のパ況によって変化することがわかります。

ケットが送信側のコンピュータに到着しなネットワークの場合も同じです。ここでは、ければ、送信側のコンピュータは、受信側ネットワークのスピードが抑えられる原因のコンピュータに誤りが発生したものと考をトランスポートレイヤーとインターネットレえて、パケットを再転送します。

イヤーに着目して分析していきましょう。
まず、ネットワーク全体の概要を頭に描きましょう。図 1（a）がそれです。ここでの[A1]

データの転送の仕組みを見てみよう

構成要素はたった 3 つ、通信を行うペア（1 対）のコンピュータと、その間でパケッ

実は、第 5 回で説明した TCP ヘッダー

トを中継するインターネットです。この図をの中で重要な 3 つの領域について、まだ見ると単にコンピュータ同士が線でつな説明していませんでした。それは、シーケ料金を払って入った高速道路だって、がっているとしか思えません。ところが、ンス番号（順序番号）、ACK（確認応答）

渋滞の時は歩いたほうが速いということ

TCP のパケットの流れを考えると、実は、番号、それにウィンドウサイズです。

「確認応答」は相手に届いた印がしばしばです。また、最高時速 70km

パケットの往復（ラウンドトリップ）
を考え

まず、TCP では、送信側は個々のデーの ポンコツ 車 で は 、高 速 道 路 を 時 速なければならないのです。これが図 1（b）

タの「バイトごと」に識別番号を付けます。

100km で走るなんて無理ですよね。一です。

これがシーケンス番号です。また、それを方、最高時速 320km のフェラーリで豪速送信側のコンピュータ（図ではパソコン）

受信したコンピュータの TCP 側では、受を楽しむと、後ろから赤色灯のついた車からのデータの入ったパケットは、イン理したバイトの位置を送信側に示すためが追いかけてくること間違いありません。

ターネットを通って受信側のコンピュータ（つまり、何番目までのバイトを受信したか100 │ INTERNET magazine │ 2005 │ 08 │インターネットマガジン／株式会社インプレスR&D©1994-2007 Impress R&D

を知らせるため）、受信したデータの「最きましたが、2 で許可されたウィンドウサ送信できません。TCP では、このような後 の バイトに 付 けられ たシーケンス番

イズ（2048 バイト）を 3 で使い切ってしデータや確認応答パケットが破棄された号＋ 1」の番号、言い換えると、次に受信まったので、3 に対応する確認応答 5

場合に備えて、データパケットの送信時にを期待しているシーケンス番号を、確認が受信されない限りこれ以上のデータはタイマーを起動しておきます。ある時間以応答パケットの ACK 番号で伝えます。このとき、自分が現在受信できる余裕のあ（a）インターネットの構成るバイト数をウィンドウサイズとして一緒に伝えます。これで、ACK 番号にウィンドウサイズを足した番号までのデータの送信

インターネットサーバー

パソコンを許可したことになります。
たとえば、図 2 の 1 では、シーケンス（b）パケットのラウンドトリップ（往復）データ送信

番号が 0（seq ＝ 0）、データ長が 1024 バイト（len ＝ 1024）のパケットを送っています。
このパケットのデータ部にある最後のバ
イトのシーケンス番号は 1023 ということに

確認応答

サーバー

パソコン

図 1 インターネットの構成と TCP の確認応答なります。1 に対し、受信側では、次に受信を期待する番号 1024（＝ 1023 ＋ 1）
を送信側

ACK 番号とした確認応答パケット 2 を受信側送 っています。このウィンドウサイズは2048 バイト（win ＝ 2048）です。受信側では、これだけの長さのデータ（2048 バイト）

データseq＝0,len＝10241を受信する余裕があるということです。逆に、この長さまでは受信側の確認応答（ACK）なしに、送信側はデータパケットを2ack＝1送ることができます。
送信側では、2 の ACK 番号に対応しデータたシーケンス番号以降のデータを、パケッ

データ

seq＝1seq＝2

ト 3 で 1024 バイト分送っています。しか024,len＝1024

確認応答
n＝102445

パケット破棄シーケンス番号 2048（＝ 1024 ＋ 1024）から 1024 バイトのデータをパケット 4 で

24
in＝10072,w

確認応答

6タイムアウト発生

データ再転送

seq＝1024,len＝1024

データ再転送7
seq＝2048,le

確認応答

8n＝1024に次のパケットも送ることができるので、9ack＝2転送速度を向上させることができます。
としてそれぞれ確認応答 5 と 6 を送りin＝2048,w

ack＝3送っています。このように、確認応答なし

受信側では、3 と 4 に対する確認応答

048

ack＝2

受信側は 2048 バイトを受信する余裕を持っている）。それを待つことなく、次の確認応答

3048,leし、3 に対する受信側からの確認応答を待つ必要はありません（前述したように、

48
in＝20024,w

48
in＝20048,w

データ
seq＝3072,len＝102
424＝102,win
307
ack＝

確認応答返しています。
ここで、5 が転送中にエラーが発生してパケットの破棄が起こり、送信側で受信できなかったと仮定しましょう。送信側（注）ここで、seqはシーケンス番号、ackはACK番号、lenはデータ長、winはウィンドウサイズを示す。

では、4 に対する確認応答 6 は受信で
図 2 TCP データの転送の様子

インターネットマガジン／株式会社インプレスR&D

P2P/ブロードバンド時代の新・TCP/IP
入門 │ INTERNET magazine │ 2005 │ 08 │ 101©1994-2007 Impress
R&D内にそれに対応する確認応答が受信できとです。適切な値というものは、通信する（修正プログラム）の中で、SP3 以降でのなかった場合、データもしくは確認応答パ相手がどのくらい離れているか（これはラウィンドウサイズの 64K バイトを元の 17520

ケットが破棄されたものと考え、再送信しウンドトリップ時間に影響する）にもよりまバイトに戻したところ、SP3 以降で向上します。これが、図 2 の 7と8 です。TCP

すし、ネットワークがどのくらい混雑していていた転送速度が元に戻って 1/4 ほどにでは、確認応答がなかったシーケンス番るかによっても違います。

低下する場合が発生したのです。転送速号（この場合、seq ＝ 1024）以降を全部送り直すことにもなっているので、すでに確度 T（bps）
は、ウィンドウサイズ（byte）に8最大ウィンドウサイズの悩み認された 4 についても 8 で再送信されをかけてビット単位に直したものを遅延（秒）で割った値なので、同じ遅延でも悩みの一例が Windows 2000 のウィンています。

ウィンドウサイズが小さくなると転送速度以上のように、TCP の転送は、確認応ドウサイズでした。この SP1（Service答を受信しなくても送信側でデータを送Pack 1）と SP2 では最大ウィンドウサイズ

このように、万能の値を決めるというのることのできるウィンドウサイズの通知といは 17520 バイト（1460 バイト長のデータ 12は難しいということです。そこで、ネットう仕組みを持つため、パケットごとに確認個 分 ）でした 。Service Packとは Win-ワークの状況を判断して自動的にウィンド応答を待つ必要がなく、転送効率を向上

dows オペレーティングシステムの更新のこウサイズの最大値を制御するための輻輳させることができます。このウィンドウサイとで、機能追加、機能の変更、バグの修ウィンドウというものも利用されています。

ズが大きいほど転送効率がよくなります。

正などがなされたものです。それぞれのしかし、この効果が出ない状況もいくつ更新を識別するために、リリースされるごかあります。たとえば、転送遅延が大きすとに SP1、2、3 ……のように識別番号がぎて、次のウィンドウサイズを知らせる確更新されていきます。現在の最新の更新

認応答パケットがなかなか到着しないとは、SP4 になっています。

が低下してしまいます（図 3）。

輻輳ウィンドウの巧妙な仕組み
実は、送信側では、受信側から送られてきたウィンドウサイズだけでなく、もう1きです。そうであれば、非常に大きいウィ

SP3 と SP4 では、転送速度を向上させつ、輻輳ウィンドウというものを使用してンドウサイズを知らせておけば済みそうるため、たとえば、100Mbps のネットワーネットワークの混雑を回避しています。

ですが、それがかえって逆効果を生む場

クでは 64K バイトに設定されるようになり確認応答で通知されたウィンドウサイズ合もあります。

ました。しかし、バースト的に（瞬時に大と、この輻輳ウィンドウとを比較し、どちらウィンドウサイズが大きいと、あまりに多量の）パケットが送られた場合、ネットワーか小さいほうをウィンドウサイズとして採用

くのパケットが一度に送られてしまい、輻クの一時的な混雑によって、パケットが捨しています。この輻輳ウィンドウは、実に輳（混雑）が発生してルーターでパケットてられ、かえって再転送が発生して転送巧妙に決定されています。まず、最初はが捨てられることがあるのです。つまり、速度が低下することがあったのです。

送るパケットを 1 パケット長（最大の TCP

そこで特定の脆弱性に対応するパッチ

一概には適切な値がわからないというこセグメント長）分だけにし、相手から確認応答が返るごとに、その 2 倍に拡大していきます。もし、相手からのウィンドウサイ100

転送速度（Mbps）ズが小さければ、そこでウィンドウサイズの拡大は止まります。これは、ネットワー
クの余裕のほうが、受信側コンピュータの大伝
送速度
小受信バッファーの余裕よりも大きいことを意味します。ですから、単に受信側から最大ウィンドウサイズが64Kバイトの場合（ウィンドウサイズ大）のウィンドウサイズを考慮すればよいことになります。

最大ウィンドウサイズが16Kバイトの場合（ウィンドウサイズ小）

それでは、ネットワークが混雑していた
往復遅延（ms）

0100
小

遅延時間

200
大

（注1）ウィンドウサイズをオリジナルの64Kバイト以上に拡大できるTCP Window Scale Optionというものがあるが、これはまた別の機会に紹介する。
（注2）スループット（bps）は、ウィンドウサイズ×8/ RTTで計算できる。ここで、ウィンドウサイズはバイト単位、RTTは秒単位である。

場合はどうなるのでしょうか？

輻輳ウィ

ンドウのサイズがだんだん大きくなっていくと、受信側からの確認応答なしに送信側が送ることのできるパケットの数も大きくなっていきます。そして、ついにネット図 3 遅延（往復の時間）と転送速度との関係

102 │ INTERNET magazine │ 2005 │ 08 │インターネットマガジン／株式会社インプレスR&D©1994-2007 Impress R&D

ワークの限界に近づいて輻輳が始まると、からです。これでは、平等になりません。

す。これは、サーバーに特定のユーザールーターはパケットを捨てます。このこと

ところが、世の中には、頭の良い人がから一度にウェブの閲覧要求が押し寄せは、相手からの確認応答パケットが返っています。待ち行列にあるパケットにランダないように、サーバーの前などに接続しこないことで、送信側も気づきます。このムにピストルを発射して当たったパケットておくものです。ユーザー側の回線がいとき、送信側では、ネットワークが混雑しを 捨 てようというの で す。これを R E D

くら速くなろうとも、これで帯域制限（速度ていて、その能力以上にパケットを送り込（Random Early Drop）と呼びます。同じ制限）されていたのでは、それ以上の転んでしまったと考え、輻輳ウィンドウサイズコンピュータからのパケットがたくさん待送速度の向上は見込めません。このようを小さくします。しかし、いつしかネットち行列に入っている場合には、その数にな装置には、帯域制限の方法にいくつかワークに余裕ができて、より多くのパケッ比例して玉の当たる確率が高くなります。のバリエーションがあります。1 つは、確トが送れるようになるかもしれません。そ逆にパケットが少ない場合、玉の当たる認応答パケットに含まれるウィンドウサイズ

こで、再度、次第に輻輳ウィンドウサイズ確率は低くなります。ですから、公正さがを小さく変更してしまうものです。もう1 つを大きくすることを行います。この様子を増すというわけです（図 5）。つまり、これは、ルーターのもぐら叩きと同じように、図 4 に示します。

まで行儀よくネットワークを使用していたパケットを捨てることで転送元からのパ要するに、ちょっと頭を出してみてルー人には、転送速度の向上という利益をもケットにブレーキをかけるものです。

ターに叩かれたら頭を引っ込めるというたらします。もっとも、確率的に決めるわ＊動作を繰り返すのです。こうして、何も測けですから、流れ玉に当たって損をする

さて、次回（第 7 回）は、今回説明した定手段がないにもかかわらず、TCP はパケットもあるわけですが……。

ウィンドウサイズと同様に、ネットワークレネットワークの状態を継続的に観測しま

ルーター以外にも、このような動作をすす。そして、システム全体が最適な利用率るものがあります。それは、「帯域制御装になるように制御し、しかも、それによっ置」（伝送速度の制御装置）というものでイヤーで効率を左右する「最大 IP パケット長」について考えてみます。て、自分も最適な速度で通信ができるように努力しているのです。
輻輳ウィンドウサイズ
パケット損失ルーターのもぐら叩き

パケット損失パケット損失ネットワークの限界（輻輳開始点）

すでに述べたパケットの破棄は、ルーターからしてみればもぐら叩きのようなものです。このもぐら叩きにも工夫があるのです。
ルーターは、受信バッファーがパケットであふれそうになると、その中からパ時間

ケットを捨てます。簡単な方法は、あるパケットがルーターで受信されてルーターの図 4 輻輳ウィンドウの時間経過バッファーがある値を超えたとき、そのパケットを捨てるということです。この方法
では、一番後に入ってきたパケットを捨てルーターることになります。これを TD（Tail Drop）と呼びます。しかし、これは平等にネット

Tail Drop（最後のパケットを捨てる）ワークを使用するという点では問題があります。なぜならば、あるコンピュータからのパケットが順番を待って行列して（こルーター

れを「待ち行列」という）たくさん並んでいても、それが捨てられずに、とにかく最後Random Early Drop（ランダムに選択して落とす）に受信されたパケットが捨てられている
図 5 TD（Tail Drop）と RED（Random Early Drop）

インターネットマガジン／株式会社インプレスR&D

P2P/ブロードバンド時代の新・TCP/IP
入門 │ INTERNET magazine │ 2005 │ 08 │ 103©1994-2007 Impress
R&D［インターネットマガジン バックナンバーアーカイブ］ ご利用上の注意
この PDF ファイルは、株式会社インプレス R&D（株式会社インプレスから分割）が 1994 年～2006 年まで発行した月刊誌『インターネットマガジン』の誌面を PDF 化し、「インターネットマガジン バックナンバーアーカイブ」として以下のウェブサイト「All-in-One INTERNET magazine 2.0」で公開しているものです。

http://i.impressRD.jp/bn
このファイルをご利用いただくにあたり、下記の注意事項を必ずお読みください。
z 記載されている内容（技術解説、URL、団体・企業名、商品名、価格、プレゼント募集、アンケートなど）は発行当時のものです。
z 収録されている内容は著作権法上の保護を受けています。著作権はそれぞれの記事の著作者（執筆者、写真の撮影者、イラストの作成者、編集部など）が保持しています。
z 著作者から許諾が得られなかった著作物は収録されていない場合があります。
z このファイルやその内容を改変したり、商用を目的として再利用することはできません。あくまで個人や企業の非商用利用での閲覧、複製、送信に限られます。
z 収録されている内容を何らかの媒体に引用としてご利用する際は、出典として媒体名および月号、該当ページ番号、発行元（株式会社インプレス R&D）、コピーライトなどの情報をご明記ください。
z オリジナルの雑誌の発行時点では、株式会社インプレス R&D（当時は株式会社インプレス）と著作権者は内容が正確なものであるように最大限に努めましたが、すべての情報が完全に正確であることは保証できません。このファイルの内容に起因する直接的および間接的な損害に対して、一切の責任を負いません。お客様個人の責任においてご利用ください。

このファイルに関するお問い合わせ先
All-in-One INTERNET magazine 編集部
im-info@impress.co.jp
Copyright © 1994-2007 Impress R&D, an Impress Group company. All rights reserved.