• ベストアンサー

TCPの接続処理と終了処理について

TCPでコネクションを確立するとき、制御フラグでSYN、SYN+ACK、ACKで3パケットをやりとしますが、終了手順のときは、FIN、ACK、FIN、ACKと4パケットをやりとりします。 これは何故でしょうか? コネクション確立時と同じく、FIN、FIN+ACK、ACKにしないのは何故でしょうか?教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mamakari
  • ベストアンサー率34% (20/58)
回答No.1

教えるほどの知識はありませんので紹介。 http://www.atmarkit.co.jp/fwin2k/network/baswinlan015/baswinlan015_03.html

参考URL:
http://www.atmarkit.co.jp/fwin2k/network/baswinlan015/baswinlan015_03.html

関連するQ&A

  • TCPのsynとかっていつ・何回位するのでしょうか

    ネットワークの勉強中の中年です。 入門編のTCP/IPですが、コネクション確立(syn→ack/syn→syn)などは 普通に手動で作業をする場合、いつ、何回位されるのでしょうか。 たとえばftpなどですが、 もちろん最初にクライアントからサーバーに接続する際にはとは思うのですか、 パスワードを送るたび、ファイルを送受信するたびに行うものなのでしょうか。 また、finを送るのは、byeでftpを閉じる時でしょうか。 パスワードの送信後とか、ファイルのやり取り後といったタイミングで 発生するのでしょうか。 それともパケットトレースで見るように1秒間に何十回というように されるものなのでしょうか。 挙動についていろいろ資料等があるのですが、 実際に使っているイメージではいつ何をしているかわからず… よろしくお願いいたします。

  • RFC793 TCPのコネクション解放について

    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と解釈しており、 問題視しておりませんが、ここの解釈が間違っていたら訂正お願いします。

  • javaでtcpヘッダを自前で作成する方法

    javaでtcpヘッダを自前で作成する方法 こんにちは。 javaでtcpヘッダを自前で作成する方法を探しています。 例えばsynやrstのみ出力するですとか、シーケンス番号を自分で決めてTCPヘッダとデータを作っていくことです。 tcpコネクションを自動で確立してくれるものではありません。 実験用にfinだけ付けたパケット1つだけ飛ばし、対向の機器がどのような反応をするかを見るためのものです。 Cでは方法はあるようなのですが、私にはCよりもJavaの方がとっつきやすいので、Javaでできる方法を探しています。 例えばどのようなクラス(java.io.*など?)をインポートしてどのような関数を使えばよいでしょうか。 何卒よろしくお願いします。

    • ベストアンサー
    • Java
  • パケットキャプチャについて

    パケットキャプチャについて wiresharkでパケットキャプチャをやっております。tcpでsynのパケットのみを収集したいのですが、現在では、 (1)ファイルの読み込み (2)フィルタの条件でtcp.flag.fin == 0 and tcp.fla.syn ==1 and tcp.flg.ack == 0 と入れフィルタリング。 (3)結果のファイルを保存 となって大変時間がかかります。cuiでコマンドライン上で一発ですませられる方法はありませんか?

  • TCP/IP ACKについて

    初めて質問させて頂きます。 現在WinpCapを使ってTCPの通信プログラムを作成しています。 単純にパケットの受信や送信は出来たので、ローカルサーバーに接続出来るか試しているのですが、通信が確立しません。 状況としては、こちらからSYN = 1でサーバーに信号を送ると、サーバーから返事が来ます。 サーバーの返事を待ってACK = 1でサーバーに返事をするのですが、そのときの状態をWiresharkで確認すると、ACKの番号が2067011292等と表示されて通信が確立しません。 ACKの値が異常なのは判りますが、この数値はどこから来るのか、又対処方法などが有りましたら教えてください。 環境はVC2003、WInXP/Win7です。

  • NMapでのsyn-finパケットの作成

    NMapWin v1.3.1を使用してサーバのセキュリティをしらべています。 ネット上でNMapの機能として IPフラグメントを使ったSYN/FINスキャン(一部のパケットフィルタを通過する とありました。 そこでFINとSYNのフラグが両方立ったパケットを投げたいのですが、その項目が在りません。 どのようにして、FINとSYNのフラグがたったパケットを投げるようにできるのでしょうか。 項目にはSYN Stealth , FIN Stealthとそれぞれ単体のフラグの項目は在りますが、 両方がありません。御回答お待ちしています。

  • WiresharkのFlow Graph

    現在WiresharkのFlow Graphという機能を使用して、クライアント端末がサーバー端末へのTCP通信での3ウェイハンドシェイクのパケットやりとりを観測したいと思っています。 次のようなパケットをモニターしました。 |Time | 192.168.1.111 | | | | 192.168.1.222 | |6.402 | PSH, ACK - Len: 1212 |Seq = 1 Ack = 1 | |(6057) ------------------> (5000) | |6.606 | PSH, ACK - Len: 1212 |Seq = 1 Ack = 1 | |(6057) ------------------> (5000) | |6.835 | PSH, ACK - Len: 1212 |Seq = 1 Ack = 1213 | |(6057) <------------------ (5000) | |7.039 | ACK | |Seq = 1213 Ack = 1213 | |(6057) ------------------> (5000) | |7.150 | ACK | |Seq = 1213 Ack = 1213 このパケットのやりとりを観ていて思ったのですが、TCP通信は3ウェイハンドシェイクは SYN--->SYN ACK---> ACK という順序でのパケットのやりとりをクライアントとサーバー間で行うと思っていたのですが、 PSH, ACK ----> PSH, ACK ----> ACK ----> ACK このような順序になっているように思うのですが、これはなぜなのかご教授頂けないでしょうか? どうぞ、よろしくお願い致します。

  • TCPパケット解析

    下記は、何を使用としているのかを、解析したいと思っています。 Source / destination /protocol /length /info A / B / TCP / 54 / 10085-80 (ACK) Seq=572 Ack=2032 win=65700 Len=0 B / A / TCP / 54 / 80-10085 (FIN, ACK) Seq=2032 Ack=572 win=6992 Len=0 A / B / TCP / 54 / 10085-80 (ACK) Seq=572 Ack=2033 win=65700 Len=0 A / B / TCP / 54 / 10085-80 (FIN, ACK) Seq=572 Ack=2033 win=65700 Len=0 B / A / TCP / 54 / 80-10085 (ACK) Seq=2033 Ack=573 win=6992 Len=0 素人に説明出来る方、宜しくお願い致します。

  • HTTPアクセスの処理

    HTTPで「http://www.yahoo.co.jp」にアクセスしようとした場合、どのような内部処理が行われるのでしょうか? 大まか流れとして 1・DNSによる名前解決 2・TCPセッションの確立 3・HTTP要求 と考えてます。(ARP解決は省略します) 1・DNSによる名前解決 プロトコルスタックの流れだとHTTP→DNS→TCP→IP→Ethernetでネットワークに送信され、応答がEthernet→IP→TCP→DNSになると思います。 2・TCPセッションの確立(省略) SYN→SYN ACK→ACK 3・HTTP要求(省略) HTTP GET→HTTP 200 OK わからない部分は1・DNSによる名前解決が終わったあとどうやって2・TCPセッションの確立に移行するのかということです。 (同様に2・TCPセッションの確立が終わったあとに3・HTTP要求)

  • HTTP GET直後のFIN,ACKについて

    ある特定のサイトをWebアクセスした際のWiresharkトレースを解析しています。 そのWebサイトにはTwitterのAPIが埋め込まれていて、Twitterのアイコンを取得するためにJPGファイルを取得しているTCPセッションがあります。 3WAYハンドシェイクの後、クライアントはHTTP GETでJPGファイルを要求しているのですが、直後にFIN,ACKフラグを伴うパケットを送出しています。 クライアントは自らHTTP GETしておきながら、JPGファイルを受け取る前にTCPセッションを終了しようとするのは理解しがたいと思っています。 このようにHTTP GET直後にFIN,ACKフラグをつけるような挙動をみせるのはどのような状況が予想されるでしょうか?