FIN,ACKとACKについて
はじめまして。5月よりTCPソケット通信を勉強しているものです。
クライアントとサーバーのプログラムを作り試行錯誤しながら動かしているのですが一つ不思議な現象が起きたので質問させて頂きます。
処理が終わり、通信を切断する時なのですが、ソケット通信に関連する書籍やWebページを見ていると接続を切断するときにFIN,ACKを送信して相手側がACKを送信し、FIN,ACKを送信して最後にACKを送信するとなっています。図にすると以下のような感じでしょうか。
PCA PCB
FIN,ACK送信 → FIN,ACK受信
ACK受信 → ACK送信
FIN,ACK受信 → FIN,ACK送信
ACK送信 → ACK受信
この手順でPCA,PCBともに切断されるとあるのですが、自分が作ったプログラムを実行させて、etherealでパケットをモニタリングすると以下のような状態で終わってしまいます。
PCA PCB
FIN,ACK送信 → FIN,ACK受信
FIN,ACK受信 → FIN,ACK送信
ACK送信 → ACK受信
PCAからのFIN,ACK受信に対してのACKの送信が省略されて、いきなりFIN,ACKを送信してしまいます。その後PCAからはACKが返されて終了となります。
プログラム的には希望通り動作しているので問題は無いのですが、なぜ途中のACKが省略されてしまうのか原因が知りたいです。また、自分の認識が間違っている場合のご指摘等頂ければと思います。
つたない文章で申し訳ありませんがご存知の方がいらっしゃいましたら教えて下さい。
お礼
ご回答ありがとうございます。 そごうとか、福屋とか探してみます。あと、電話もして徹底的に探してみます♪ ありがとうございました