タグ

networkとalgorithmに関するjjzakのブックマーク (16)

  • poenyでのWinny2ファイル共有互換プロトコルの実装メモ (1): b448aaf7x.txt

  • IP のチェックサム -- 1の補数演算

    問題設定 IP チェックサムは以下の方法で計算されることになっています: パケット全体を 2オクテットごとの 16ビット列にして、 それぞれを 1の補数として和を求め、 それの 1の補数をチェックサムとする。 計算時にはチェックサムのエリアは 0 として計算する。 (UDP はチェックサムはオプション。IP と TCP は必須) この計算で不思議な点が 2点あります: 1の補数って何? チェックサムは 0 にならないの? (UDP でチェックサムを使用しない場合は、0 を入れることになっていますので) 稿では、この 2点についての謎を説き明かしたいと思います。 1の補数というもの まずは、「補数」について、数学的な準備をしましょう。ちょっと長いかも知れません。単に補数といいますと、実は符号を取り替えた数を示したりしますが、稿では n の補数を考える必要があります。 n の補数を考えると

  • IP,ICMP,UDP checksum calculation

    ★IP,ICMP,UDP のチェックサムの計算方法 概要 TCP/IPのIP, ICMP,UDP, TCP のヘッダにはそれぞれ、チェックサムがある。 TCPのヘッダはまだためしていないので、IP,ICMP,UDPのチェックサムの 計算方法を紹介する。 どのチェックサムも、ネットワークバイトオーダーの16ビットの数値を 読み出して1の補数和の1の補数をチェックサムとする点は共通だ。 チェックサムを計算する領域は、IPヘッダ、ICMPデータはそれぞれ、そのもの の範囲だが、UDPではUDPの領域に加えて、source, destinationの IPアドレス、プロトコル番号、データ長からなる擬似ヘッダを含める。 1の補数和(complement sum)の1の補数(complement)? 16bitの数値Aの1の補数は、0xffff-Aと定義されるが、bit反転でもある。 では、1の補数和

    jjzak
    jjzak 2010/08/24
    チェックサムの計算
  • BitTorrentのファイル配信メカニズム — ありえるえりあ

    Linuxのディストリビューションの配布などで配布サーバの回線速度などがボトルネックになり、円滑にファイルを配布することはコストがかかります。 BitTorrentは配布者の負担を軽減して、素早くファイルを配信することを目的に開発されたP2Pソフトウェアです。 BitTorrentの動作概要 ------------------- BitTorrent では、トラッカーとよばれる全てのピアとピアのアップロード/ダウンロード能力、ファイルの取得状況を監視・管理するサーバが存在します。一般的なP2P システムではP2Pネットワーク内を検索してからファイルの取得という動作を行いますが、BitTorrentでファイルの検索という作業は行わずに、トラッカーに問い合わせます。ファイルの検索をクライアント・サーバで行うということで、従来の分類ではハイブリッド型P2Pシステムになります。 BitTorre

  • RPC サーバの遅延リターン - steps to phantasien(2009-07-04)

    最近は過労気味でウェブにものを書くこともできない, という話で上司の同情を誘うべく 日人の労働時間やストレスの実態をまとめた エンドレス・ワーカーズ を読んだら, 自分の労働時間は日人労働者の上位 2 割から漏れていることを知り愕然とした. あんなに働いたってのに...残業エリートへの道は険しい. 道を進みたいわけじゃないけれど. (平均は越えてたぜ!) いずれにせよ流行からはすっかり脱落しているので, 時流を無視して仕事の話でもしよう. 以前, 会社の blog で RPC の結果をノンブロッキングスタイルで受け取るプリミティブ "弱関数" を提案した. でも試行錯誤の結果, いまは使っていない. C++ での弱参照は意図しないリークを作りやすい. 使いわすれることも多く, 忘れた頃にクラッシュする. 要求は明示的にキャンセルした方がいいことがわかった. (世間はみんなそうやってます

  • LISPMEMO

    LISPUSERLISPMEMOLisp isn't a language, it's a building material. -- Alan Kay 先日 ANSI Common Lisp の bfs がわかりにくい、という話があったので。 A -> B, C B -> C C -> D で、このようなネットワークの A から C までの最短経路を求める。 (defun shortest-path (start end net) (bfs end (list (list start)) net)) (defun bfs (end queue net) (if (null queue) nil (let ((path (car queue))) (let ((node (car path))) (if (eql node end) (reverse path) (bfs end (app

  • ダイクストラ法(最短経路問題)

    ダイクストラ法 (Dijkstra's Algorithm) は最短経路問題を効率的に解くグラフ理論におけるアルゴリズムです。 スタートノードからゴールノードまでの最短距離とその経路を求めることができます。 アルゴリズム 以下のグラフを例にダイクストラのアルゴリズムを解説します。 円がノード,線がエッジで,sがスタートノード,gがゴールノードを表しています。 エッジの近くに書かれている数字はそのエッジを通るのに必要なコスト(たいてい距離または時間)です。 ここではエッジに向きが存在しない(=どちらからでも通れる)無向グラフだとして扱っていますが, ダイクストラ法の場合はそれほど無向グラフと有向グラフを区別して考える必要はありません。 ダイクストラ法はDP(動的計画法)的なアルゴリズムです。 つまり,「手近で明らかなことから順次確定していき,その確定した情報をもとにさらに遠くまで確定していく

  • Rijndael Inspector

    jjzak
    jjzak 2008/05/18
    AESブロック暗号の動作を可視化
  • Tomo's HotLine

    現代音楽に多くの足跡を残した作曲家「シュトックハウゼン」 来日コンサートで演奏されたときの姿を一度だけ拝見したことがありますが、際立つ存在感だったのを記憶しています。 3つのオーケストラのための曲「グルッペン」、世界中の国歌を取り入れた「ヒュムネン」などインパクトの強い曲が多いですが、世界初の電子音楽を作曲したのも彼です。一番最初の電子音楽は「習作1」<1953>ですが、その後作られた「習作2」<1954>は楽譜が出版されています。 実際楽譜と曲が連動したYoutubeを見ると、どのような曲でどんな楽譜になっているのか理解しやすいです。 習作2(Youtube) 上の...

    Tomo's HotLine
  • Erlangで分散ハッシュテーブルを実装してみた - NO!と言えるようになりたい

    並行言語であるErlangでPeer-to-Peer Network技術の一つである分散ハッシュテーブルを実装してみたところ,わずか1000行程度で実現できました.ノードが頻繁に出たり入ったりする,いわゆるchurn下でもそれなりの性能が出せたので,SourceForge.netで公開してみます.興味のある方はどうぞ. http://sourceforge.net/projects/ermdia/ 内部アルゴリズムはKademliaと呼ばれるものを利用しています.BitTorrent等でおなじみのアルゴリズムですが,データのput/getなどの通常のメッセージの交換時にルーティングテーブルをアップデートするため,ルーティングテーブルの維持コストがChord等に比べて低いという特徴があります.実装もそれなりに簡単で,過去にSymphonyと呼ばれる分散ハッシュテーブルを実装したのですが,それ

    Erlangで分散ハッシュテーブルを実装してみた - NO!と言えるようになりたい
  • Network Coding:Geekなぺーじ

    最近巷で話題の「Network Coding」です(どんだけニッチな「巷」だよ!という突っ込みは自重願います)。 既にご存知の方には今更かも知れませんが、最近これを知って発想に結構感動したので紹介してみました。 グラフ理論系の話で、「Routingでは出来ないけどCodingならできる」というキーワードが良く登場します。 個人的には、まだ使いどころが良く理解できていないのですが、話としては非常に面白かったです。 XORを使って重ねる Network Codingの最大の特徴は、途中ノードがXORで重ねる事によって伝送に必要な情報量を削減することです。 以下の図は、最も単純な例を示したものです(wikipediaにあるpublic domainの図に加筆)。 まず、AとBという情報があります。 このAとBを2箇所ずつ、合計4箇所に送りたいとします。 このとき、1つのデータを送信するには、1つ

  • Network Flow

    ネットワーク 定義 G:有向グラフ V:点の集合 E(G)={e=(u,v)|u,v∈V}:Gにおける辺の集合 cap(e):各辺eの容量 s:湧出点、入口, t:流入点、出口 (s,t∈V) N=(G,cap,s,t):ネットワーク f:E(G)→R+(辺集合E(G)から非負実数集合への関数) δ-(v):vを終点とするNの辺の集合 δ+(v):vを始点とするNの辺の集合 ただし、fは次の二つを満たす

  • P2P basic

    P2P basic P2Pとは何か?〜基礎から研究紹介まで〜 最近,P2Pという言葉を良く聞きます。ニュースの中でも「P2Pを意識している」とか「P2Pの研究に着手」というニュースを聞いたことがあるのではないでしょうか? しかしながら,P2Pとは何かいまいちわからなかったり、どんなことに役に立つのか調べにくいことも確かです。 またP2Pの動向は激しく,その流れについていくのも大変です。 私は情報系の研究所でP2Pの研究開発をしていました。 そのため、このような現状を踏まえてP2Pの基礎から私の研究まで重要な部分を なるべくわかりやすく紹介致します。 また用語についてはわかりやすさを優先するために一部不正確なところがあるのでご了承下さい。 質問,コメント等はメール(tnishita@yahoo.co.jp) にて連絡して頂くと,ページ改良の参考になりますのでよろしくお願い致します。 P2Pに

  • Studying HTTP

    FX取引所の照会とテクニカル、経済指標の見方等を解説していきます。

    Studying HTTP
    jjzak
    jjzak 2006/11/06
    HTTPプロトコルの解説HTTP/1.1 リクエストで使用されるメソッドや、過去に提案されたメソッド等
  • Winnyの通信解読に挑戦!

    Winnyの通信を特定する方法には,「流れるパケットのパターン(トラフィック・パターン)を調べる方法」と,「パケットの中身を調べてWinnyのパケットであることを確認する方法」の2通りがある。前者は,直接中身のデータをのぞいているわけではないため,通信の秘密を守るという大前提があるプロバイダがWinnyを規制する際に使っている。しかし,Winnyの通信を確実に特定するなら,後者の方法がベストである。実際にWinnyの通信を解読できるのか,Winny作者の金子勇氏の著書『Winnyの技術』やインターネットで得られた情報などを参考に挑戦してみた。 Winny(ウイニー)同士の通信はすべて暗号化されている。このため,流れるパケットをのぞいても,内容がどんなものなのかだけでなく,Winnyの通信なのかどうかも,ひと目ではわからない。Winnyが採用している暗号アルゴリズムRC4は,Webアクセスや

    Winnyの通信解読に挑戦!
  • もはやドーでもいい ipv6 の話題、あるいは未来を予測することの傲慢さについて

    浦和! 2024-12-06 [Fri] 02:21 浦和はスゴいということについて。 なぜって、 浦和 北浦和 南浦和 東浦和 西浦和 中浦和 武蔵浦和 駅が存在するんだよ。 なんてこった。 浦和! (と、最近トイレで路線図を見て思った)

    jjzak
    jjzak 2006/11/06
    TCP/IPのパケット流量コントロール
  • 1