人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

キャプチャされたパケットを見ていたら、TCPプロトコルで、相手から一つのパケットに対して逐一1つのACKを返すときと、複数のパケットを受け取ってから一つだけACKを返すときがあるのを見つけたのですが、この挙動は正しいのでしょうか。

●質問者: nev
●カテゴリ:コンピュータ インターネット
✍キーワード:ack TCP キャプチャ パケット プロトコル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● nobu_chiba
●35ポイント

正しい挙動ではないでしょうか。

通常大きなデータをTCPでやり取りする際は、パケット単位でACKを

返すのではなく、ある程度のパケットが正常に届いた段階で

ACKを返す仕組みになっています。(効率的に通信するため)

以下のサイトでわかりやすく説明されていますので、参考にしてください。

http://www.networkworld.jp/b-course/-/26204.html

(出典:IDGネットワークワールド)

◎質問者からの返答

ありがとうございます。

しかし、記載されたURLのページを見てみたのですが、そのページの図だと、送信元から受け取ったパケットに対し、受信側は毎回ACKを返しているようです。

また、本文にも、

SEND(1)のセグメントがBに届くと、Bはバッファに格納して、ACK(2,2)を返す。これは、「1は受け取ったので、次はシーケンス番号2を送信してください。空いているスペースは、残り2つ分です」という意味だ。同じようにSEND(2)と(3)に対しても、同様のACKを返す。

とあり、毎回ACKを返すような意味合いの文になっているようです。

他に適当な説明URLがありましたら御紹介頂ければ幸いです。


2 ● tomo_k
●100ポイント

http://itpro.nikkeibp.co.jp/word/page/10007089/

ここを読むとRWINを大きくするとACKの送信回数が減るとなっています。

つまり、複数パケット分まとめてACKを返すと考えられます。

http://www.7key.jp/nw/tcpip/tcp/tcp2.html

ここをみると、以下のようになっています。

TCP では、別途説明しますウィンドウサイズ(受信バッファの大きさ)以内であれば、ACK パケットを待たずに次のセグメントを送信しても良いことになっています。受信側もまとめて受信したセグメントに対して1つのACK パケットを返せば良いので幾分か効率が上がるのです。

◎質問者からの返答

理解できました。有り難うございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ