連載第9回
|
![]() |
|
||||||||||||||||||||||||
| 確実だけれど…… |
最近、通販を利用したときのことです。いくつか注文した中の1つの入荷が遅れ、販売店がその品の入荷を待って商品一式を発送したため、在庫が十分にあった商品まで到着が遅れてしまいました。幸いそのときは大した遅れではなく、何の問題もなかったのですが、発送を確実にするために注文品一式をまとめるのも、客にとっては良しあしだなぁと感じました。
●確かなTCPのどこがいけないのでしょうか?
実は、正確な通信を実現するTCPにも、同じような性質があります。思い出してみてください。TCPは途中のデータが抜けたら、相手に再送を依頼し、抜けたデータが送られてくるのを待ちます。この間、先に到着したデータは、ずっと待たされているんです。
この様子を、データを受け取るプログラムから見ると「TCPって正しいデータを送ってくれるけど、いつデータが到着するかは予想できないなあ」ということになります。もし、プログラムの側から、相手からの再送を待っていることを見分けたり、それを止めさせることができれば話も違いますが、それもできません。
| シンプル&きびきびを求めて |
●TCPが犠牲にしたものとは?
TCPのウリである「確かな通信を実現すること」は、基本的にどんなアプリケーションにとっても都合がいいはずです。ここで考えてみたいのは、確かな通信を実現するために、何か犠牲になっているものがないか、ということです。もし犠牲になってしまったものがアプリケーションにとって必要な機能だったら、いくら確かな通信を実現するTCPといっても、あまりうれしくないでしょう。
TCPが犠牲にしているもの。その1つは到着したデータの引き渡しの遅れです。始めにも書いたとおり、データを本来の順序どおり取りそろえようとするTCPは、途中のデータが再送待ちになってしまうと、それ以降のデータをしばらく蓄えています。
この様子をTCPのウィンドウの動きから考えてみましょう。連載第5回「それでも不正確なデータを受け取ったらどうするの?」にその説明があります。図3の(3)で2番のデータを受信し損なうと、3番、4番、5番のデータを受信しても、ウィンドウを移動できません。(7)で2番を受信したら、やっとウィンドウを動かすことができます。プログラムがデータを受け取ることができるのもこのタイミングになります。そのため、3〜5番のデータは受け取ったタイミングよりかなり遅れてプログラムに引き渡されたことになります。この遅れは、再送の仕組みを使う以上は、どうしても起こってしまいます。
もし、プログラムが定期的にデータを受信することを期待しているとしたら、この待ち時間はとても厄介です。むしろ、データが多少抜けたり誤ったりしてもいいから、その後に続くデータをどんどん渡してくれる方がありがたい場合もあるでしょう。
TCPが犠牲にしているものの2つ目は、通信を始めるときや終えるときの手間です。正確な通信を目指すTCPは、通信を始めるとき、相手と通信のコントロールに必要な情報をやり取りします。また終えるときにも、送り残しデータが発生しないよう、慎重に通信を終了します。
正確な通信をするためには、この確認作業はとても大切です。もしこの準備作業をしなければ、相手が通信できる状態ではないのにデータを送ってしまう可能性もあり、正確な通信どころではありません。
しかし、非常にたくさんの相手からデータを受け取って処理しなければならない場合には、これらの手間もばかになりません。データの処理能力を高めるために、多少、通信の信頼性が下がっても、開始と終了の手間を減らしたいという場合もあるはずです。
データが定期的に届かない場合がある、通信の開始に手間が掛かる、といったTCPの特性が邪魔になる場合、こういった特性を持たないもう1つのトランスポートプロトコルUDPを使う方法があります。
今回取り上げるこのUDPは、複雑な処理で正確な通信を目指すTCPとは正反対に、シンプルな処理できびきび機能する通信を目指しています。UDPは再送などの仕組みを一切持っていません。そのため再送待ちのデータの遅れは起こらず、定期的にデータを受け取りやすくなります。また通信を始めるときの準備作業も不要で、いきなり相手にデータを送ることができます。
|
||||||
| 関連リンク | |
| 連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編) 連載:インターネット・プロトコル詳説 連載:ルータの仕組みを学ぼう ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜 |
|
TCP/IPアレルギー撲滅ドリル【下位レイヤ編】 バックナンバー
| 「Master of IP Network総合インデックス」 |
TechTargetジャパン
- 仮想ルータのいまとこれから (2013/4/25)
最近注目を集める「仮想ルータ」の実現方法を3つに分類。各方式ごとにメリットと最適な用途について考察します - アジャイルな開発が可能なSDN実装、「Trema」 (2013/4/17)
オープンソースのTremaを例に、自分の手で実際にOpenFlowを「いじってみる」ために必要な情報を解説していきます! - スループットの飛躍的向上を実現したMU-MIMO (2013/4/12)
無線LANスループットの飛躍的な増大を実現する鍵となった技術、MIMOとMU-MIMOについて解説します。 - 仮想化の足を引っ張らないネットワークの姿とは? (2013/4/10)
「クラウド&仮想化時代の新しいネットワークインフラを問う」と題したセミナーの模様を「SDN」というキーワードを軸に完全レポート
|
|
- 知らないと現場で困るバージョン管理システムの基礎
- Win 7/8のインストールUSBメモリをdiskpartで作る
- どうする、オープンデータ。
- Hud美さんと学ぶRedmine×Jenkinsの神アジャイル
- Server 2012でサーバの初期設定作業を行う
- アドビの本気度が詰まったAdobe Maxまとめ
- DB・要件定義が通じない? 顧客の知識レベルを探る
- 「初音ミク」や「ゆるキャラ」の商標権ってどうなの?
- 見落としがちな整数関連の脆弱性(前編)
- フェイルオーバー構成がサポートされたDHCPサービス
- データ・コレクションをバインドするには?
- iOSアプリのUIを爆速で激ヤバにする2つのライブラリ
キャリアアップ
- - PR -
イベントカレンダー
- - PR -
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
「ITmedia マーケティング」新着記事
ソーシャルメディア対応CRMと従来型CRM、3つの違いとは?
現在中小企業のビジネスコミュニティの中で、「最新型のソーシャルCRM対従来型CRMのどち...
OWASYS、Twitter管理クラウドサービス「ツイ助。」に、つぶやきクリック数を解析する新機能を追加
OWASYSは5月20日、同社が開発/運営するTwitter管理クラウドサービス「ツイ助。」に、つ...
CyberZ、スマホ広告効果測定ツール「Force Operation X」、世界250カ国対応のグローバルワンSDK提供開始
サイバーエージェントの連結子会社であるCyberZは5月16日、スマートフォン広告向けソリュ...

