ここから本文です

TCPについて TCPは「信頼性のあるストリーム転送」を実現しているといわれます...

spe********さん

2010/1/1510:34:13

TCPについて

TCPは「信頼性のあるストリーム転送」を実現しているといわれます。この意味をIPの通信方法を踏まえて説明して下さい。

この問題がどうしても解らないので親切な方教えて下さい。

閲覧数:
1,070
回答数:
3

違反報告

ベストアンサーに選ばれた回答

mas********さん

2010/1/1510:58:45

簡単に説明します。

TCPは信頼性重視のため、データが確実に受信できるまでなんどでも再送要求を出します。
そのため、通信は正確に行われますが、速度は状況により遅くなります。
例えばフリーウェアのダウンロードではファイルの確実性が求められますのでTCP通信を使います。

それにたいして、UDPは信頼性無視の速度重視です。そのため、データが完全に受信されなくても先へ進んでしまいます。
例えば動画の再生においては、多少コマ落ちしても再生速度の方が優先されるのでUDP通信を使います。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

mis********さん

2010/1/1602:00:44

多少ネットワークを勉強されている方と思います。

TCPやUDPってのは、4th LAYER です。
そして、IPというのは、3rd LAYERです。

なので、TCP/IPと呼びますよね?
それと同じように呼ぶのであれば、UDPもUDP/IPみたいなイメージです。

これは、レイヤーの仕組みと、それによって構成されるフレームについてを勉強されると、
イメージがわかりやすくなります。

上位層アプリケーションで作成されたデータ
⇒TCPで処理するか?UDPで処理するか?選びます。
⇒そして、そのデータにIPアドレスをくっつけて、相手先に送信するのです。

っていうイメージです。

■TCPってのは、送信中にデータがたとえば、きちっと届かなかった場合、
何度でも届かなかった部分のデータを、もらいにゆきます。
なので、確実性がある。=数字の集計(たとえば銀行のデータとか)、
ひとつでもパケットがなくってしまったら、とても困るデータ送信に用いられます。

■UDPってのは、TCPに比べてとてもアバウトです。
たとえば、音声データは、途中で少しデータが落ちてしまっても、
とりあえず、声は届きます。ちょっと音質が悪くなっても、聞こえるでしょう?
データの密度が100%でなくても、聞き取れるのです。

また、画像データ。これも同じ。100のデータで送信して、相手に80しか届かなくても、
画質(解像度の密度)はおちるけれど、とりあえず、画像全体は表示可能です。

なので、いちいち、100%のデータがきちっと届かなくても、さほど重要な問題ではないのです。

それよりもUDPが優先しているのは、別のポイントにあります。

TCPはひとつでもデータが落ちたら困る、なので、その分何度もデータチェックがある
=送信に時間がかかるのです。

UDPは、アバウトな送信のかわり、一度に大量のデータを送信できます。
そして、いちいちチェックをしないで、どんどんデータを送りこむので、
リアルタイム通信に向いているのです。

ビデオ画像や、音声通信なんかは、リアルタイムで早く届かないと困りますよね?
たとえば、映画配信。画像と音声が遅れたら困ります。

こんな時、UDPは処理速度を優先するので、便利なのです。

こうやって、UDPとTCPは使い分けされています。

身近なところで言うと、メールとか、文字送信はほとんどがTCPで通信していますが、
IP電話とかは、UDPで通信していることが多いです。
上記の理由からです。

b_f********さん

2010/1/1515:31:40

IPの通信はパケット通信です。

ようするに通信データをどんどん小さい箱に分解して、箱単位で伝送するという形ですね。
その箱がパケットです。
あくまで箱単位で送信するので、送信側でA,B,Cという順番に箱を送ったとしても、受信側にはB,A,Cなどという順番で届く場合もありますし、Bだけ途中で無くなってしまってA,Cしか届かないなんてことも起こります。

で、TCPの場合は、この箱に番号を振って、順序と欠落を保証します。
送信側では、1:A,2:B,3:Cとナンバリングしたうえで箱を送信します。
受信側は、2:B,1:A,3:Cという順番で受け取ったとしても、番号順に並び変えることで、正しいデータが再現できますね。
また、2:Bが欠損した場合は、3:Cが受信されているのに2:Bがないのはおかしいので、2:Bをもう一度送ってくれと頼むことができます。

こんな感じで、TCPはデータの完全性を保証した通信ができるわけです。
その代わり、順番を整理したり再送要求を送ったりで余計な通信が増えますし、時間もかかります。

質問にはありませんが、UDPはこういう面倒なことを一切やらず、IPで送られてくる箱=パケットをそのままアプリケーションに渡しますから、アプリケーション側で通信データをきちんと適切に処理しないとならなくなるわけです。
その代わり、速い・負荷が小さい・1対多通信も可能といった特徴が生まれますから、動画のストリーミングとか、VoIPによる電話とかに良く使われるわけですね。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる