問題設定 IP チェックサムは以下の方法で計算されることになっています: パケット全体を 2オクテットごとの 16ビット列にして、 それぞれを 1の補数として和を求め、 それの 1の補数をチェックサムとする。 計算時にはチェックサムのエリアは 0 として計算する。 (UDP はチェックサムはオプション。IP と TCP は必須) この計算で不思議な点が 2点あります: 1の補数って何? チェックサムは 0 にならないの? (UDP でチェックサムを使用しない場合は、0 を入れることになっていますので) 本稿では、この 2点についての謎を説き明かしたいと思います。 1の補数というもの まずは、「補数」について、数学的な準備をしましょう。ちょっと長いかも知れません。単に補数といいますと、実は符号を取り替えた数を示したりしますが、本稿では n の補数を考える必要があります。 n の補数を考えると
★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の補数和
Linuxのディストリビューションの配布などで配布サーバの回線速度などがボトルネックになり、円滑にファイルを配布することはコストがかかります。 BitTorrentは配布者の負担を軽減して、素早くファイルを配信することを目的に開発されたP2Pソフトウェアです。 BitTorrentの動作概要 ------------------- BitTorrent では、トラッカーとよばれる全てのピアとピアのアップロード/ダウンロード能力、ファイルの取得状況を監視・管理するサーバが存在します。一般的なP2P システムではP2Pネットワーク内を検索してからファイルの取得という動作を行いますが、BitTorrentでファイルの検索という作業は行わずに、トラッカーに問い合わせます。ファイルの検索をクライアント・サーバで行うということで、従来の分類ではハイブリッド型P2Pシステムになります。 BitTorre
最近は過労気味でウェブにものを書くこともできない, という話で上司の同情を誘うべく 日本人の労働時間やストレスの実態をまとめた エンドレス・ワーカーズ を読んだら, 自分の労働時間は日本人労働者の上位 2 割から漏れていることを知り愕然とした. あんなに働いたってのに...残業エリートへの道は険しい. 道を進みたいわけじゃないけれど. (平均は越えてたぜ!) いずれにせよ流行からはすっかり脱落しているので, 時流を無視して仕事の話でもしよう. 以前, 会社の blog で RPC の結果をノンブロッキングスタイルで受け取るプリミティブ "弱関数" を提案した. でも試行錯誤の結果, いまは使っていない. C++ での弱参照は意図しないリークを作りやすい. 使いわすれることも多く, 忘れた頃にクラッシュする. 要求は明示的にキャンセルした方がいいことがわかった. (世間はみんなそうやってます
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(動的計画法)的なアルゴリズムです。 つまり,「手近で明らかなことから順次確定していき,その確定した情報をもとにさらに遠くまで確定していく
並行言語であるErlangでPeer-to-Peer Network技術の一つである分散ハッシュテーブルを実装してみたところ,わずか1000行程度で実現できました.ノードが頻繁に出たり入ったりする,いわゆるchurn下でもそれなりの性能が出せたので,SourceForge.netで公開してみます.興味のある方はどうぞ. http://sourceforge.net/projects/ermdia/ 内部アルゴリズムはKademliaと呼ばれるものを利用しています.BitTorrent等でおなじみのアルゴリズムですが,データのput/getなどの通常のメッセージの交換時にルーティングテーブルをアップデートするため,ルーティングテーブルの維持コストがChord等に比べて低いという特徴があります.実装もそれなりに簡単で,過去にSymphonyと呼ばれる分散ハッシュテーブルを実装したのですが,それ
最近巷で話題の「Network Coding」です(どんだけニッチな「巷」だよ!という突っ込みは自重願います)。 既にご存知の方には今更かも知れませんが、最近これを知って発想に結構感動したので紹介してみました。 グラフ理論系の話で、「Routingでは出来ないけどCodingならできる」というキーワードが良く登場します。 個人的には、まだ使いどころが良く理解できていないのですが、話としては非常に面白かったです。 XORを使って重ねる Network Codingの最大の特徴は、途中ノードがXORで重ねる事によって伝送に必要な情報量を削減することです。 以下の図は、最も単純な例を示したものです(wikipediaにあるpublic domainの図に加筆)。 まず、AとBという情報があります。 このAとBを2箇所ずつ、合計4箇所に送りたいとします。 このとき、1つのデータを送信するには、1つ
ネットワーク 定義 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とは何か?〜基礎から研究紹介まで〜 最近,P2Pという言葉を良く聞きます。ニュースの中でも「P2Pを意識している」とか「P2Pの研究に着手」というニュースを聞いたことがあるのではないでしょうか? しかしながら,P2Pとは何かいまいちわからなかったり、どんなことに役に立つのか調べにくいことも確かです。 またP2Pの動向は激しく,その流れについていくのも大変です。 私は情報系の研究所でP2Pの研究開発をしていました。 そのため、このような現状を踏まえてP2Pの基礎から私の研究まで重要な部分を なるべくわかりやすく紹介致します。 また用語についてはわかりやすさを優先するために一部不正確なところがあるのでご了承下さい。 質問,コメント等はメール(tnishita@yahoo.co.jp) にて連絡して頂くと,ページ改良の参考になりますのでよろしくお願い致します。 P2Pに
Winnyの通信を特定する方法には,「流れるパケットのパターン(トラフィック・パターン)を調べる方法」と,「パケットの中身を調べてWinnyのパケットであることを確認する方法」の2通りがある。前者は,直接中身のデータをのぞいているわけではないため,通信の秘密を守るという大前提があるプロバイダがWinnyを規制する際に使っている。しかし,Winnyの通信を確実に特定するなら,後者の方法がベストである。実際にWinnyの通信を解読できるのか,Winny作者の金子勇氏の著書『Winnyの技術』やインターネットで得られた情報などを参考に挑戦してみた。 Winny(ウイニー)同士の通信はすべて暗号化されている。このため,流れるパケットをのぞいても,内容がどんなものなのかだけでなく,Winnyの通信なのかどうかも,ひと目ではわからない。Winnyが採用している暗号アルゴリズムRC4は,Webアクセスや
浦和! 2024-12-06 [Fri] 02:21 浦和はスゴいということについて。 なぜって、 浦和 北浦和 南浦和 東浦和 西浦和 中浦和 武蔵浦和 駅が存在するんだよ。 なんてこった。 浦和! (と、最近トイレで路線図を見て思った)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く