パスワードを忘れた? アカウント作成
472771 journal

yuriの日記: 3ヶ月くらい前のWindowsUpdateに何があったのか 7

日記 by yuri
TCPで他のマシンにデータを送りつけるプログラムが
WinSockエラー10054番で接続を切られて
全然データが送れない子になってしまっていた。

Windowsファイアウォールの例外設定をみたら
そのプログラム(内製、私が作ったわけではないけど現在メンテ引き受け中)のチェックボックスが外れているので、
お~このせいで通信失敗してたのね。といいながら
チェックボックスをONにしても
依然現象は改善されず。

通信まわり苦手。。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • そもそも相手のそのポートでサーバが待っているのか。の二点を確認。かな?
    「10054, WSAECONNRESET, Connection reset by peer,」てのは常識的にはRSTフラグ付きのパケットを受け取ったときのエラーで、RSTパケットは既に繋がっている(と相手が思ってる)ポートに対して不正なシーケンス番号のパケットを送りつけたときか、たーしか繋がってない相手にいきなりSYNなしパケットを送りつけた場合に返ってくる。

    ...はずなんだけど、窓は開いてないポートにSYN付きパケットを送って「Service/Host not avaliable(だっけか)」なICMPパケットを受け取った時もこのエラーを返すらしい。まずは症状が出てるときにtelnetかなんかで繋いでみてちゃんと繋がるか確認、かな?
    • まったくもって、いつもコメントありがとうございます。

      >他の方法で通信できるのかと相手のそのポートでサーバが待っているのかの二点

      分かる範囲で試してみました。
      まずはお約束ping、これはちゃんとエコー返してくれました(通信路は生きてるね)。

      つぎに、最近覚えたコマンドでポートが開いていることを調べました。
      lsof -i:(ポート番号)
      COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
      Prog_Name 4473 yuri 38u IPv4 33825 TCP *:PortNum(LISTEN)

      それから、telnetも。
      telnetの通常のポートはサービス閉じているからrefusedされたけど
      telnet 相手ホスト ポート番号 したら
      Trying 192.168.2.122...
      Connected to 192.168.2.122.
      Escape character is '^]'.
      までは来ました(その先はtelnetサービスは待ってないので進みようが無い、よね?)

      >「10054, WSAECONNRESET, Connection reset by peer,」てのは常識的には
      >RSTフラグ付きのパケットを受け取ったときのエラーで、RSTパケットは既に
      >繋がっている(と相手が思ってる)ポートに対して不正なシーケンス番号の
      >パケットを送りつけたときか、たーしか繋がってない相手にいきなりSYNなし
      >パケットを送りつけた場合に返ってくる。

      シーケンス番号が変なのかなあ。。
      なにより変なのは、先月までは元気に通信してたのですよ。。
      #毎秒データを受け取って、毎秒別のプログラムにデータを送りつけるVC++アプリです。
      ##そんなのばっかりorz

      で、ping - lsof - telnet と「いけてるよね?」という気に
      させられていたのも束の間、
      相手方のプログラム(こっちも社内製)をデバッグモードにしたら
      肝心のサーバ側のログをみたら

      TCP High/Low Port Disable(-1)だって。。しくしく。

      親コメント
      • >Escape character is '^]'.
        >までは来ました(その先はtelnetサービスは待ってないので進みようが無い、よね?)

        ^]してquitコマンドで終了できまつ。
        あるいはプロトコルに則って何か送ってみるとか。

        >TCP High/Low Port Disable(-1)だって。

        一般的にはクライアントのポート番号が1024未満だと弾かれたりするけど、月例アップデートでその辺が変更されたのかも。
        # というかまだやってなかったのか>窓
        親コメント
  • SNPが上手く動かない環境でも on になってしまって通信が破綻する…というのがあるそうです。msdnの検索でも出てこないのですが、2/14に日本語版KBだけがリリースされています。

    …URLを記録した紙が見つからない… orz
    --
    fjの教祖様
    • コメントありがとうございます。

      SNPって初めて聞く単語で、ググ先生に聞いてみたら
      遺伝子?塩基?なキャッシュばかりで焦ってしまいました(^^;
      #Single Nucleotide PolymorphismsではなくてScaleable Networking Packが正解?

      同じXP Pro SP2でも、4台稼動しているうちの1台だけはちゃんと通信ができて
      いるので、何が違うのか、通信できなくなってしまった原因は何かを見極めたいの
      ですが、なかなか手がかりがなくて塩漬け状態です。

      親コメント
      • "Scalable Networking Pack"です。(eが一つ余計)

        他人のblogが検索にヒットするようになったのでやっとKBが見つかった。
        http://support.microsoft.com/default.aspx?scid=kb;ja;948566&sd=rss... [microsoft.com]

        SNPというのは、通常の言葉(?)で言い直すと
        a)Tcpip Offloading Engine(TOE)サポート
        b)受信ドライバのMulti-Processor対応
        c)Remote DMA 対応
        の3つの機能を1つにまとめたものです。
        http://support.microsoft.com/kb/912222/ja [microsoft.com]
        から関連情報をたどると、それぞれの説明に到着します。

        今回発見されたのは、どうやら a の機能に対応していないNICや機種に対して、SNP が on になってしまう、と言う不具合のようです。結果として通信が上手くいかなくなる。それも「中途半端に offloading 機能がある「移行期」のものだったりするときに起こるらしい(checksum機能だけある、とかね)。
        # 多分、MSと言うよりは、対応するHWを作っている所のテスト不足が原因と
        # 思われ…とすると、十中八九「Dell」だな。

        KB上は 2003 server とありますが、SNPの説明の所には、"Microsoft Windows XP Professional x64 Edition"も対応OSとしてリストアップされています。なのでHW的に考えると2003 serverで起こるなら XP Proでも起こるでしょう。

        KB 948566 に書いてある事を実験する事ができるのであれば、やって見るのはいかがでしょう?少なくとも一時しのぎにはなります。ただし、HWの性能を使わない事で正常状態に戻しているだけなので、関連するパッチが出次第、元に戻せないか実験をするためにも、忘れないでおく必要があります。
        --
        fjの教祖様
        親コメント
        • 塩漬け状態から一歩脱出できるかも…!

          ご指摘の通り、通信できなくなってしまったPCはすべてD*LLのものです。
          #大丈夫だったのはNEC MATEだったなあー、と今更ながら思い出しますた

          ああスラドに出入りしていて本当によかったと思っています。
          アドバイス&解説、ありがとうございます。
          明日早速試してみようっと。
          親コメント
typodupeerror

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

読み込み中...