2013/10/22 追記した. Starletのコード読んでてlistening socketにTCP_DEFER_ACCEPTとかいうオプション渡してたので、これ何だって思って調べた. TCPに特に詳しいわけではないので理解に誤りがあるかもしれない. package Starlet::Server; ... # set defer accept if ($^O eq 'linux') { setsockopt($self->{listen_sock}, IPPROTO_TCP, 9, 1) # 9がTCP_DEFER_ACCEPTを表す and $self->{_using_defer_accept} = 1; } ... TCP_DEFER_ACCEPTはLinux 2.4から導入されている. Linux 2.6.32から挙動が若干変わっているらしい. (linux の TCP_DE
サーバNIC(Network Interface Card)の可用性向上や負荷分散にはNIC冗長化が有効です。NIC冗長化については拙著「インフラエンジニアの教科書」にも記しましたが、bonding、チーミング、リンクアグリゲーションなど様々な呼び名があります。今回はLinux上でのNIC冗長化の話しとなりますので、bondingについての話題となります。 【bondingとは】 bondingとは、複数のNICが搭載されているマシンのNICを束ねて1つの仮想的なNICとして扱うことのできる技術です。例えば1GbpsのNICポートが4つ搭載されているサーバとL2スイッチの間を4本のLANケーブルで接続してbonding設定を有効にさせると、冗長化が行われて最低1本が正常であれば1~3本に問題があっても通信が継続できたり、負荷分散が行われて通信帯域幅を4Gbpsに拡張されたりといった使い方が
A0.2.2 DHCPの仕組(まじめ版) DHCPは、DHCPサービスを提供する DHCPサーバと、DHCPサービスを要求する DHCPクライアントによって実行される。このようなサービスを「クライアント-サーバー型サービス)と呼ぶ DHCPは UDP(ポート67, 68)を使う。このポート番号は歴史的には BOOTPと呼ばれる類似のプロトコルによって使われていたため、Etherealでの表示はバージョンに依存して BOOTPとなることがある。びっくりしないように。 サーバ側が使うポートが 67 、クライアント側が使うポートが 68 。調べればすぐ分かることなので覚えなくてもいいが、調べ方が分からない人は覚えよう。 DHCPにおける処理の流れは以下の通り。ただし、ここでは単純化のため図1のようなネットワーク構成を想定している 1. DHCPDISCOVER DHCPクライアントは、ネットワー
インターネットを流れるトラフィックのほとんどがTCP(Trasmission Control Protocol)によるものです。 TCPは、全てのデータが正しく相手に伝わることを保証するため品質の高いデータ通信が実現できます。 また、どのパケットが受け取れなくて、どれが受け取れたかなどをわざわざ考えなくても良いので、プログラムを書くのも簡単です。 では、何故、わざわざRTPというものが必要だったのでしょうか? ここでは、まず最初に何故RTPはTCPではなく、UDPの上に存在しているのかを説明したいと思います。 (もちろん、TCPの上に作ることはRTPの規約上は可能ですが、現実的にはUDPの上でしか実装がないと思います。) その後、何故、UDPの上に共通のRTPというものを構築したのかを説明したいと思います。 RTPは、名前にもある通り、「リアルタイム」なデータを転送するためのプロトコルです
ローカルネットワークのホスト名とIPアドレスの対応はDNSサーバで管理すると便利です。IPアドレスを覚えたりhostsをメンテナンスするのは大変です。でもbindって難しそうだし、メンテナンスに手間がかかるし、という方にはdnsmasqがおすすめです。 dnsmasqは軽量なDNSサーバとDHCPサーバです。/etc/hostsを管理する延長でDNSサーバを管理できます。この記事ではDNSサーバに焦点を当てて説明します。 ローカルネットワークにDNSを立てる まず、以下の場合を考えてみます。 ホスト名とIPアドレスの対応を一元管理したい。 ローカルネットワークのホストには xxx.laputa.example.com を付与する。 FQDNでなくてもアクセス可能にしたい。 例えば、192.168.2.3 が muska.laputa.example.com という名前だとすると、 ping
TCPヘッダの構造 TCPでは信頼性の高い通信を実現するために、受信確認やスライディング・ウィンドウ制御、そしてさまざまな付加機能などを用意している。そのためUDPよりも複雑なヘッダ情報を持っている。「チェックサム」はIPヘッダなどと同様に、1の補数で計算する。 連載第7回「データグラム通信を実現するUDPプロトコル―2.UDPパケットの構造」で示したUDPパケットの構造と比べると、非常に複雑になっている。UDPでは、通信に先立ってコネクションを確立する必要のないデータグラム型通信モデルを使用しているため、送信される各UDPパケットは完全に独立していた。そのため、UDPパケットごとにあて先のポート番号(送信元を区別するための送信元ポート番号)さえあれば、相手にパケットを届けることができる。 だがTCPでは、通信に先立ってコネクションを開設し、さらに通信中にも、前回解説したシーケンス番号に基
2009/2/119:54 【ネットワーク】Wiresharkで自端末へのパケットをキャプチャする方法 ネットワークを流れるパケットをキャプチャするためのソフトウェアにWiresharkというソフトがあります。 このWiresharkでは、送信元と宛先が同じ端末のパケット(自ホストに対して送信したパケット)をキャプチャすることができません。 これを取得できるようにする方法について説明します。 以下は、Windows XP SP2での操作内容です。 (Vista等では異なる可能性があります) まず、最初に自ホストに対して送信したパケットがWiresharkでキャプチャ出来ないことを確認します。 自ホストに対してパケットを送る単純な方法は、localhostやループバックアドレス(127.0.0.1)に対してpingを送る方法です。 以下、操作手順です。 1.Wiresharkを起動する。 2
在庫限り。人気のSurface Duo 2 が再入荷され、最大 36% OFF 中。ご購入はお早めに。
図1 DTNによるデータのやりとりのしくみ ストア・アンド・フォワード方式でデータをやりとりするため,ストレージの使用を前提とする。 DTN(delay/disruption-tolerant networking)は,中断や切断が多発したり,大きな伝送遅延が生じたりする“劣悪な”通信環境でも,信頼性のあるデータ転送を実現する通信方式である。もともとは惑星間インターネットといわれる宇宙空間の通信手段の研究から生まれてきたものだ。 インターネットで信頼性のあるデータ転送を行う場合,トランスポート層のプロトコルとしてTCPを使う。ただしTCPは,物理的なリンクがちょっと切れただけでも通信に失敗する。また,データを送受信するときに伝送遅延があるとパフォーマンスが悪くなる。これは,TCP/IPによる通信では,エンド・ツー・エンドの物理的なリンクが安定しているという前提に立っているためだ。 これに対
「名前サービス」は、ネットワーク上に存在する特定のマシンやサービスを検索するために使われる。マシン名やサービス名をキーにして、検索要求をネットワーク上にブロードキャストしたり、WINSサーバに問い合わせたりすると、そのマシン名やサービス名を持つノードが要求に対して検索応答を返す(検索するキーは16bytesの文字列であり、1byte目から15byte目にホスト名/サービス名を記述し、最後の16bytes目に検索するサービスの種類を指定する。詳細についてはマイクロソフトのサポート技術情報「NetBIOS名の 16 番目の文字」などを参照のこと)。いったん目的とするホスト/サービス名が見つかれば、その後は、データグラム・サービスやセッション・サービスを使って、目的とするサービスを利用する。 以上のような仕組みのため、SMBサービスとTCP/IPを組み合わせて利用しているネットワーク環境では、外
cagra高速化にあたってのノウハウを一部公開してみます。また明日校正/更新します。つっこみ待ちです。 select(2)の代わりにepoll_wait(2), kqueue, /dev/epoll等を使う 他に山ほど解説ページがあるので略 大量のディスクリプタを処理するようなサーバの場合、多少効果があるかもしれません。しかし、クライアント数が少ない場合、劇的な性能の向上は見込めないとおもいます。クライアント数が多い場合は、1セッション1スレッドなモデルではOS側のタスクスイッチングのオーバーヘッドが効いてくることも多いです。クライアント数を増やすには複数のセッションを1スレッドで処理できるようにすると良いです。実装にあたっては、non-blocking ioを活用すると効果的です。 TCP_NODELAYを設定する Nagleアルゴリズムをオフにします。多少応答性が良くなります。 これっ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く