• 締切済み

ftp遅延

Windows2003サーバーの標準ftpからJP1/ftpサーバーへ、VPNを介して最大2MB程度のファイルを100~200個mput転送しています。2,3ヶ月に1回程度、転送遅延が発生します。Wiresharkでパケットキャプチャして調査したところJP1/FTPからのウインドウサイズが通常時32768バイトから1024バイトになっていました。さらに1024になった後、ftpクライアント側がACK受信後に5秒間waitしてから次のパケットを送信するような動きになっています。計ったように5秒ぴったりです。Windowsのftpクライアントがデータ転送を遅らせるような設定、仕様はないとの認識ですが何が原因として考えられるでしょうか?またどのような調査が有効でしょうか?ちなみにftpクライアント側のPCにはVPNクライアントやアンチウィルスソフトは稼動していません。

みんなの回答

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.2

受信ウィンドウサイズ=受信側のバッファ空き容量 なので、受信側の処理が間に合っていないだけでは?

  • celtis
  • ベストアンサー率70% (2271/3210)
回答No.1

経路にcisco機器が挟まっていませんか? 下記サイトの「初期接続のタイムアウトの設定」に、初期接続のタイムアウトが5秒という記載がありました。 http://www.cisco.com/japanese/warp/public/3/jp/service/manual_j/ans/4700ace/47acescg1/chapter04/16202_01_4.shtml

関連するQ&A

  • FTP転送中断について

    以下の手順でFTP転送を中断した場合に、直ぐに転送が中断が中断されなくて(セッションがクローズされない)困っています。直ぐに中断できる方法を知っている方、教えてください。 [1]8台のクライアントから同時にFTP転送を要求する。 [2]8台分の転送中に4台でFTPクライアントをSIGKILLで強制終了させる。 [3][2]の直後に4台のFTPクライアントから[1]とは別のデータ転送を要求する。 このときに、2台分のFTPクライアントでNotConnectedとなってしまいます。理由は、SIGKILLでFTPセッションをクローズしようとしたが、クローズしきれずに、8本のセッション+4本のセッションを同時接続しようとして、FTPライセンス数オーバー(8+4>10)により、接続できないようです。 また、調査の結果、SIGKILL時に別クライアントの転送処理が実行されている場合、その転送が完了するまで、SIGKILLをサーバー側で検知してくれません。別クライアントの転送処理が全く実行されていない場合は、SIGKILL直後にサーバー側で即座に転送中断&セッションクローズをしてくれます。 データ転送の有無に因らず、FPTクライアントの転送中断を即座に確実に実行する方法がありましたら教えてください。 とにかくやりたいことは、「8本転送中に、4本を直ぐ止めて、直ぐに別の4本のデータを転送したい」です。 <環境> FTPサーバー(WindowsPC×1台):WindowsXPのIISのFTP *IISのFTPサーバーは最大10本の同時接続が可能。 FTPクライアント(LINUXPC×8台):LINUXのFTPクライアント

  • FTPでのGET

    サーバ上にあるファイルをFTPのGETでダウンロードする場合、 転送中のサーバ上のファイルは、どうなるのですか? 切り取りで転送することは可能ですか? サーバ側では、 クライアント側で転送中であるかどうか、 もしくは削除して欲しいのですが。 転送中に、そのファイルを触れないようにするため。

  • 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 このような順序になっているように思うのですが、これはなぜなのかご教授頂けないでしょうか? どうぞ、よろしくお願い致します。

  • openssh に ログインできない

    windows2008 server で ssh を使いたいために、 cygwin をインストールしました。 私のパソコンからは、何の問題もなく接続できるのですが、 一部のパソコンではパスワード要求の画面が表示されません。 いろいろ調べていくうち、 > telnet server 22 としたところ、 私のパソコンでは、  SSH-2.0-OpenSSH と、表示を返しますが、 接続できないパソコンでは、 何も返しません。 wireshark でパケットを調べましたら、 接続できないパソコンは、 SYN+ACK で接続した後、 FIN パケットを返しています。 サーバー側の問題か、クライアント側の問題か、 切り分けができていません。 何か想定できる原因を教えていただけませんでしょうか。

  • TCP/IP通信3ハンドシェイクについて

    TCP/IPのTCP通信の3ハンドシェイク通信に関して質問なのですが、インターネットを使ったある端末でセンターのサーバーと6秒に1度程度3ハンドシェイク通信を行ってインターネット回線が正常かどうかを判定する機能を持っているそうなのですが、その時に1回の通信でどの程度のパケットをやり取りしているのかということを質問してみたら、約1.2kbyte程度のパケットをやり取りしていると業者の方が言っていました。 ちょっと興味があってWireSharkでこの端末とサーバ間のパケット通信をのぞいてみたところ、端末が1.2kbyte送信していたのですが、サーバからのACKと思われるパケットが1.2kbyteのパケットを返してきていて、再度端末が60バイト程度のパケットをサーバのIPアドレスに送信していました。 私はてっきり、端末とサーバー間のこの3ウェイハンドシェイクのパケットの総量が1.2kbyteだと思っていたのですが、これだと1.2k + 1.2k + 60 = 2.46kbyteとなると思うのですが、パケットのやり取りとしては正しいのでしょうか? サーバー側が受信したら同じ容量の1.2kbyteのデータをACKとして返してきているように思うのですが、Wiresharkで見ても全く同じデータでは無いようでした。サーバはデータを受け取ったら、ちゃんと受信したという1 or 0のデータみたいなものを返せばよいだけだと思うのですが、理由はあるのでしょうか?

  • VB6.0でFTPでのファイルの送受信

    VB6.0でFTPでのファイルの送受信(下記(1))をしようと考えております。 尚、コンポーネントは、インターネットトランスファコントロール(Inet)を使用しております。 (1)"リモートサーバーに対して、複数件のファイルを送信し、無事転送が完了したら(リモートサーバー の指定フォルダに送信された複数件のファイルがあるのを確認後)、  クライアント側のファイル(リモートサーバーに送信が済んだファイル)を消す" という処理を考えております。 ここで、質問なのですが (1)vbを使ったFTP転送で、複数件のファイルを一括転送(mputコマンドの使用)は、可能か?  (2)もし、(1)が不可能の場合、    "送信するファイルをputコマンドで1つ送って、リモート側にそのファイルがあるのを    getコマンドで確認して、もしgetであれば、クライアント側のそのファイルを消す" という処理を送信するファイル数分繰り返すことになるんですか?        1つのファイルの場合に、Inet1_State_Changeイベントで、ループさせstate = 12 の時( リモート側に正常に送信されたと考えて)、クライアント側のファイルを消していいのでしょうか?    VBのヘルプを見ると、state = 12 は、get処理で使用するというようなことを書いてありますが。     以上 

  • windowsでSYN/ACKを返すプログラム

    以下の現象が発生して、大変困っております。 <現象> クライアントからhttpsアクセスをしようとして、 ブラウザに「ページが表示できません」エラーとなることがある。 <調査状況> クライアント、OS上でWireSharkを仕掛けて、TCPの通信をキャッチしたところ、 問題が発生した通信は「SYN」がOSまでは来ているが、 「SYN/ACK」が返ってきていない。 <環境> サーバ:windows2003server,Apache クライアントOS:WindowsXP <質問内容> クライアントからの「SYN」要求に対して、「SYN/ACK」を返すのは、具体的に何が返しているのでしょうか。 (windowsのソケットプログラム?) また、その調査方法があれば教えて頂けないでしょうか。 よろしくお願い致します。

  • 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コマンドより)   似たような事象に陥った方で、何か手がかりになりそうなヒントがあれば   ご教授いただけると助かります。

  • linuxでのftpクライアントプログラムをつくるには

    Windows(VC++ MFCを使用して)などで ftpクライアントのプログラムを作成することが出来るみたいですが linux(TURBO LINUX 4.0)で同様なことはできないのでしょうか? 具体的には 以下のようなことがしたいためです。 (1) ftpサーバーにlinuxマシンにてクライアントでログイン (2) サーバー上のftpホームディレクトリにあるファイルができるまで周期的に監視 (3) 該当するファイルができたらファイルをクライアント側に転送 (1)~(3)を一回のftp接続状態のまま自動的(プログラム)で行ないたいのです。 VC++ MFCでは,FTPを行なうクラスがいくつかあるみたいですが? どなたかわかりましたら御回答ください。

  • FTPのmputで出るnetoutについて

    以下、FTPで行うmputについての質問です。 A.sh ************************* cat B.ftp | ftp -n if [ $? -ne 0 ]; then exit -1 fi exit 0 ************************* B.ftp ************************* open IPアドレス user XXX YYY prompt lcd ファイル転送元 cd ファイル転送先 mput *.csv bye ************************* 上記のようなシェルがあります。 A.shを実行すると, ************************* 対話型モードオフ。 現在のローカル・ディレクトリは ファイル転送元 です。 netout: 戻された 0 を書込みますか? netout: 戻された 0 を書込みますか? : : : ************************* というメッセージが表示され、 ファイル転送元のCSVファイルは全て0バイト以上であるのに 転送先にはいくつかのファイルが0バイトで作成されます。 おそらくnetoutが出たファイルが0バイトで作成されているようです。 ファイル単体でputすると上手く転送されます。 何が原因か全く分からないのですが、どなたかお分かりになる方、 いらっしゃいましたらよろしくお願いします。