タグ

tcpに関するTAKESAKOのブックマーク (6)

  • ネットワークプログラミングの基礎知識

    ネットワークプログラミングの基礎知識 ここでは IP アドレスやポート番号、クライアントとサーバの役割などを説明し、 perl・C言語・Java などでソケット (Socket) を使った HTTP クライアントや POP3 クライアント、簡単なサーバを作成してみます。 要はネットワークプログラミングをやってみよう、ということです。 このページのサンプルプログラムは、RFC などの規格に準拠した「正しい」プログラムではありません。 また、全体的にエラー処理が不十分です (今後改善する予定です)。 あくまでも概要を理解するためのサンプルととらえてください。 もし気でしっかりとしたクライアントやサーバを書きたいなら、このページを読んだ上で、 さらに RFC を熟読し、そして wget・Apache・ftp コマンドなどのソースを参考にしてください。 このページに間違いを見付けたら、掲示板

  • はやいTCPサーバを書く際に忘れがちなこと - kazuhoのメモ置き場

    はやいTCPサーバの書き方 - nyaxtのPC作業ログ で id:nyaxt さんが書いてらっしゃるように、 epoll や kqueue を使う TCP_NODELAY, TCP_DEFER_ACCEPT *1 等を活用する TCP パケットを意識する I/O システムコールの回数を最小にする sendfile といったあたりは、確実にやるべきことだと思います。一方で、TCP 関連以外のオーバーヘッドが実は結構あって、 接続のタイムアウト処理 ログの出力 メモリの確保や解放をやらない あたりにも気を配る必要がある、と思います。 接続のタイムアウト処理については、以前 Kazuho@Cybozu Labs: 高速なCometサーバを書いてみた件 に書いたように、ビットアレイのリングバッファを使うのがベストだと思います。 ログの出力について、複数行を1回のシステムコールにまとめてもいいかど

    はやいTCPサーバを書く際に忘れがちなこと - kazuhoのメモ置き場
  • Re はやいTCPサーバの書き方 - kazuhoのメモ置き場

    はやいTCPサーバの書き方 - nyaxtのPC作業ログ について、いくつか気になった点があったので。 Nagleアルゴリズムは、相手側のACK送信をまとめてくれるものです。これは、下記の様にアプリケーション側でパケットを意識した処理を行っている場合、邪魔になることがあります。 違うと思います。自分の理解では、Nagle アルゴリズムは、ACK を受信していないデータがある場合に、次のパケットを送信しない、というものです。RFC896 から引用すると、 The solution is to inhibit the sending of new TCP segments when new outgoing data arrives from the user if any previously transmitted data on the connection remains unackn

    Re はやいTCPサーバの書き方 - kazuhoのメモ置き場
  • Windows XP/2003のTCP同時接続数制限とその回避:鵜飼裕司のSecurity from KAGURAZAKA:ITpro

    Windows XP SP2とWindows Server 2003 SP1のTCP/IPスタックでは、不完全な外向きのTCP同時接続数を10接続に制限しています。接続数が10に達した場合、接続要求はキューイングされ、ある一定間隔で処理されるようになります。 この制限は、ホストがワームに感染した際、他のホストへの影響を最小限にするため、Windows XP SP2とServer 2003 SP1で新たに実装されました。しかしこの制限は、不完全な外向きのTCP接続を大量かつ同時に張るアプリケーションにおいては、大きなパフォーマンス低下を招く可能性があります。例えば、P2Pシステムや脆弱性スキャナなどが挙げられます。特に脆弱性スキャナは業務で利用するケースが多いと思いますので、パフォーマンス低下は非常に致命的です。 これを回避する選択肢の一つとして、TCP同時接続数制限の無いプラットフォームを

    Windows XP/2003のTCP同時接続数制限とその回避:鵜飼裕司のSecurity from KAGURAZAKA:ITpro
  • 導入メリット | ロードバランサー NetScalerの導入によって得られるメリット

    Citrix NetScaler - Google, Yahoo!, Amazon, mixi, 魔法のiらんどが選んだロードバランサー(負荷分散装置) サイトはCitrix認定 Solution Advisorである株式会社サーバーワークスが運営しています NetScalerは、従来のロードバランサ機能、Webサーバの負荷を軽減するアクセラレーション機能、サイトの安全性を高める高度なセキュリティ機能を集約し、Webサイトの安全確実な運営の実現と、トータルコストの削減という相反する要求を両立できる、優れたアプライアンス製品です。 メリット1:Webサーバが軽くなる!Webサーバの数が減らせる! TCPコネクション集約 NetScalerは、多数のクライアントから送信されるTCPのコネクションを集約してWebサーバへ渡します。TCPの接続処理はWebサーバのCPU、メモリを消費する処理であ

    TAKESAKO
    TAKESAKO 2008/01/24
    ふむふむ
  • アプリケーションプロトコル設計のベストプラクティス (over TCP) - kazuhoのメモ置き場

    みたいなものを誰かまとめてないのかな、と思ってる。ないのかな。とりあえず自分用メモ。 概要 接続後最初の電文は client => server であるべき 理由: syn_cookies, dataready, パケット数削減 (w. SYN ACK) 最初の電文は、プロトコルの magic で始めるべき 理由: gopher://host:25/ attack バージョン番号も含めるべき 何がコンパチで何が非互換か、最初からバージョン番号の解釈を明確にしておくこと 例: HTTP extensibleな構造化の手法は3種類 デリミタ方式 TLV ASN.1 PER デリミタ方式 テキストプロトコル系で一般的。ペイロード内にデリミタが出現する場合はエスケープ。 問題は遅いこと メタ情報のみデリミタでコンテンツは length というモデルも (HTTP) デリミタの定義をはっきりさせるこ

    アプリケーションプロトコル設計のベストプラクティス (over TCP) - kazuhoのメモ置き場
    TAKESAKO
    TAKESAKO 2007/11/08
    ASN.1 PER は奥さんから教えてもらったはずなのにw
  • 1