TCPのsynとかっていつ・何回位するのでしょうか
- TCPのsynとかっていつ・何回位するのでしょうか。ネットワークの勉強中の中年です。
- 入門編のTCP/IPですが、コネクション確立(syn→ack/syn→syn)などは普通に手動で作業をする場合、いつ、何回位されるのでしょうか。
- ftpなどでは、最初の接続時にはもちろんクライアントからサーバーに接続する際に行われますが、パスワードを送るたびやファイルを送受信するたびにも行われることがあります。finを送るのはftpを閉じる時であり、パスワードの送信後やファイルのやり取り後などのタイミングで発生することもあります。パケットトレースでは1秒間に何十回も行われることがありますが、使用している状況では具体的な挙動がわからない場合もあるようです。
- ベストアンサー
TCPのsynとかっていつ・何回位するのでしょうか
ネットワークの勉強中の中年です。 入門編のTCP/IPですが、コネクション確立(syn→ack/syn→syn)などは 普通に手動で作業をする場合、いつ、何回位されるのでしょうか。 たとえばftpなどですが、 もちろん最初にクライアントからサーバーに接続する際にはとは思うのですか、 パスワードを送るたび、ファイルを送受信するたびに行うものなのでしょうか。 また、finを送るのは、byeでftpを閉じる時でしょうか。 パスワードの送信後とか、ファイルのやり取り後といったタイミングで 発生するのでしょうか。 それともパケットトレースで見るように1秒間に何十回というように されるものなのでしょうか。 挙動についていろいろ資料等があるのですが、 実際に使っているイメージではいつ何をしているかわからず… よろしくお願いいたします。
- unknown_un
- お礼率100% (7/7)
- その他([技術者向] コンピューター)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
TCPセッション確立時にsynを交換して、セッション解放時にfinします。 ftpはやや特殊で、 ・制御用セッション openコマンドでホストにつなぎに行くときに確立して、byeやquitで解放 下記のデータ用セッション以外のやりとり(コマンドのやりとり等)はこのセッションを使う ・データ用セッション 1つのファイルのデータ送受信ごとに確立して、転送終了時に解放 ls/dir コマンドの結果もファイルとして転送されるので、ls/dir の結果表示毎に確立&解放 telnet/sshなどは、セッションはログアウトするまで1つで、最初に確立して、ログアウトで解放。 httpは、古く(HTTP/1.0)はGETやPOSTの1リクエスト毎にセッション確立&解放。 HTTP/1.1になってからは、1つのTCPセッションで複数のGET/POSTリクエストを連続して行えるようになりました。 TCP/IPの入門書には載ってると思うのですが。
関連するQ&A
- TCPの接続処理と終了処理について
TCPでコネクションを確立するとき、制御フラグでSYN、SYN+ACK、ACKで3パケットをやりとしますが、終了手順のときは、FIN、ACK、FIN、ACKと4パケットをやりとりします。 これは何故でしょうか? コネクション確立時と同じく、FIN、FIN+ACK、ACKにしないのは何故でしょうか?教えてください。
- ベストアンサー
- その他([技術者向] コンピューター)
- 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と解釈しており、 問題視しておりませんが、ここの解釈が間違っていたら訂正お願いします。
- 締切済み
- ネットワーク
- TIME_WAIT 時の振る舞い
現在、詳解 TCP/IP Vol.1 の第 18 章を読んでいます. P.275 の 2MSL 待ち状態の説明なのですが, 「MSL 値を実装する場合のルールは,TCP がアクティブクローズを実行し,最後の ACK を送ったとき,コネクションは MSL が2回繰り替えされる時間だけ TIME_WAIT に止まっていなければいけないというものだ.これにより,最後の ACK が消失した場合(この場合,他方のエンドはタイムアウトし,最後の FIN を再転送する)でも,TCP は再度 ACK を送ることが可能になる」 「コネクションが 2MSL 待ちにあるときに遅れて到着したセグメントは、いかなるものでも破棄される」 と書いてあります. 前者にある,再転送された FIN も破棄されるのですか? 破棄されるのに,それに対する ACK を送ることは可能なのですか?可能と書いてあるだけで,実際には,再転送された FIN に対する ACK は送られないということでしょうか? そこがいまいち理解できません.いくつか調べたのですが,そこのところを詳しく書いてあるものは見当たりませんでした‥.
- ベストアンサー
- ネットワーク
- パケットキャプチャについて
パケットキャプチャについて wiresharkでパケットキャプチャをやっております。tcpでsynのパケットのみを収集したいのですが、現在では、 (1)ファイルの読み込み (2)フィルタの条件でtcp.flag.fin == 0 and tcp.fla.syn ==1 and tcp.flg.ack == 0 と入れフィルタリング。 (3)結果のファイルを保存 となって大変時間がかかります。cuiでコマンドライン上で一発ですませられる方法はありませんか?
- ベストアンサー
- ネットワーク
- 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フラグをつけるような挙動をみせるのはどのような状況が予想されるでしょうか?
- 締切済み
- その他([技術者向] コンピューター)
- javaでtcpヘッダを自前で作成する方法
javaでtcpヘッダを自前で作成する方法 こんにちは。 javaでtcpヘッダを自前で作成する方法を探しています。 例えばsynやrstのみ出力するですとか、シーケンス番号を自分で決めてTCPヘッダとデータを作っていくことです。 tcpコネクションを自動で確立してくれるものではありません。 実験用にfinだけ付けたパケット1つだけ飛ばし、対向の機器がどのような反応をするかを見るためのものです。 Cでは方法はあるようなのですが、私にはCよりもJavaの方がとっつきやすいので、Javaでできる方法を探しています。 例えばどのようなクラス(java.io.*など?)をインポートしてどのような関数を使えばよいでしょうか。 何卒よろしくお願いします。
- ベストアンサー
- Java
- 3wayハンドシェイクによるSYN+ACKがNG
■接続状況 <クライアント(1)>──<L3SW(2)>──<LB(3)>──<VPN装置(4)>──~~──> ─>──~~──<FTPサーバ(Solaris)(5)> ■環境 (1):Linux(red hat v5.6) (2):Catalyst L3SW (3):LB(ロードバランサー:NAT変換含む) (4):VPN装置 (5):対向先のFTPサーバ(Solaris) ■業務接続状況 5分周期のバッチで動いている。 クライアント(1)⇒対向先(5)のFTPサーバに対して、FTP接続をしており ファイルのrename等を実施している。(TCP接続) ■障害状況 1ヶ月に2,3回の割合で、クライアントSVから対向先へのFTP接続において FTPエラーが発生している。 ■調査状況 <各キャプチャ設定状況> (1)クライアントSVにて、tcpdump取得、I/F調査の観点でNIC周り調査 (2)L3SWに対しては、ミラーポートキャプチャーをしかけ、キャプチャを採取 (3)LBに対しても、対象IPアドレス、ポートを絞ってネットワークキャプチャを採取 (4)VPNに対しても、対象IPアドレス、ポートを絞ってネットワークキャプチャを採取 FTPエラー時のパケットキャプチャを見ると、3Wayハンドシェイクにおける 対向先(5)からのSYN+ACKがクライアントSV(1)に届いていない状況が判明。 クライアントSVからのSYNに対して、対抗先のFTPサーバからの応答で SYN+ACKがL3SW(2)から出力している(届いている)ところまでは確認済み。 途中経路のLB、VPN含め、パケットドロップ等のエラーカウントアップは されていないのも確認。 肝心のクライアントSVのNICドライバー層を確認するもパケットドロップも カウントしていない為、OSとしては、受け取っていない状況。 FTPエラー時のパケットを見ると、必ずクライアントSV側で5万台の 特定ソースポートで接続するときに限って、SYN+ACKが届いていないことが分かった。 他のPort取得時は正常にFTP処理されている。 ただし、OSやNW専門部署に確認するも特定Portのみ、3Wayハンドシェイクが 確立しないような設定や事例もないの見解を聞いており、手詰まり状態となっている。 特定のPortに関しては、クライアントSVのLinux(OS)が自動で採番できる Port範囲からrandomで取得しているPort番号なのは分かっている。 また、その特定Port番号に関して、アプリ観点等で固定のPort指定や、 エラー発生前に違うプロセスが掴んでしまっているような 競合もとくに見受けられなかった。(定期的に取っているnetstatコマンドより) 似たような事象に陥った方で、何か手がかりになりそうなヒントがあれば ご教授いただけると助かります。
- 締切済み
- その他([技術者向] コンピューター)
- httpsのページがIE 7で表示できません
httpsのページがIE 7で表示できません。 表示できないページは、apache version 2.2系で自分で建てたサーバーです。 オレオレ証明書に使ったopensslのversionは0.9.8e, private keyの鍵長は、 1024でも2048でもだめでした。 また、mozilla firefox 3.0では同様に証明書の警告が出ますが、 例外設定をすることで表示されることを確認しています。 IE 7の現象としては、 "この Web サイトのセキュリティ証明書には問題があります。" - (A) と警告が出て、閲覧を続行すると "Internet Explorer ではこのページは表示できません" - (B) といわれます。 このとき、wiresharkでパケットのダンプを見てみると、 (A), (B)の通信が両方とも以下のようなシーケンスになっていました。 1, client -> server : tcp syn 2, server -> client : syn, ack 3, client -> server : syn 4, client -> server : client hello 5, server -> client : server hello, change cipher spec, Encrypted Handshake message 6, client -> server : change cipher spec, encrypted handshake message 7, client -> server : FIN ACK 8, server -> client : ACK 9, server -> client : encrypted alert 10, server -> client : FIN ACK 11, client -> server : RST ACK [ client: IE 7 ], [ server: apache22 ] 7の段階でIEからFIN ACKを送っているためページを表示できないのだと思うのですが、 なぜFIN ACKをおくっているのかが分かりません。 問題を解決したいのですが、はまってしまって困っています。 プロトコル・原因の調査方法等々、何か知っていることがありましたらご教授ください。 よろしくお願いいたします。
- ベストアンサー
- ネットワーク
- TCP/IPに関する技術的見地
今、ネットワークに関する課題を解いていますが、いっこうに解けず、このサイトを利用している技術者もしくは研究者の方に力をお借りしたく投稿しました。 問題 サイズの大きなファイルをHTTPなどでダウンロードする際、いわゆる分割ダウンロードソフトウェアを用いると取得にかかる時間を短縮できることが多くあります。この理由を、TCPに関する技術的見地から解説してください。 という問題です。今習った範囲では、TCPのウインドウ制御、フロー制御、スロースタート、ACKでのコネクションのやりとりなどです。主にTCP全般を学んだつもりです。 誰か分かる人がいたら、教えていただきたいです。本当に困ってます。よろしくお願いします。
- 締切済み
- その他(ITシステム運用・管理)
- openssh に ログインできない
windows2008 server で ssh を使いたいために、 cygwin をインストールしました。 私のパソコンからは、何の問題もなく接続できるのですが、 一部のパソコンではパスワード要求の画面が表示されません。 いろいろ調べていくうち、 > telnet server 22 としたところ、 私のパソコンでは、 SSH-2.0-OpenSSH と、表示を返しますが、 接続できないパソコンでは、 何も返しません。 wireshark でパケットを調べましたら、 接続できないパソコンは、 SYN+ACK で接続した後、 FIN パケットを返しています。 サーバー側の問題か、クライアント側の問題か、 切り分けができていません。 何か想定できる原因を教えていただけませんでしょうか。
- ベストアンサー
- ネットワーク
お礼
notnot様 ご回答ありがとうございます。 >openコマンドでホストにつなぎに行くときに確立して、byeやquitで解放 >1つのファイルのデータ送受信ごとに確立して、転送終了時に解放 >ls/dir の結果表示毎に確立&解放 >telnet/sshなどは、セッションはログアウトするまで1つ >1リクエスト毎にセッション確立&解放 かなりイメージがつかめました! TCP/IPの入門書は…見ているのですが、 上記の肝心な部分がつかめないでおりました。 (例えばgoogle等で検索しても「telnet fin ack」とかで検索しても、ぜんぜん見たい教えていただいたような内容にたどり着かないのです) 十分な回答をいただきました。 こちらは〆させていただきます。 ありがとうございました。