アプリ版:「スタンプのみでお礼する」機能のリリースについて

TCPについて調べると全二重可能という説明が出てきます。
全二重とは通信している両者が同時に送信できることのようです。

しかしTCPプロトコルを調べるとシーケンス番号や応答確認番号は相手が送信したバイトシーケンスのサイズに依存した値が設定されます。
そのため両者がデータを送信し続けた場合、適切な値を設定できません。送信処理中に相手から届いた合計バイト数が増え続けるからです。

「TCPは全二重可能」の意味は何でしょうか?
1)TCP接続を複数作成する事で両者が同時送信可能という意味?
2)ウィンドウサイズの変更パケット等応答確認番号等に影響を出さない制御パケットを受信中に送信できるという意味?

1個のTCP接続における通信は、リクエスト/レスポンスの要領でやる、つまり相手からのデータを受信しきってから自分のデータを送信するというイメージを持っています。この認識は合っているんでしょうか?

質問者からの補足コメント

  • うーん・・・

    このシーケンス図を見て考えているんですが。
    https://www.infraexpert.com/study/tcpip9.html
    >次に、3ウェイハンドシェイクにより確立したコネクション上でデータをやりとりする時の流れを見てみます。

    全二重らしい同時送信というより相手からのデータを受信しきってから自分のデータを送信している半二重に見える。
    しかも確認応答番号の数値は受信したデータのサイズに依存して決まっているので、受信しきってからじゃないと正しい値を設定できないように思う。

      補足日時:2021/12/27 13:01

A 回答 (4件)

>しかしTCPプロトコルを調べるとシーケンス番号や


>応答確認番号は相手が送信したバイトシーケンスの
>サイズに依存した値が設定されます。

単にウィンドウの空き状況とデータ欠落検出のための
情報交換です。

データは応答を待たずにウィンドウが開いている範囲で
連続送信可能です。物理的な全2重を阻むようなものでは
ありません。
    • good
    • 0

「TCPは全二重可能」というのは、TCPの内部動作のハナシではありません。

TCPを使うアプリが送信の衝突を考慮せずに勝手に送信できると言うことです。実際に使う物理回線が半二重であっても、プロトコルにより隠蔽されてしまうのです。
    • good
    • 0

全二重通信が可能


データ伝送を行う際に、経路が二本あれば、方向の違うものを同時に送受信することが可能ですが、経路が一本だと、同時に流すことはできません。この経路が二本ある状態のことを全二重通信といい、片方しかない経路のことを半二重通信といいます。
TCPは全二重通信が可能なため、半二重通信のように途中でぶつかったりすることがなく、同時に二つの信号をスムーズに流すことができます。
    • good
    • 0

おそらく全二重と半二重を誤解していると思います。


そもそも半二重と全二重のどこが違うのか、という点について理解しておく必要がありますね。

半二重というのは、信号が衝突する可能性があるので衝突を避けるために送信動作を見合わせたり、衝突したら回復処置を講じる、というように、衝突を意識して送信動作を制御することを指します。
全二重というのは,衝突しないので、衝突することを考慮せず送信動作を行います。
つまり、送信動作と受信動作を同時併行して実行するかどうかではなく、送信動作を実行するときに、衝突を意識して動くのが半二重,衝突を意識しないのが全二重だということです。
TCPが全二重だというのはこの意味です。
    • good
    • 0

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