• ベストアンサー

TCP ウィンドウサイズ

大学での問題なのですが 「TCPエンティティ(実体)は、相手から教えてもらったウインドウサイズを無視して、大きなデータを送信した。通常このデータはバッファ溢れを起こす(取りこぼし)が、たまたま、相手側のアプリケーションの処理が進み、受信データよりもバッファの空き容量が大きくなった場合は、適切に相手のアプリケーションによって処理してもらえる。」 この記述は正しいか間違いかという問題なのですが、調べてもウィンドウサイズを無視するということに関する資料が見つからず、迷っています。 詳しい方、教えてください。

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

  • ベストアンサー
  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.1

んーと、質問のポイントが「相手側のアプリケーションの処理が進み、受信データよりもバッファの空き容量が大きくなった場合は、適切に相手のアプリケーションによって処理してもらえる。」ということであれば一応正しいんでしょうねぇ。 自信ないけど、矛盾はないように思えます。 もっとも、送信Windowを無視してデータを送りつけるノードははた迷惑なのでとっとと撤去してほしいところですけど。

pray008
質問者

お礼

ありがとうございます。 そもそもTCPは無視するのか? と思い、迷っていました。 そのように考えれば確かに正しいですね。 本当にありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • TCPの通信において、受信バッファから上位アプリケーションへデータを渡

    TCPの通信において、受信バッファから上位アプリケーションへデータを渡すタイミングについて教えてください。 PSHフラグが立っているデータを受信すると上位アプリケーションへ渡すというのは学びましたが、その他どのようなタイミングで上位アプリケーションへデータを渡すのかわからなかったため質問させていただきました。 例えば、PSHフラグのデータが来る前に受信バッファがいっぱいになってしまったら、受信側で勝手にデータを渡してしまうのでしょうか。(それともバッファがいっぱいになると送信側がPSHフラグを送ってくれるのでしょうか。でもゼロウィンドウプローブを考えるとそれもない気がします。) また、TCPでの通信部分なため、このあたりの動作に関してはアプリケーションごとではなくOSに依存するのかなと思っており、アプリケーションとしてはどのような塊(タイミング)でデータを受信してもちゃんと処理できるのかなというのも気になります。 「現在はPSHフラグを無視している」というのもネット上で見かけましたが、そうするとますますOSの独断でデータをアプリケーションに渡しているのかなと思いました。 このあたりがよくわからなかったので、ご教授願えればと思います。 ※スライディングウィンドウ、ゼロウィンドウについてはネットですぐ見つかる程度の範囲では理解しているつもりです。

  • windowsのリアルタイム処理について

    下記の不具合があり困っております。 画像入力ボードを開発し、数msごとに数kbの画像をwindowsのドライバへ取得割り込みをかけております。ドライバはそのデータを取り込みリングバッファに貯めていきます。アプリケーションはそのリングバッファのデータをリングバッファがあふれないように定期的に取り込み、画像認識しながら画面に表示します。このときパソコンに他のアプリが走ったときに画像が乱れます。このときCPU負荷率は80%程度になっておりリングバッファから抜いたデータが異常になっております。ドライバがPCIの割り込みに応答して画像データを取得しリングバッファを更新するのがまずいように思います。 アプリケーションがドライバから受け取ったデータを検証すると異常なデータが入っていることからドライバの動作がおかしいことまではわかりました。 そもそもリアルタイム処理に無理があるのでしょうか? 何か良い対策はないでしょうか?もちろんCPU負荷率が小さいときは正常に稼働しています。

  • TCPとEthernetのデータの分割の役割

    TCPのウィンドウ/フロー制御とethernetのフレームの分割についてご質問です。 書籍を読んでいると TCPはウィンドウ/フロー制御で、一度に送るセグメントサイズを調整しているとあります。 しかしEthernetもフレーム分割を行うとあります。 そうなると、どちらのプロコトルが主体的にデータを分割するのか本を読んでもいまいちわかりません。 例えば、TCPがウィンドウサイズを4500byteにして一度にデータを送信すると データリンク層のEthernetで、4500byteを1500byteずつに三分割するんでしょうか? だとすると、4500byteのデータを送った場合、TCP上では1つのセグメントを送信したことになり Ethernet上だと3つのフレームを送信したことになります。 それとも、TCPが4500byteのデータを送る場合 TCPがデータリンク層で一度に送信できるフレーム長を判断して TCP上で4500byteを一度に送信せずに、1500byteに分割してEthernetに送り Ethernetはその1500byteのデータを三回送信することになるんでしょうか? わかりにくい質問で申し訳ありません。

  • ウインドウのサイズ調整ができません!

    アプリケーション(PhotoEditor)を開いている時、ウインドウのサイズ調整がうまくいきません。 最大化(モニタいっぱいに)しているときは問題ないのですが、ウインドウのサイズ調整をしようとすると、ウインドウがどうも画面の外に行ってしまっているようで、ウインドウがつかめません。 画面の中に戻すには、どのようにしたらよいのでしょうか?

  • 回線速度とTCPスループットについて

    質問を読んでいただきありがとうございます。 インターネット回線の速度について質問です。 TCPでは送信ホストは相手から通知されたウインドウを超える量のデータを送信することはできないためウインドウサイズとRTT(ラウンドトリップタイム)が決まれば最大のスループットが決まると言われてます。 ウインドウズサイズ x 8/ RTT時間(秒) = 最大スループット 一般的に考えてウインドウサイズを64Kbytesとした場合、100mbpsを出すにはRTT5m秒以内でなければならない計算になります。 64Kbytes x 8 / 0.005 = 102,400,000mbps (RTTが5m秒の場合) 64Kbytes x 8 / 0.006 = 85,333,333mbps (RTTが6m秒の場合) ということはRTTが5m秒以内のホストと通信をしない場合は100mbpsの回線でも1Gbpsの回線でも理論上はTCPの限界速度は同じということでしょうか?それともRTT5m秒以上でも1Gbpsのほうがスピードが出る要因がありますでしょうか? 長々とすいませんが、よろしくお願いします。

  • TCP/IPのソケット通信を使用して100ms毎にデータを送信するアプ

    TCP/IPのソケット通信を使用して100ms毎にデータを送信するアプリケーションがあります。 このアプリケーションをPC(Windows XP)上で実行すると、実際には200ms毎にデータを送信しています。 TCP/IPのNagle処理により200ms毎にデータを送信しているようです。 Nagle処理をOFFする為に、レジストリの HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSMQ/Parameters の下に TCPNoDelay REG_DWORD 0x00000001 を追加したのですが、状況が変わりません。200ms単位で送信してしまいます。 レジストリ変更後は、再起動を行っています。 他に設定する方法があるのでしょうか? 宜しくお願いします。

  • シリアル通信 大きいサイズの受信処理

    シリアル通信 大きいサイズの受信処理で質問があります OS:LINUX 開発環境 QT5.3 今 相手側機器から10秒ごとに190011Byteのデータくるようなしようとなっています そこで質問ですが 受信側ではどのような処理を組めば10秒ごとに来るデータをすべて受信できるのか よろしくお願いします open関数やread関数などを使用しています ボーレート値は230400bpsです 送受信バッファは1024byteとなっています

  • TCP/IPでSENDエラーになってしまう。

    WindowsのTCPでクライアントからサーバに対してsendした際に エラーとなってしまいます。 エラーコードを出力したところ"22"が出力されています。 考えられる事は、大量データの連続送信ですがTCP/IPでは 問題無いと思います。 何か知っているかたおりましたら回答お願い致します。 状況:大量(50K)のデータを連続に送信していると発生 環境:WindowsXP(pro)SP2 VC.net

  • TCP/IPに関する技術的見地

    今、ネットワークに関する課題を解いていますが、いっこうに解けず、このサイトを利用している技術者もしくは研究者の方に力をお借りしたく投稿しました。 問題  サイズの大きなファイルをHTTPなどでダウンロードする際、いわゆる分割ダウンロードソフトウェアを用いると取得にかかる時間を短縮できることが多くあります。この理由を、TCPに関する技術的見地から解説してください。 という問題です。今習った範囲では、TCPのウインドウ制御、フロー制御、スロースタート、ACKでのコネクションのやりとりなどです。主にTCP全般を学んだつもりです。 誰か分かる人がいたら、教えていただきたいです。本当に困ってます。よろしくお願いします。

  • 大きすぎるサイズのwindows.oldから復旧するには?

    大きすぎるサイズのwindows.oldから復旧するには? 最近、使っているパソコンの調子が悪く、頻繁にフリーズするようになりました。 下記の二つのページを参考に vistaを再インストールすることにしました。 http://pc8901j.dtiblog.com/blog-entry-53.html の記述だとデータが消えることもないし、アカウントの設定などのバックアップも取れる http://www.microsoft.com/japan/windows/using/windowsvista/guide/upgrade/backup2.mspx の記述だとアカウントの設定をバックアップから復旧できる と思いました。 できるだけ忠実にやったつもりなんですが アカウントの設定も消えてしまっているし 肝心のデータも新しく復旧したアカウントからは見ることができませんでした。 できればもとの状態に復旧したいと思って調べているとc:\のなかにwindows.oldという フォルダが残っていてそこに以前のデータが残っていました。 http://support.microsoft.com/kb/933168/ja を読むとCドライブの中にwindows.old以上の空き容量が必要 と書いてあります。 確認してみると、今の空き容量は18.3GB、windows.oldのサイズは100GBです。 手元に1TBの容量のネットワークアクセスストレージ(バッファロー)があるのですが それを上手に利用して、もとの状態に復旧する方法はないのでしょうか? パソコンに詳しい方、教えていただければ幸いです。