>>>(ネットワーク)TCPのスループットとRTTの関係まず、RTT(往復遅延時間)というのはパケットを送信して受信した側が送信側にACKパケットを送り、送信側でそれを受取るまでの時間です。TTL=54さて、これとは別にTCPプロトコルにはウィンドウサイズというものがあります。TCPは確実にパケットが届いたかどうかを確認するため、受信側が送信側にACKパケットを返すわけですが、毎回のパケット一つずつにACKを返すと非常に効率が悪いため、送信側が複数のパケットを送信し、その複数パケットに対してまとめて1回のACKを返すという仕組みをとってます。この"複数のパケットの単位"がウィンドウサイズになるわけですね。(TCPウィンドウサイズはWindowsとかだとRWINと呼ばれており、一時期ブロードバンド回線ならこの値を大きくすることでネットの高速化につながるというような情報もちらほら見られました。)このウィンドウサイズですが、基本的はOSで決まっています。WindowsXPだと64KB(65535Byte)です。サイズ変更についてが参考になります。スタックのパフォーマンスの拡張機能によるとVista以降だと最大16MBまで増やすようです。(WindowsのウィンドウサイズはOSが徐々に大きくしてくれるようですね。品質の悪い回線は小さく、いい回線は大きくしてくれるようです。最大値は上述の通りバージョンによって異なりますが。)さて、ここからが本題ですが、ウィンドウサイズとRTTからTCPのスループットを求めることができます。TCPのACKはウィンドウサイズ毎に送信側に返ってくる(この時間がRTT)ので、TCPの理論最大スループットは下記の計算式で求めることができるわけです。RTT(S)仮にウィンドウサイズ64KBで、RTTが10msだとすると、1秒間に64KBを100回送ることができるということになるので、下記のようになります。52,428,000bpsこれらの計算方法については下記サイトが参考になります。ブロードバンドスピードテストネットワ-クの速度を調べる方法ということで、実際にテストをしてみました。RTTですが、Pingで計ってみます。11msRTTは11ms=0.011sとなってますね。OSはXPなので、pingのパケット長はXPのウィンドウ最大サイズと同じ64KBにしています。後は、計算式に当てはめてみると下記のようになります。LANなので、こんなに遅いことはないはずです。実際に、Iperfで下記の設定で測定してみたところ、94Mbpsはでる結果になりました。上記で求めた理論値(47Mbps)の倍になっています。応答に当たるICMPエコーは、送信元が送ったデータパケットをそっくりそのまま消すようです。(先頭のタイプフィールドにエコー応答(0)とするようですが。)つまり、Pingで64KBのパケットを送った場合、RTTの値は64KBの往復値つまり128KBの時間となるわけですね。@ITが参考になります。いうことで、Pingで求めたRTTから論理スループットを計算するには下記のようにしないといけないようです。RTT(S)この式で上記の値を計算すると下記のようになり、実測とほぼ近い値が出ます。95,272,727bpsPingは最大65500バイトまでしか送れないので、それを超えたバイトをおくって純粋なRTT(ウィンドウサイズ先頭の送信開始から、ACKパケットが返ってくる時間)を測定できるようなフリーのツールがあればいいのですが、なかなかみあたりません。pingで65,535byteを送信できれば以下の式でスループットを計算できます。RTT(S)しばらくの間にすっかりネットワークの詳しい動作について忘れてしまっている3流PGです。ウィンドウサイズとRTTによるスループットの関係図が参考になります。ウィンドウサイズとRTTによるスループットの関係図が参考になります。IperfをラッピングしたGUIベースのJperfを紹介しました。peer」と表示され、うまく測定できません。(バージョンは2.0.2です。Bandwidth)を指定するのも意味が分かりませんし、どれくらいパケットロスしたのかも分かりません。いうことで、さらにネットワークベンチマークソフトを探してみたところ、NetPerfというのを見つけました。ダウンロードはftp://ftp.cup.hp.com/dist/networking/benchmarks/netperf/からできます。(メインはLinux向けのようですが、ちゃんとWindows用のバイナリも有ります)使い方ですが、サーバ側となる方は、下記のようにサーバ用のexeを起動しておくだけでOKです。12865TCPのスループットを計測する場合は、クライアントで下記のようにします。192.168.0.10結果は下記のようになります。20.57RecvSocketSizebytesというのが受信側のソケットバッファでしょうか。デフォルトは8KBのようです。SendSocketSizebytesというのが送信側のソケットバッファでしょうか。デフォルトは8KBのようです。SendMessagebytesが送信パケットサイズでしょうね。これもデフォルトは8KBのようです。ElapsedTimesecsが測定秒数のようです。デフォルト10秒です。Mbpsで表現されるようです。今回だと、93Mbpsという結果になりました。オプションは下記のようになっています。buffersグローバルオプションを指定し、テストオプションを指定するという感じですね。テストオプションで、メッセージ長やソケットサイズが指定できます。テストオプションは下記のような感じです。sizes例えば送信ソケットサイズ64KB,メッセージサイズ64KBとするには下記のようにします。93.00UDPで測定するときは下記のようにします。1024結果は下記のようになります。70.42上段が送信、下段が受信側の結果のようです。いうのはどれくらいのメッセージを送信したかの数のようです。これはUDPのパケットが途中でロスしたからだと思われます。LAN内だとあまりパケットロスしないですが、上記のテストのようにWAN(VPN)だとかなりUDPはパケットロスするのが分かります。詳しい使い方やオプションは下記参考サイトが役立ちます。ネットワーク(ツール)複数のユーザのIE履歴を確認したいターミナルサーバで数百人で利用してるんですが、それらの利用者のIEの履歴を調べる必要が出てきました。ダウンロードはhttp://www.mandiant.com/products/free_software/web_historian/からできます。インストーラ形式なのでクライアントPCにインストールしました。等)を指定し、解析を開始します。時間はかかりましたが、無事解析できました。結果をエクスポートできるので、エクスポートしたデータを表計算ソフト等で解析すれば楽です。Rubusigが参考になります。IEだけでなくいろいろなブラウザに対応してたり、Cookieやダウンロードデータもとれるのもうれしいですね。ユーザにメールの形で送っています。いちいちLinuxサーバにログインしてrootのメール見るは鬱陶しいということで、このroot宛てのサーバ内部からのメールをGmailに転送しようというのが今回の要件です。設定が必要となります。以下ほぼコピペですが、一応メモしておきます。GmailはSMTPにSubmission(ポート587)で、SMTP認証とTLSを使っているので設定が結構厄介です。'MAIL_SETTINGS_DIR`genericstable')GENERICS_DOMAIN_FILE(MAIL_SETTINGS_DIR`genericsdomain')FEATURE(`generics_entire_domain')sendmail.mcの設定が終わったら、sendmail.cfを作成します。/etc/mail/sendmail.cf2.authinfo,genericstableの作成SMTPの認証情報を格納するauthinfoファイルを作成します。"P:passwd"(UはGmailの@より前、IはGmailのアドレス、Pはパスワードを入れます)authinfoファイルが作成できたらauthinfo.dbファイルを作成します。オプションにより生パスワードが見られるリスクは軽減できますね。削除した方が安全かもしれません。/etc/mail/authinfoまた、下記コマンドでgenericsdomainファイルを作成します。/etc/mail/genericsdomainさらに、下記コマンドを実行しgenericstableファイルを作成します。/etc/mail/genericstableこれでsendmail再起動します。下記コマンドでaliasesファイルを編集しroot宛てのメールをGmailに送るようにします。newaliases下記コマンドでテストメールを送信できます。Gmail側で受信しているか確認してみましょう。rootしかし、実際テストしてみると届きません。メールのログを見てみると下記のようになっていました。smtp.gmail.comタイムアウトしてるようです。結局原因はファイアウォールの設定を見逃してたことでした。ここで書いてるiptablesのスクリプトに下記を追加し、反映することでようやく無事にroot宛てメールが転送されるようになりました。ACCEPT補足:SMTP認証はせず、サブミッションポート(ポート587)対応だけなら、「1.sendmail.mcでの設定」で以下の部分のみ設定すればいいようです。M=Ea')dnlあとは、sendmail.cfを作成し、sendmailサービスを再起動するだけです。インストールされていない可能性があるので、RedHat系の場合、yumでインストールしてやります。Linux(HTML)IE8でページ内リンクが動かないIE8でページ内リンクが動かない現象が発生してます。起こるというわけではないんですが、ページの下の方へ行くほどこの現象が頻発してきます。DBの結果を表示するものでサーバの負荷が高く1ページのデータ量がかなり多いもの(テキストオンリーなのに1MB超え)となってます。リクエストを投げてからページを表示するまで若干時間がかかってるようです。(Firebugで計測すると1.92sもかかってます)おそらく、アンカーリンク先のページをまだ完全に読み込んでないのにIEがアンカーリンクへ飛ぼうとして、このような現象が起きたんだと思います。対策としては本来は根本原因である1ページのデータ量を減らすべきなんでしょうが、とりあえずページを完全に読み込んだ段階で、Javascriptを使ってアンカータグへ飛ばすことにしました。使ってアンカータグへ飛ぶのを意図的に(1秒)遅くすることにしました。URLのアンカーを取得する。Webがらみ(.Net)改行無しの全銀フォーマットを可読化する全銀ファイルフォーマットを扱うことになったんですが、銀行側からくる口座振替のファイルをみて驚きました。各レコードを区別する改行が無いのです。全銀フォーマットが固定長なのは知ってましたが、改行が無いのは見づらいです。いうことで改行無の全銀フォーマットを見やすくするアプリを作りました。下記の要件を実装します。チェック有りなら上記要件の2つ目CSV出力とします。ソースはこんな感じです。作ったのできれいじゃないところも有りますが。実装しようとしてました。すると現在のフィルタで選んでいる拡張子が自動的に付きます。(デフォルトでAddExtensionはtrueです)しかし、なぜか拡張子が付きません。下記のような感じだったわけです。あると拡張子が既にあると判断されて、つけてくれないようですね。.Net開発(オンラインツール)どのキーが押されたか判定する今、キーボードのどのキーを押下しているかが分かるオンラインツールがMicrosoftにありました。Javascriptで実装してるようで、完全にブラウザだけで動きます。まれにキーボードが暴走して特定のキーが通電しっぱなしってことがあるので、その確認に使えそうです。英語版キーボードを対象としてるので、日本語独特のキーが認識できないのは残念です。ツールPCから高周波の異音がする原因は?ノートPCからキーンという高周波がするという問い合わせがありました。預ってみたところたしかに聴力検査で聞くような高周波の音がします。異音は液晶が点灯している時しか鳴らず、軽度を低くすると今度はジーというような低周波のノイズ音になります。以前にも友人が似たような現象があったので大体目星は付いていました。原因はやはり液晶ディスプレイのバックライトに(蛍光管)に使われているインバータ不良でした。俗に言う「インバータ鳴き」現象です。最近はバックライトにLEDを使うのも出てきていますが、あれに置き換わればインバータが無いのでこういう現象は発生しなくなるんでしょうね。ダウンロードしてインストールしたんですが、起動しません。ググるとかなり引っ掛かるので、どうやら有名な現象のようです。対処法としては、下記の通りにすればいいようです。フォルダ内に貼り付け。情シスで何でも屋の三流プログラマのコーディング、サーバ管理、PC生活関係のメモ書き。このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。31検索カテゴリ全体Linuxサーバがらみ.Net開発PHP開発C/C++開発JavaSQLツール思ったこととかニュースとか。メッセージを入力してください。