TCPのコネクションを解放するときの手続きについて、
フラグの意味がわからない部分があります。
A────────B
→FIN,ACK→→→ (1)
←←←←←ACK← (2)
←←←FIN,ACK← (3)
→ACK→→→→→ (4)
上記の手続きにより、コネクションの解放が完了しますが、
(2)は(1)に対しての肯定応答だとわかるのですが、
(3)のACKの意味がわかりません。
何に対して応答しているのでしょうか?
Bは2連続でACKを送っている理由、決まりがわかりません。
RFCには「FINとセットでACKを送らなければならない」とは書いていませんので、
決められたものではないと解釈しております。
では、なぜFINとセットでACKを送るかがわかりません。
(1)のACKについては、今までのやり取りに対するACKと解釈しており、
問題視しておりませんが、ここの解釈が間違っていたら訂正お願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
まず、パケット(1)(3)は、FINとACKで別々のパケットという
わけではなく、FINフラグとACKフラグ両方が立っている1つのパケット
であるということに注意してください。
さらに、RFC793, 3.1 Header Formatにはこのような事が書かれています。
Acknowledgment Number: 32 bits
If the ACK control bit is set this field contains the value of the
next sequence number the sender of the segment is expecting to
receive. Once a connection is established this is always sent.
つまり、最後のセンテンスに書かれているように、規格としてはTCPコネクション
が一旦確立すると、常にACKフラグを立て、Acknowledgment Numberフィールドに
しかるべき値を書き込むことになっていており、それは閉じようとしている
コネクションについても例外ではありません。
コネクション終了の遷移パターンにより、確かにFINについているACKにあまり意味が無い
場合と、意味がある場合の両方があり得ますが、いずれにせよFINフラグが立って
いるパケットがACKが兼ねていても特に害はない(パケット数やパケットサイズが
増えるわけではない)ので、上記のように決めていると考えられます。
むしろ、遷移パターンによってACKフラグ立てるかどうかを条件分岐するほうが
実装上大変でしょう。
参考URL:http://tools.ietf.org/search/rfc793
No.1
- 回答日時:
これは、RFC793の「3.5. Closing a Connection」
「Figure 13.Normal Close Sequence」の図に対する質問ですよね?
これについては「Figure 6.TCP Connection State Diagram」の状態遷移図
にもある通り、「CLOSE_WAIT」状態でCLOSEが来たらFINを送信する
(FIN,ACK送信ではない)ようになっていますので、ACK送信は本来不要なもの
だと思います。
別の解説書では、FINだけ送信するように解説されているものも見られます。
(参考)
http://www.atmarkit.co.jp/ait/articles/0401/29/n …
ただ、Fig.13のシーケンスは、あくまで例であり、FINにACKをつけて送ることも
間違いではありません。
(この場合(3)のACKは、(1)のFINに対する(2)のACKの再送です。)
では、なぜFINにACKをつけたシーケンス例が出ているかというと
私の推測ですが、
1.FIN送信時は、常にACKを付与して送信する処理にした方が、状態に応じて
ACKをつける/つけないの判断をするより処理が簡潔で確実になるし副作用もない。
2.仮に(2)のACKがロストした場合でも(3)のFINにACKがついていれば
切断シーケンスをそのまま進められるメリットがある。
といったようなことを考えて、FINにACKをつける実装をしてもよいということを
示したかったのではないかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WINに変えた方が・・
-
この電話はお客様の都合により...
-
auショップで詐欺まがいの事...
-
AU携帯 GRATINA 通話中に保留...
-
携帯止まってもWi-Fiでネットや...
-
通話中の携帯にかけた時呼び出...
-
スマホ、、auかけ放題にしてま...
-
以前解約した電話番号を復活さ...
-
料金滞納・強制解約後の再契約...
-
使わないので解約したい au WAL...
-
携帯電話番号前の電話番号に戻...
-
auショップでiPhone13を買った...
-
携帯電話の解約は、身内であれ...
-
2台のうち1台解約出来ますか?
-
割賦支払い中の携帯を友人にあ...
-
コール後「お繋ぎできませんで...
-
ブラックリスト者の携帯新規契約
-
携帯電話のAUの支払い期限と解...
-
discord
-
DoCoMo 強制解約。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Wiresharkの使い方
-
ルーターを使うと特定のサイト...
-
パケットスイッチングでの遅延...
-
受信パケットをブロックしまし...
-
フルブラウザーのパケット代
-
Etherealでのパケロスの確認方...
-
ARPパケットについて
-
1メール、サイト1ページは何パ...
-
auのパケ代について
-
CD-RWのディスク容量の表示が変?!
-
パケット交換方式が利用される理由
-
IPSecをかけると通信量はどれだ...
-
[着メロ1曲でだいたい何パケッ...
-
auのパケット代、どこから発生...
-
最近スマホ通信量のことをギガ...
-
プラン変更によるパケット繰り...
-
■イーサリアル
-
auのパケット割 学割について...
-
パケットとバイト(或いはキロ...
-
IPパケット、TCPパケット、UDP...
おすすめ情報