H261のファイル転送で、TCPとUDPの速度比較を行っていますが、UDPの転送レートがTCPの半分(10BASE-Tの環境でTCPはほぼ10Mbps、UDPは5Mbps)しかでません。
この原因について心当りのある方があれば教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

元々TCPとUDPではプロトコルの性質が違いますから、


当然の結果なのではないでしょうか?
TCPはコネクション型、ストリーム型と呼ばれ、
フロー制御や再送信の管理を行い、
信頼性のある高速データ通信を行うことができます。
これに対してUDPはコネクションレス型で、
信頼性の確保は上位アプリケーションで行う必要があります。
UDPの時の上位がどのような処理を行っているかによるかもしれませんが、
UDPは通常高速通信には向きません。

この回答への補足

ありがとうございました。
ところで一般的には,TCPは信頼性は高いが速度は遅く,UDPは,動画伝送などに使用されている様に,信頼性は低いが速度は速い,と言われていると思いますが,速度をメジャーリングするツール(ソフト)やパソコンの性能,及びLANカードの種類などに依存する場合があるのでしょうか?
知っておられたら教えて下さい。

補足日時:2001/12/13 13:22
    • good
    • 0

すみません、よくわかってないのにいいかげんな発言をしてしまいました。


TCPは自分でフロー制御、再送などの処理をしてしまうので、
例えば動画のように、少しぐらいコマ落ちしてもいいから
リアルタイム性を大切にしたい、という場合はUDPの方が向いている(速い?)のですね、きっと。

ところで、UDPのパケットサイズはどれくらいになってますか?
UDPが512byteになっていて、TCPの半分くらいになってて、
そのせいで遅かったりしないでしょうかね。

速度測定ツールなどの話は、申し訳無いですがわかりません。
    • good
    • 0
この回答へのお礼

ありがとうございました。パケットサイズの件,確認してみます。

お礼日時:2001/12/13 16:37

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qhttpによる通信とTCP/IPによる通信

について両者の違いを教えてください
それぞれどのようなものなのでしょうか?

Aベストアンサー

OSI参照モデルというのがありまして
・アプリケーション層
・プレゼンテーション層
・セッション層(HTTP、FTP)
・トランスポート層(TCP、UDP)
・ネットワーク層(IP)
・データーリンク層
・物理層

などとなっています。
つまりTCP/IP上で動くプロトコルがFTPやhttpなわけです。
TCP/IPで繋がって初めてHTTPの仕組みが利用でき、gunmanさんがwww.yahoo.co.jpやエッチなサイトを見れるということです。

QUDPとTCPについて

ファイアーウォールのソフト(ルータなど)の設定をしようとすると、UDPとTCPを選ぶ所が出てきたりします。
UDPとTCPについては調べてみたりしたのですが、結局の所、設定ではどちらを選択するのか私では迷う事があります^_^;
迷った場合、とりあえずはTCPを選んでいれば問題ないでしょうか?
場合によっては絶対、UDPを選んばないと、「まずいよ!」って事もあるでしょうか?

ご存知のかたいらっしゃいましたら、どうぞよろしくお願い致します

Aベストアンサー

防ぎたい(もしくは通過させたい)アプリケーションによります。

各アプリケーション(FTP、Telnet、SMTP等)はTCPで動作するものとUDPで動作するものがあります。ですからそれらに適応した方を防ぐ(もしくは通過)させればよいです。

とにかく防ぎたいなら同じポート番号のTCPとUDPの両方を防げばよいです。ただしそれによって使いたいアプリケーションが使えなくなる可能性もあるので注意してください。

Qネットワーク切断を検出するには?

Linux上で動作するTCP/IP通信アプリケーションが、LANケーブル抜けによるネットワーク切断を検知するにはどうしたらよいのでしょうか?

外部からコネクションを確立した後にケーブルが抜けたとき、Linux側でソケットをcloseしたいのです。今はこれができておらず、接続状態のまま(netstatでみるとESTABLISHED)になっています。複数の接続を許していないので、ケーブルを繋いだあとにTCP/IPで再接続できません。

試したこと
ソケットに対するioctl(2)でifreq.ifr_flagsのIFF_UPフラグをみたけど検知不可
切断時にselect(2)がエラーリターンするかと思ったがだめ

ケーブルが抜けたとき、カーネルが eth0: link down とログに出力するのでどこか(/proc , /sys以下)を参照すればよさそうな気がするんですが…

Aベストアンサー

HP-UXなので微妙に異なる可能性はありますが、こんな感じです。
http://docs.hp.com/ja/B2355-60129/TCP.7P.html

QTCP/UDPポートのバッティング

BフレッツでCTUを通して接続しています。
TCPを使うソフトとUDPを使うソフトがあるのですが、両方に同じポートを指定して同時使用するとバッティングしますか?

Aベストアンサー

同じポート番号であってもTCPとUDPは別プロトコルです。TCPの接続要求に対してUDPの待受ポートが応答したり,その逆の現象が起こったりはしません。

QTCP ロスがひどい時の対応

Win32 C++ でTCP通信をさせています。
パケロスがひどい場合、connectに時間が掛かったり、
接続後send,recv待ちで切断エラーになることが多いようなのですが、
リトライをするにも切断エラーなどを判断するまでに10秒ほどかかったりするのを早く判断して、
sendし直し、またはconnectし直すにはどのように実装すれば可能でしょうか?
よろしく御願いします。

Aベストアンサー

原因を取り除くのが最優先だわな。
可能性としては
1.回線の物理的障害
2.トラフィックのオーバーロード
3.サーバー自体の異常

すべての正常なサーバーや端末、ルータにpingを飛ばして
応答がすぐに返されるものとそうでないものがあれば1の可能性がある。
そのサーバーに向かう回線に異常がある。
回線がNTTなど外部のものなら、調査をその会社に依頼する必要がある。

2.の場合もえてして多い。
同一セグメント内で他のユーザがLAN回線を通して、のべつまくなしCD等のコピーを
やってたりとか。
この時はそのようなLANの使用をやめてもらうか、
スイッチングハブ等をあらたに導入するかですな。

3.の場合はサーバーの管理者に問い合わせるべし。

QTCPとUDPについて

通常の問い合わせをUDP では
なくTCPを使った場合、どのような影響が出るんでしょうか??

Aベストアンサー

>データ転送です。

なんの…です?
「問い合わせ」とあって、通常UDPを使用…というのですぐに浮かぶのはDNSですが……。

質問がおおざっぱ過ぎるので回答側も困るのでは……。
まぁ、そういうのは放置されて回答が付かない。なんて場合も多々ありますが。
# 特にこういうサイトでは。
# 回答側は気が向いたときに回答しているようなものですし、回答しなければならない義務もありませんからね。


プロトコルとか無視してUDPからTCPにした場合だと…。
・コネクションを張る必要がある。
・データの内容は保証されるが再送とかしている場合があるので遅いことがある。
・ドライバ側の実装がその分複雑。
とかでしょうかねぇ。(「TCP UDP 違い」辺りで検索すれば出てくるでしょう)
UDPだと同じ内容が別の経路から届く場合もある。
らしいので受け取り側はその辺りの処理もする必要がありますし、届かない。なんて場合の処理も必要です。

QTCP通信

OS:Win2000、VisualBasic.netで開発しています。

現在TCP通信のプログラムを製造しています。
TCPサーバとTCPクライアントのテストアプリケーションを作成し、接続テストを行っているのですが、
サーバとクライアントの接続、データ送受信の確認はできました。
しかし、一度クライアント側から接続を切断(ソケットを消去)し、
再びソケットを生成してコネクト要求を出しても接続が確立できません。
このときサーバ側はなにも操作していません。
終始接続待機状態にしてあります。
ソースがないと分かりにくいかもしれませんが、
何か思い当たることがある方、アドバイスよろしくお願いします。

Aベストアンサー

winsockコントロールをご使用であれば、
昔(VB5)、リモートポートを
再設定してあげないと
再接続出来なかったことが有ります。

Q100MbpsのイーサネットLANに10Base-Tのアダプタ

100MbpsのイーサネットLANに10Base-Tのアダプタは使えますか?

Aベストアンサー

はじめまして。
10Base-Tのアダプタに接続するLANケーブルの先に
つながっているHUB(もしくはスィッチ)が100/10baseの
自動検知・切替(オートネゴ)に対応していましたら
100Mイーサに乗り入れられます。
ちなみにスピードはそのPCのアダプタになりますので
10Mbpsになります。

QHTTPアクセスの処理

HTTPで「http://www.yahoo.co.jp」にアクセスしようとした場合、どのような内部処理が行われるのでしょうか?

大まか流れとして
1・DNSによる名前解決
2・TCPセッションの確立
3・HTTP要求
と考えてます。(ARP解決は省略します)

1・DNSによる名前解決
プロトコルスタックの流れだとHTTP→DNS→TCP→IP→Ethernetでネットワークに送信され、応答がEthernet→IP→TCP→DNSになると思います。

2・TCPセッションの確立(省略)
SYN→SYN ACK→ACK

3・HTTP要求(省略)
HTTP GET→HTTP 200 OK

わからない部分は1・DNSによる名前解決が終わったあとどうやって2・TCPセッションの確立に移行するのかということです。
(同様に2・TCPセッションの確立が終わったあとに3・HTTP要求)

Aベストアンサー

アプリケーションレベルでの手順で良いかな。
DNSを使うかどうかは設定次第だと思うけど、名前解決は今だとgetaddrinfoで行うかな。
# http://www.linux.or.jp/JM/html/LDP_man-pages/man3/getaddrinfo.3.html

これでソケットを作成するのに必要なIPアドレスやポート情報が得られるから、これを使ってsocketでクライアントソケットを作り、connectでTCPセッションを開始する。

HTTPはセッションが繋がったソケットにリクエストをwriteで書き込んで、レスポンスをreadで読み込むだけ。

アプリケーションとしては上記のライブラリ関数やシステムコールを順に呼ぶだけです。名前解決が終わらないとgetaddrinfoは返らないし、TCPセッションが確立しないとconnectは返らないので、返ったら(エラーチェックは必要ですが)次へ進めば良いです。参考URLにHTTPではないですがアクセス手順のサンプルがあるので参考にしてください。

参考URL:http://www.linux.or.jp/JM/html/LDP_man-pages/man3/getaddrinfo.3.html

アプリケーションレベルでの手順で良いかな。
DNSを使うかどうかは設定次第だと思うけど、名前解決は今だとgetaddrinfoで行うかな。
# http://www.linux.or.jp/JM/html/LDP_man-pages/man3/getaddrinfo.3.html

これでソケットを作成するのに必要なIPアドレスやポート情報が得られるから、これを使ってsocketでクライアントソケットを作り、connectでTCPセッションを開始する。

HTTPはセッションが繋がったソケットにリクエストをwriteで書き込んで、レスポンスをreadで読み込むだけ。

アプリケーション...続きを読む

QTNCの ADSL 4M(gooスピードテスト 1M)から同じくTMCの光200M(gooスピードテスト 50M)変更しました、

TNCの ADSL 4M(gooスピードテスト 1M)から同じくTMCの光200M(gooスピードテスト 50M)変更しました、
体感速度は50倍とはいかず3倍ぐらいでした、
200Mは¥6,200-ですがキャンペーンで1年間¥4,200-です、
1年後、光8Mに変更すれば、以降も¥4,200-ということです、
ようするに、10M以上200までは体感スピードはあまりかわらず8M間で落とさないと、¥2,000の差が出てこないということですか?
説明が分りずらくててすみません。

Aベストアンサー

体感速度は個人差があるので評価は難しいですよ。
ましてやコスト比較となると個人の自由だと思います。
質問者さんがそう思うのならそれで良いと思いますけど。


人気Q&Aランキング

おすすめ情報