現在、詳解 TCP/IP Vol.1 の第 18 章を読んでいます.
P.275 の 2MSL 待ち状態の説明なのですが,
「MSL 値を実装する場合のルールは,TCP がアクティブクローズを実行し,最後の ACK を送ったとき,コネクションは MSL が2回繰り替えされる時間だけ TIME_WAIT に止まっていなければいけないというものだ.これにより,最後の ACK が消失した場合(この場合,他方のエンドはタイムアウトし,最後の FIN を再転送する)でも,TCP は再度 ACK を送ることが可能になる」
「コネクションが 2MSL 待ちにあるときに遅れて到着したセグメントは、いかなるものでも破棄される」
と書いてあります.
前者にある,再転送された FIN も破棄されるのですか? 破棄されるのに,それに対する ACK を送ることは可能なのですか?可能と書いてあるだけで,実際には,再転送された FIN に対する ACK は送られないということでしょうか?
そこがいまいち理解できません.いくつか調べたのですが,そこのところを詳しく書いてあるものは見当たりませんでした‥.
No.1ベストアンサー
- 回答日時:
> 再転送された FIN も破棄されるのですか?
「破棄」という言葉が曖昧ですが、再転送されてきた FIN は無視はされず、ACK を返します。TIME_WAIT 状態はそのための状態です。
> 破棄されるのに,それに対する ACK を送ることは可能なのですか?
「破棄」とは、単にTCP/IPスタックがパケットを無視するという意味ではありません。そして、ここでいう「セグメント」とは「アプリケーションデータ」と言い換えたほうがいいかもしれません。
("segment" という単語は、アプリケーションが送ろうとしたデータがパケットへ分割された後の「破片」を暗に意味しています)
この部分の言葉を補うとするなら、こんな感じです:
「コネクションが 2MSL待ちにあるときに遅れて到着したデータは、
いかなるものでもアプリケーションに渡されず、破棄される」
このような動作とすべき理由は明らかです。
コネクションが 2MSL待ち (TIME_WAIT状態) になったということは、相手方がこちらに送信したいデータについて、すべて受け取ったということを意味します[1]。この状態で、相手から何らかのTCPセグメント(アプリケーションデータ) を受け取るということは、それはネットワーク側で複製されてしまったパケットか、何らかの理由で相手が無駄に再送してきたパケットのいずれかのはずです。そのようなパケットに乗っているデータをアプリケーションに渡すと TCP の役目を果たせません [2] ので、破棄することになります。
> 再転送された FIN に対する ACK は送られないということでしょうか?
いいえ、TIME_WAIT 状態で再度 FIN を受信したら、必ず ACK しなければなりません(そして再度 2MSL待たなければなりません)。
そうしないと、通信する双方において、送信したいデータがすべて相手方に受信されたことが保証することができなくなってしまいます。
[1] RFC 793, 3.1. Header Format
"FIN" はもう送るデータは無いよ、ということを意味する。
[2] 相手のアプリケーションが送ろうとしたデータが、勝手に増殖した
ことになるため。
参考URL:http://www.ietf.org/rfc/rfc0793.txt
>"segment" という単語は、アプリケーションが送ろうとしたデータがパケットへ分割された後の「破片」を暗に意味しています
なるほど!自分の中で,セグメントというものを勘違いしていたために,おかしくなってしまっていたのですね。
>「コネクションが 2MSL待ちにあるときに遅れて到着したデータは、
いかなるものでもアプリケーションに渡されず、破棄される」
>コネクションが 2MSL待ち (TIME_WAIT状態) になったということは、相手方がこちらに送信したいデータについて、すべて受け取ったということを意味します[1]。この状態で、相手から何らかのTCP セグメント(アプリケーションデータ) を受け取るということは、それはネットワーク側で複製されてしまったパケットか、何らかの理由で相手が無駄に再送してきたパケットのいずれかのはずです。そのようなパケットに乗っているデータをアプリケーションに渡すと TCP の役目を果たせません [2] ので、破棄することになります。
なるほど!FINを単に終了するためのもの程度にしか考えていませんでした.やはり気になるところはRFCを読み定義を確認しないといけませんね.
丁寧に回答していただき,ありがとうございます.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux iptablesを設定するとメール送信処理が遅くなる!? 6 2022/06/07 01:11
- UNIX・Linux Ubuntuサーバーでメールを受信できない 7 2022/08/23 20:55
- プロポーズ・婚約・結納 婚約破棄について 5 2022/09/29 15:13
- 転職 現在転職中の身で、書類選考通過しまして今日面接行って来ました。 社会福祉法人になります。 面接時間の 2 2022/03/26 23:00
- デスクトップパソコン 古ーいパソコン/Atheros AR2181 PCIe Gigabit LAN コントローラー 7 2022/09/07 12:58
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- 労働相談 実務経験書発行に関する相談先を探しています。 1 2022/08/14 11:45
- 転職 現在、転職活動中で先日一次面接を行いました。 思い出せる限りで状況を書き出しますので一次面接突破の可 2 2022/09/21 07:56
- 転職 転職でそれなりに大きな企業に応募し、内定を頂くことができました。 ですが企業に提出した履歴書の職歴の 1 2022/08/09 18:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MACアドレスが知られた場合の危...
-
無線ルータを通過するメールの...
-
TTL
-
デフォルトルート(ゲートウェ...
-
ネットワークアドレスの異なるP...
-
リピータハブっていつ使う?
-
急ぎです!したらば掲示板に書...
-
ホストクラブに先日行き、担当...
-
ホストの男性は、細客の女性客...
-
ホストの担当が年末で辞めまし...
-
会社貸与WiFiルーターで私用。...
-
ホストに次いつ来れるか聞かれ...
-
普通に疑問! ホストからインス...
-
ホストとホステスの違い
-
1番長続きしたネッ友との付き合...
-
2chに書き込みしたいのに、『...
-
ホストから既読スルーもしくは...
-
virtualbox 内のアンドロイドに...
-
女性限定 ホストには一度も行っ...
-
WEBライターの仕事に使う回線に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MACアドレスが知られた場合の危...
-
tcp/ip通信で特定のデータが送...
-
デフォルトルート(ゲートウェ...
-
FWの設定について(片方向のル...
-
通信用語 FR・CR接続って...
-
NAT配下のDNSどうやって外から...
-
ブロードキャスト転送できるか...
-
sftpとインターネットVPN
-
UDPパケットの分割について
-
MACアドレスの情報はどこに保存...
-
ICMP Echo Message はtcp,udp...
-
TTL
-
Redhat Linux7.1でrcpコマンド...
-
NATとリバースプロキシについて
-
NTTサービス『131』って何ですか?
-
PONシステムのTDMAとTDMの違い...
-
ARPに失敗したときの動作
-
PADについての質問です。
-
ネットワーク基礎で 全二重通...
-
IP Messengerについて
おすすめ情報