yuriの日記: 3ヶ月くらい前のWindowsUpdateに何があったのか 7
日記 by
yuri
TCPで他のマシンにデータを送りつけるプログラムが
WinSockエラー10054番で接続を切られて
全然データが送れない子になってしまっていた。
Windowsファイアウォールの例外設定をみたら
そのプログラム(内製、私が作ったわけではないけど現在メンテ引き受け中)のチェックボックスが外れているので、
お~このせいで通信失敗してたのね。といいながら
チェックボックスをONにしても
依然現象は改善されず。
通信まわり苦手。。
WinSockエラー10054番で接続を切られて
全然データが送れない子になってしまっていた。
Windowsファイアウォールの例外設定をみたら
そのプログラム(内製、私が作ったわけではないけど現在メンテ引き受け中)のチェックボックスが外れているので、
お~このせいで通信失敗してたのね。といいながら
チェックボックスをONにしても
依然現象は改善されず。
通信まわり苦手。。
他の方法で通信できるのかと、 (スコア:1)
「10054, WSAECONNRESET, Connection reset by peer,」てのは常識的にはRSTフラグ付きのパケットを受け取ったときのエラーで、RSTパケットは既に繋がっている(と相手が思ってる)ポートに対して不正なシーケンス番号のパケットを送りつけたときか、たーしか繋がってない相手にいきなりSYNなしパケットを送りつけた場合に返ってくる。
...はずなんだけど、窓は開いてないポートにSYN付きパケットを送って「Service/Host not avaliable(だっけか)」なICMPパケットを受け取った時もこのエラーを返すらしい。まずは症状が出てるときにtelnetかなんかで繋いでみてちゃんと繋がるか確認、かな?
それはこうゆうことでせうか (スコア:1)
>他の方法で通信できるのかと相手のそのポートでサーバが待っているのかの二点
分かる範囲で試してみました。
まずはお約束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)だって。。しくしく。
Re:それはこうゆうことでせうか (スコア:1)
>までは来ました(その先はtelnetサービスは待ってないので進みようが無い、よね?)
^]してquitコマンドで終了できまつ。
あるいはプロトコルに則って何か送ってみるとか。
>TCP High/Low Port Disable(-1)だって。
一般的にはクライアントのポート番号が1024未満だと弾かれたりするけど、月例アップデートでその辺が変更されたのかも。
# というかまだやってなかったのか>窓
その Windows は Windows 2003 SP2? (スコア:1)
…URLを記録した紙が見つからない… orz
fjの教祖様
XP Pro SP2です。 (スコア:1)
SNPって初めて聞く単語で、ググ先生に聞いてみたら
遺伝子?塩基?なキャッシュばかりで焦ってしまいました(^^;
#Single Nucleotide PolymorphismsではなくてScaleable Networking Packが正解?
同じXP Pro SP2でも、4台稼動しているうちの1台だけはちゃんと通信ができて
いるので、何が違うのか、通信できなくなってしまった原因は何かを見極めたいの
ですが、なかなか手がかりがなくて塩漬け状態です。
Re:XP Pro SP2です。 (スコア:1)
他人の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の教祖様
Re:XP Pro SP2です。 (スコア:1)
ご指摘の通り、通信できなくなってしまったPCはすべてD*LLのものです。
#大丈夫だったのはNEC MATEだったなあー、と今更ながら思い出しますた
ああスラドに出入りしていて本当によかったと思っています。
アドバイス&解説、ありがとうございます。
明日早速試してみようっと。