68user's page 掲示板

Prev< No. 3823〜3845> Next  [最新発言に戻る] [過去ログ一覧]
No. 3823 # 68user 2004/06/24 (木) 02:14:44
>>3821 マツマツ
> FD=10で送信後そのFD=10で受信するのに、select()からの戻りが数十秒
> (ほとんど決まって、24〜25秒経って)経って検知され、recv()したら
> 返値が0であると言う動作があります。
よく理解できませんが、
    1. send し、select で待つ。
    2. 相手側はデータを受信後、すぐに close しているはず。
    3. ところが select で 24〜25 秒待たされ、その後に読み込み可能になる。
    4. recv すると 0 が返ってくる。
ということであれば、
    a. ネットワークの質が悪く、TCP の再送タイマが働いている
    b. 2 で相手が 24〜25 秒かけて何かを処理してから close している
くらいしか思いつきませんでした。パケットダンプしてみては。

>>3822 ユウキ
そんな複雑なプログラムを書くのはやめて、まずは単純に POST する
プログラムを書くべきでしょう。もし、そういうプログラムは既に作成済
ということであれば、うまくいく場合とうまくいかない場合のリクエストを
見比べればわかるでしょう。


あと、質問をする前に
    http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse
を読んでください>質問者の方々

自分の使っている環境すら書かない人、回答してもわかったのかどうか返事さえ
書かない人が多くて、少々うんざりです。

No. 3824 # ユウキ 2004/06/24 (木) 04:44:17
申し訳ないです;少し安易に書き込んでしまいました。。。
単純にPOSTしてみます。深夜なのに申しわけなかったッス

No. 3825 # マツマツ 2004/06/24 (木) 15:55:40
●コメント/アドバイスの程ありがとうございます。
(個人的に多忙な面もあり、有意な内容が書かれていることに対して、
返事が遅れた点は、お許しください)

後追いの記載ですいませんが、使用しているマシンはSUNのSC2000
(OS:Solaris2.4)と、SVR4ベースOSを使ったマシン(ここでは相手側)
です。(LANのスペックは10BASE) <=両者とも今ではかなり古いものですが...。
またあえて言わしていただきますと、下記の3,4が発生するのは
SVR4ベースOSを使ったマシン側です。

> FD=10で送信後そのFD=10で受信するのに、select()からの戻りが数十秒
> (ほとんど決まって、24〜25秒経って)経って検知され、recv()したら
> 返値が0であると言う動作があります。
よく理解できませんが、
        1. send し、select で待つ。
        2. 相手側はデータを受信後、すぐに close しているはず。
        3. ところが select で 24〜25 秒待たされ、その後に読み込み可能になる。
        4. recv すると 0 が返ってくる。
ということであれば、
        a. ネットワークの質が悪く、TCP の再送タイマが働いている
        b. 2 で相手が 24〜25 秒かけて何かを処理してから close している
くらいしか思いつきませんでした。パケットダンプしてみては。

●まずは、LANアナライザーを噛まして見たいと思います。
    ちなみにTCPの再送タイマってものが働いている場合、そのタイマは
    24〜25秒の値なのでしょうか。

>>3822 ユウキ
そんな複雑なプログラムを書くのはやめて、まずは単純に POST する
プログラムを書くべきでしょう。もし、そういうプログラムは既に作成済
ということであれば、うまくいく場合とうまくいかない場合のリクエストを
見比べればわかるでしょう。
●そうですね。(基本的なことから行うべきですね)

No. 3826 # 68user 2004/06/24 (木) 21:05:18
>>3825 マツマツ
> ちなみにTCPの再送タイマってものが働いている場合、そのタイマは
> 24〜25秒の値なのでしょうか。
「詳解 TCP/IP Vol.1」によれば、RTT (往復時間) がほぼ 0 な LAN 上では、
再送間隔は
      1秒・3秒・6秒・12秒・24秒…
で、これを最初の送信からの経過時間で表すと
      1秒・4秒・10秒・22秒・46秒…
だそうです。

ただし RTT にそれなりの時間がかかる場合は、上記の通りには
なりません (計算式が難しくてよくわかりませんが)。

なお、上記の事柄が Solaris 2.4 や、同時代の SVR4 にも当て
はまるかどうかはわかりません。

No. 3827 # マツマツ 2004/06/24 (木) 22:32:53
> ちなみにTCPの再送タイマってものが働いている場合、そのタイマは
> 24〜25秒の値なのでしょうか。
「詳解 TCP/IP Vol.1」によれば、RTT (往復時間) がほぼ 0 な LAN 上では、
再送間隔は
            1秒・3秒・6秒・12秒・24秒…
で、これを最初の送信からの経過時間で表すと
            1秒・4秒・10秒・22秒・46秒…
だそうです。
●ありがとうございます。
(TCP/IPプロトコルについて、技術的な専門知識が分っていないため、
今後は勉強したいと思います。)
で、少々また不仕付けなお話ですみませんが、再送タイマが発生していると
した場合に、その原因/要因には、何があるでしょうか。
”ネットワークの質が悪く、TCP の再送タイマが働いている”
の部分で気になり、どちらかのマシンのHW不調(LANI/Fカードや
CPUボード等)とか、LANケーブル、HUB、トランシーバなどの
不調の影響で発生することとか考えられるでしょうか?。
(パケットトレースで確認することは必要なのですが、発生していると
分った時の発生原因を特定する上で、まず想定できる可能性のものがあれば
と思った次第からです)
(HW回りを疑って見るべきかどうか、何とも言えないのですが...)

ただし RTT にそれなりの時間がかかる場合は、上記の通りには
なりません (計算式が難しくてよくわかりませんが)。

なお、上記の事柄が Solaris 2.4 や、同時代の SVR4 にも当て
はまるかどうかはわかりません。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 3828 # 68user 2004/06/26 (土) 00:30:41
>>3827 マツマツ
パケットを送信した後、一定時間が経過しても ACK が返ってこなければ
再送するわけなので、
> どちらかのマシンのHW不調(LAN・I/FカードやCPUボード等)とか、
> LANケーブル、HUB、トランシーバなどの不調の影響で発生することとか
> 考えられるでしょうか?。
これらすべてがパケット再送の原因となりえます。

No. 3829 # 68user 2004/06/26 (土) 00:43:43
この土日で当ページの引越しを予定しています。しばらく繋がらなかったり
するかもしれませんが、あらかじめご了承ください。

No. 3830 # 68user 2004/06/27 (日) 06:03:01
というわけで引っ越しました。

現時点でわかっている問題点は、
    - 掲示板の全文検索が動かない (準備中)
    - SEGA BBS 過去ログの全文検索が動かない (準備中)
です。この他に変なところがあればご指摘いただけると幸いです。

No. 3831 # 68user 2004/06/28 (月) 01:28:30
>>3830 68user
> - 掲示板の全文検索が動かない (準備中)
一応検索できるようになりました。

No. 3832 # 68user 2004/06/29 (火) 03:06:18
日記。

FreeBSD 5.2.1-RELEASE の /usr/bin/sort は NetBSD の sort から
GNU の textutils の sort に変わってしまったらしい。sort -c
で件数を数えることができなくなってしまった。ショック。

No. 3833 # 68user 2004/06/30 (水) 02:06:52
>>3832 68user
> sort -c で件数を数えることができなくなってしまった。
間抜けな勘違いをしていました。uniq -c と混同してただけでした。
sort も uniq もこれまで通り普通に使えますね。

No. 3834 # マオ猫 2004/06/30 (水) 23:03:44
最近になってTCP/IPの勉強を始めましたが、
    データリンク層
    トランスポート層
    ネットワーク層
の役割に反する実装の実例を挙げろって言われても……
何の事だかさっぱりです。
誰かわかるひといませんか?

No. 3835 # 68user 2004/06/30 (水) 23:19:43
>>3834 マオ猫
> …の役割
は何なのかをまず考えてみるべきでしょう。

ところで素朴な疑問ですが、これってどんな本 or 人 or 試験
からの出題ですか?

No. 3836 # 2004/07/03 (土) 21:41:41
いつも参考にさせてもらってます。
この度、仕事でSSL/TSLに対応したバッチ用のFTPクライアントが必要になったのですが、
Perlで実現できますでしょうか?
いろいろ検索してみたのですが、これといったのが見つからなくて・・・
もし何か知っていましたら、ご教授お願いします。

No. 3837 # 2004/07/03 (土) 21:43:42
ちなみに使用するサーバはRedHat Linux9.0です。

No. 3838 # 68user 2004/07/03 (土) 23:50:56
>>3836
> この度、仕事でSSL/TSLに対応したバッチ用のFTPクライアントが必要になったのですが、
> Perlで実現できますでしょうか?
Perl で「簡単に」行うモジュールはまだないと思います。Perl にこだわるなら
    http://perldoc.jp/docs/modules/IO-Socket-SSL-0.91/SSL.pod
などを使ってがんばるしかないでしょう。

あるいは http://www.perldiscuss.com/thread.php?group=perl.libnet
「Net::FTP versus TLS」のスレッドの人たちに「サンプルくれ!」とお願いする
手もあるかも (もらえたらわたしにもください)。

上記のスレッドでも出ていますが、手抜きするなら lftp (http://lftp.yar.ru/)
SSL/TLS に対応しているようなので、これを system なりで呼び出すのが楽だと思われます。

No. 3839 # 68user 2004/07/04 (日) 01:45:20
FreeBSD 5.2.1-RELEASE に TLS な proftpd をインストールし、lftpd で
接続してみるメモ。OpenSSL は標準でインスールされているが、なぜか
proftpd を make -DWITH_OPENSSL install すると ports の OpenSSL が要求
されるので、まずそれを入れる。

    # cd /usr/ports/security/openssl && make install
    # cp /usr/local/openssl/openssl.cnf.sample /usr/local/openssl/openssl.cnf
    # mkdir /usr/local/openssl/proftpd

鍵作成 (パスフレーズなし)。CSR を作成し、自己認証。

    # cd /usr/local/openssl/proftpd
    # openssl genrsa > key.pem
    # openssl req -new -days 365 -key key.pem -out csr.pem
    # openssl x509 -in csr.pem -out cert.pem -req -signkey key.pem -days 365

ProFTPD のインストール。

    # cd /usr/ports/ftp/proftpd
    # make -DWITH_OPENSSL install
    # mkdir /var/run/proftpd
    # cat <<END >> /usr/local/etc/proftpd.conf
    <IfModule mod_tls.c>
            TLSEngine on
            TLSLog /var/log/proftpd-tls.log
            TLSProtocol TLSv1
            TLSRequired off
            TLSRSACertificateFile /usr/local/openssl/proftpd/cert.pem
            TLSRSACertificateKeyFile /usr/local/openssl/proftpd/key.pem
            TLSVerifyClient off
    </IfModule>

ProFTPD 起動。rc まわりが rcNG になったので、proftpd_enable が必要 (?)

    # echo 'proftpd_enable="YES"' >> /etc/rc.conf
    # /usr/local/etc/rc.d/proftpd.sh start

lftpd で接続テスト。

    # cd /usr/ports/ftp/lftpd && make install
    % lftp -d hoge@localhost
    Password: ***
    lftp hoge@localhost:~> ls
    ---- Connecting to localhost () port 21
    <--- 220 ProFTPD 1.2.10rc1 Server (ProFTPD Default Installation) [hostname]
    ---> AUTH TLS
    <--- 234 AUTH TLS successful
    Certificate depth: 0; subject: /C=JP/ST=XX/O=Internet Widgits Pty Ltd; issuer: /C=JP/ST=XX/O=Internet Widgits Pty Ltd
    WARNING: Certificate verification: self signed certificate
    ---> USER hoge
    <--- 331 Password required for hoge.
    ---> PASS XXXX
    <--- 230 User hoge logged in.
    ---> PWD
    <--- 257 "/usr/home/hoge" is current directory.
    ---> PBSZ 0
    <--- 200 PBSZ 0 successful
    ---> PRET LIST
    <--- 500 PRET not understood
    ---> PASV
    <--- 227 Entering Passive Mode (127,0,0,1,192,51).
    ---- Connecting data socket to () port 49203
    ---> LIST
    <--- 150 Opening ASCII mode data connection for file list
    ---- Closing data socket
    <--- 226 Transfer complete.
    (略)
    lftp hoge@localhost:~>

No. 3840 # 68user 2004/07/05 (月) 01:37:21
どうでもいいんですが、ここ数年モチベーションが低下して、web の
更新が非常に少なくなっていました。

そこで数日前からトップページなどにバナー広告を付けてみました。
      バナー広告を貼る → 収入がっぽり → 更新する気力がわく
ということを夢見ていましたが、3日での収入はなんとびっくり 15円でした。
つまり 1日 5円。月に150円。年に 1800円。

5,000円以上にならないとお金が振り込まれないので、あと 2年半くらい
経ったらわたしは 5,000円手にすることになります。いやーここまで
儲からないものとは。

しかしわたしは変なところで前向きなので、今の 100倍の人が見にきて
くれれば毎日 500円、月に 15,000円も儲かるかと思うと、モチベーション
あがりっぱなしです。というわけで、訪問者を 100倍にする第一歩として、
    web と CGI のひみつ (http://X68000.q-e-d.net/~68user/webcgi/)

    全文検索 (http://X68000.q-e-d.net/~68user/webcgi/search-1.html)
を全面的にリライトしました。

No. 3841 # naisttn 2004/07/05 (月) 15:56:50
サイト更新ありがとうございます。参考にしてます。
全文検索できないのですが。(実行に必要な権限がない。とのこと)
テスト中でしたらすみません。

No. 3842 # 68user 2004/07/05 (月) 16:17:13
>>3841 naisttn
> 全文検索できないのですが。(実行に必要な権限がない。とのこと)
掲示板の全文検索ですね?

namazu.cgi の存在をすっかり忘れてしまい、cgi-bin/wwwboard/ 以下を
閲覧不可に設定してしまいました。本日中に直します。

No. 3843 # 68user 2004/07/05 (月) 19:44:14
>>3841 naisttn
直しました。ご指摘ありがとうございました。

結局 .htaccess を
    # namazu.cgi 以外はアクセス拒否
    SetEnvIf Request_URI "namazu.cgi" IS_NAMAZU
    order deny,allow
    allow from env=IS_NAMAZU
    deny from all
としたのですが、他にわかりやすい書き方ないですかねぇ?

    <Files !~ "namazu.cgi">
        deny from all
    </Files>
とか
    <Files "namazu.cgi">
        <Else>
            deny from all
        </Else>
    </Files>
とか
    <FilesMatch "(?:(?!namazu.cgi).)*">
        deny from all
    </FilesMatch>
とか書けないもんでしょうか。

てゆーか、apache の書式は絶対に腐ってると思う。

No. 3844 # 68user 2004/07/06 (火) 22:07:54
UNIX の部屋
      http://x68000.q-e-d.net/~68user/unix/
を更新しましたが、たいしたことは書いていません。

No. 3845 # ニッタン 2004/07/10 (土) 02:28:05
OpenSSLを使ってC言語でHttpClientを実装する方法を参考にさせて頂きました。
ですがサンプル通りでは、SSL_connect()で-1が返ってきます。
ずっと調べてまして、乱数を作成する時の種を設定しないと行けないみたいです。
それもある程度の長さの種じゃないと駄目なようです。(私の環境では32以上)
今、自宅なのでOpenSSLのバージョンはどれなのか判りませんが、
SSL_connect()するまでに以下の関数のどれかを使うと良い様です。
1、RAND_load_file()
2、RAND_seed()
3、RAND_poll()
一番楽なのは3を使うのが楽ですし、一般的で確実かもしれません。
ちなみにマスタリングTCP/IP SSL/TSL編のサンプルでは1が使われてました。

できれば、「SSL/TLS でアクセスしてみよう」に追記して頂ければ、
今後同じ所で嵌る人が困らないと思います。
お忙しいと思いますが、宜しくご検討下さい。

Prev< No. 3823〜3845> Next  [最新発言に戻る] [過去ログ一覧]