タグ

networkに関するgriefworkerのブックマーク (24)

  • オンラインゲーム 10年の進化と同期方式の選び方 - きゅぶろぐ

    オンラインゲームを作ろう!と思ったことがある方は、 こちらの講演記事を1度は見たことがあるのではないでしょうか。 www.4gamer.net こちらの講演は、具体例を交えながら非常に分かりやすくオンラインゲームの主な同期方式が説明してあり、 2024年現在でもオンラインゲームの基礎を学ぶ資料として真っ先に名前を上げる最高の資料です。 しかしながら講演は2010年のものであり、オンラインゲームはこの10年余りで進化しています。 この辺りの進化の話を簡単にまとめつつ、オンラインゲームの同期方式の選び方を紹介します。 (上記講演記事の知識/用語を前提としているため、先に上記記事をお読みください。) オンラインゲームの民主化について 技術の話をする前に。 近年、「マルチプレイヤーゲーム」と聞いてオフラインの画面分割ゲームを想像する人はいないと言って良いほど オンラインゲームは民主化されてきました

    オンラインゲーム 10年の進化と同期方式の選び方 - きゅぶろぐ
  • Webサーバーアーキテクチャ進化論2023

    はじめに 最近プログラマーとしてのキャリアに一区切りつけようと思っており、これまでのプログラミングの勉強の集大成となるブログを書きたくなったので書く。初めてプログラミングをして、フロントエンド開発をして、サーバーから値が返ってきたときは「どういう仕組みで値が返ってきたんだ?」と疑問に思っていた。ずっと理解したくて理解できていなかった。だからずっと勉強していた。そして最近になってようやく自分の言葉で説明できるようになった気がしたのでブログを書きたい。 2015 年版が自分の原点であり、この記事を書くモチベーションになった このような記事は実は過去に存在している。 FYI: https://blog.yuuk.io/entry/2015-webserver-architecture その記事はサーバーがどういう仕組みで動いていて、どのように進化し、2015 年に至るかを解説してくれた記事だ。自

    Webサーバーアーキテクチャ進化論2023
  • プロトコルスタックを写経してネットワークを完全に理解したかった日記

    Webページはどうやって表示されるのでしょうか. 「ブラウザでアドレスバーにURLを入力してEnter押してからページが表示されるまでに何が起きているか説明してください」面接で使っていた質問が面白いと話題に 上記の質問には様々なレイヤーでの回答があると思うのですが,私はネットワークの動作に興味を持ちました.というのも,TCP,IP,ARP,Ethernetといったキーワードが関連しているのは教科書や講義で聞いた気がするのですが,それ以上のことはうまく説明できなかったからです. これらのプロトコルは,普段はカーネル内部に隠れていてあまり意識できません. しかし,以下の資料を参考にプロトコルスタックを写経すれば,少しは身近に感じられるかもしれないと思いました. 3月に開催したプロトコルスタック自作キャンプの講義資料を公開しました。1週間でTCP/IPのプロトコルスタックを自作してUDPやTCP

    プロトコルスタックを写経してネットワークを完全に理解したかった日記
  • QUICをゆっくり解説(17):QUICビットとトランスポート・パラメータ | IIJ Engineers Blog

    Haskellコミュニティでは、ネットワーク関連を担当。 4児の父であり、家庭では子供たちと、ジョギング、サッカー、スキー、釣り、クワガタ採集をして過ごす。 お久しぶりです。一家の引っ越しでバタバタしておりました。ようやく落ち着いてきましたので、「硬直化」をテーマとしてQUICに関して3つほど記事を書いてみようと思います。 硬直化 硬直化とは、中間装置が想定外の動作をすることによって、新しい機能の普及が困難になることです。硬直化の例としては、TCP Fast Openが完全に普及できないことが挙げられます。 TCPでは、コネクションを確立するために、いわゆる3WAYハンドシェイクが実行されます。通常は、クライアントがSYNパケットを送信し、サーバがSYN/ACKパケットを返し、その後クライアントがACKを返す際に初めてデータを送信できます。 もし最初のSYNパケットにデータを乗せることがで

    QUICをゆっくり解説(17):QUICビットとトランスポート・パラメータ | IIJ Engineers Blog
  • シン・テレワークシステムは“グチャグチャグチャ”から生まれた 登大遊氏がやばい部屋で作った、インチキ自作システム

    “グチャグチャグチャ”から生まれた「シン・テレワークシステム」と「自治体テレワークシステム」 田中邦裕氏(以下、田中):登さんは、ソフトウェアで作ったものが使われてすごく普及してきたら、インフラ面までそれに合わせて作り変えていますよね。まずソフトウェアで作ることも重要だし、それを支えるインフラの部分も実は一体化して作らないといけない。そういうことが、登さんの課題意識の背景にあるんですかね? 登大遊氏(以下、登):そうですね。我々はけっこうインチキな手法で、バーッて作っているところがあるんですよ。行政的システムでそういうことをやる人はあまりいないんですけど、我々はやってみたら成功しました。ちょっと写真も持ってきたので、出してもいいですか? 田中:どうぞどうぞ、お願いします。 登:1990年の大学の中には、こういう怪しいパソコン、サーバー置き場があって、我々もそこで勉強したんですが、最近そうい

    シン・テレワークシステムは“グチャグチャグチャ”から生まれた 登大遊氏がやばい部屋で作った、インチキ自作システム
  • 「やはりインフラ作りは楽しくてしょうがない」 村井純×登大遊×田中邦裕が語る、日本のICTの課題と期待

    インターネットの父、村井純氏 田中邦裕氏(以下、田中):よろしくお願いします。ここから60分間、登さんと村井先生という、濃いキャラを2人お迎えして、どのように進めていこうかと、悩ましいところですけれども、最大限お二人の魅力を引き出していきながら、けしからん話をしていければなと思っていますので、どうぞよろしくお願いします。 では、最初に自己紹介を軽くしていただければなと思います。お二人のことはみなさんすでにご存じかと思いますが、村井先生から軽く自己紹介いただいてよろしいでしょうか。 村井純氏(以下、村井):慶応大学の村井です。今日はちょうど「WIDE(WIDEプロジェクト)」の合宿をやっていて、そこからここへ来たので、髭も剃っていないし(笑)、WIDEの合宿の時はガッと(予定を)ブロックしているので、けっこう久しぶりにいろいろな話がじっくりできる時だと思います。 今日はこのシャツを着てきまし

    「やはりインフラ作りは楽しくてしょうがない」 村井純×登大遊×田中邦裕が語る、日本のICTの課題と期待
  • 登大遊氏、日本は「超正統派」のICT人材を育成すべき。そのために、自由な試行錯誤を許容するインチキネットワークの普及に取り組む(前編)。JaSST'22 Tokyo

    登大遊氏、日は「超正統派」のICT人材を育成すべき。そのために、自由な試行錯誤を許容するインチキネットワークの普及に取り組む(前編)。JaSST'22 Tokyo 2022年3月10日と11日の2日間、ソフトウェア業界のテスト技術力の向上と普及を目指すイベント「ソフトウェアテストシンポジウム JaSST'22 Tokyo」がオンラインイベントとして開催されました。 イベントの最後には、招待講演として登大遊氏による講演「世界に普及可能な日発の高品質サイバー技術の生産手段の確立」が行われています。 登氏は講演で、優れたICT技術を日から生み出すためには「超正統派」なICT技術者を育てるべきであり、そのために登氏自身が中心となって登氏が「インチキネットワーク」と呼ぶ、固定IPアドレス取り放題でBGPで遊べる自由な試行錯誤を許容するネットワークとコンピューティングの環境を、IPA(独立行政法

    登大遊氏、日本は「超正統派」のICT人材を育成すべき。そのために、自由な試行錯誤を許容するインチキネットワークの普及に取り組む(前編)。JaSST'22 Tokyo
    griefworker
    griefworker 2022/03/17
    登氏のこういった記事も日経に載せてほしい。意識変えるべきは日経の読者層だろうから。
  • QUICをゆっくり解説(14):輻輳制御 | IIJ Engineers Blog

    Haskellコミュニティでは、ネットワーク関連を担当。 4児の父であり、家庭では子供たちと、ジョギング、サッカー、スキー、釣り、クワガタ採集をして過ごす。 「フロー制御」の回で説明したように、輻輳制御とは途中のネットワークが溢れないようにするための仕組みです。QUICは、正確なRTT計測や、前回説明した簡潔なロス検知の機能を提供しています。このため輻輳制御としては、パケット欠落や遅延といったシグナルを使うアルゴリズムが利用可能です。RFC9002では、デフォルトの輻輳制御アルゴリズムとしてNewRenoを採用しています。 1990年に現れたRenoは、1995年に出されたアイディアに基づいて改良されNewRenoとなりました。2008年に提案されたCUBICや、2016年に現れたBBRに比べると、NewRenoは古い輻輳制御アルゴリズムです。QUICのデフォルトの輻輳制御に古いNewRe

    QUICをゆっくり解説(14):輻輳制御 | IIJ Engineers Blog
  • QUICをゆっくり解説(10):コネクションのマイグレーション | IIJ Engineers Blog

    Haskellコミュニティでは、ネットワーク関連を担当。 4児の父であり、家庭では子供たちと、ジョギング、サッカー、スキー、釣り、クワガタ採集をして過ごす。 通信の途中で、クライアントのIPアドレスやポート番号が変更されることがあります。以下の2つが典型例です。 利用するネットワークが携帯網からWi-Fiに変わった (または、その逆) 中間のNATが、別のポート番号を割り当てた TCPでは、コネクションの識別子として両端のIPアドレスとポート番号を使っています。そのため、上記のような場面では、既存のコネクションは維持できなくなり、アプリケーションが通信を続けるには新たにコネクションを作成する必要があります。 一方QUICでは、コネクションの識別子としてコネクションIDを使います。コネクションIDは、IPアドレスやポート番号から独立した名前です。そこで、上記のような場面でもコネクションを継続

    QUICをゆっくり解説(10):コネクションのマイグレーション | IIJ Engineers Blog
  • QUICをゆっくり解説(6):増幅攻撃との戦い | IIJ Engineers Blog

    Haskellコミュニティでは、ネットワーク関連を担当。 4児の父であり、家庭では子供たちと、ジョギング、サッカー、スキー、釣り、クワガタ採集をして過ごす。 増幅攻撃(amplification attack)とは、攻撃者が第三者の管理するサーバにデータの量を増幅させて標的に送りつけるDoS攻撃の一種です。 攻撃者は、小さなデータをサーバに送りつけます。このとき、IPパケットの始点アドレスに標的のIPアドレスを詐称して入れます。プロトコルによっては、サーバは大きな応答を返します。返答先は、標的のIPアドレスになります。 この攻撃にたくさんのサーバを利用すれば、攻撃者の回線には余裕があるが、標的の回線はパンクさせるという状況を実現できます。 攻撃者にとって、TCPには増幅効果を期待できません。攻撃者が送信するSYNのTCPセグメントと、サーバが返すSYN+ACKのTCPセグメントは大きさがほ

    QUICをゆっくり解説(6):増幅攻撃との戦い | IIJ Engineers Blog
  • QUICをゆっくり解説(5):2回目以降のハンドシェイクと0-RTT | IIJ Engineers Blog

    Haskellコミュニティでは、ネットワーク関連を担当。 4児の父であり、家庭では子供たちと、ジョギング、サッカー、スキー、釣り、クワガタ採集をして過ごす。 前回はクライアントとサーバが初めてコネクションを確立する際に実行されるハンドシェイクについて説明しました。まだ、コネクションの切り方を説明してないので恐縮ですが、今回は1回目のコネクションが終了した後の2回目以降のハンドシェイクについてお話しします。 事前共有鍵 前回使ったQUICのハンドシェイク図を少し修正して以下に示します。 色の意味はこうでした。 薄い灰色:イニシャル鍵で暗号化されている 濃い灰色:ハンドシェイク鍵で暗号化されている 黒色:アプリケーションデータ鍵で暗号化されている イニシャル鍵は、クライアントが乱数的に作ったサーバのコネクションIDから生成されました。 ハンドシェイク鍵やアプリケーションデータ鍵は、鍵交換で共有

    QUICをゆっくり解説(5):2回目以降のハンドシェイクと0-RTT | IIJ Engineers Blog
  • CDNは5時間で開発できる | POSTD

    「CDN」(content delivery network)という言葉からは、Googleのような大企業がいくつもの巨大なハードウェアを管理し、1秒当たり何百ギガビットものデータを処理する様子が想像されます。しかし、CDNは単なるWebアプリケーションです。私たちのイメージとは違いますが、それが事実です。8年前に買ったノートパソコンを使って、コーヒーショップの席に座りながらでも、きちんと機能するCDNを構築できます。この記事では、これから5時間でCDNを開発しようとするときに、直面するかもしれないことを紹介します。 まずはCDNの機能を明らかにしておきましょう。CDNはセントラルリポジトリ(通称:オリジン)からファイルを吸い上げ、ユーザーに近い場所でコピーを保存します。初期のオリジンはCDNのFTPサーバーでした。現在、オリジンは単なるWebアプリとなり、CDNはプロキシサーバーとして機

    CDNは5時間で開発できる | POSTD
  • QUICをゆっくり解説(4):ハンドシェイク | IIJ Engineers Blog

    Haskellコミュニティでは、ネットワーク関連を担当。 4児の父であり、家庭では子供たちと、ジョギング、サッカー、スキー、釣り、クワガタ採集をして過ごす。 前回は、QUICパケットとフレームの構造について説明しました。準備が整いましたので、今回はコネクションの確立時に実行されるハンドシェイクについて説明します。 トランスポート層を実装する場合、コネクションを確立する部分を作らないと何も通信できませんが、QUICはこのハンドシェイクの実装が結構難しく、実装者泣かせの仕様となっています。 TLS 1.3のハンドシェイク まずTCP上のTLS 1.3のハンドシェイクを以下の図を使って説明します。 最初にTCPのコネクションを張る必要があるので、お馴染みの TCP 3-way ハンドシェイクから始まります。 次にクライアントは、(楕円曲線)Diffie-Hellmanの系統を用いて、使い捨ての公

    QUICをゆっくり解説(4):ハンドシェイク | IIJ Engineers Blog
  • QUICをゆっくり解説(3):QUICパケットの構造 | IIJ Engineers Blog

    Haskellコミュニティでは、ネットワーク関連を担当。 4児の父であり、家庭では子供たちと、ジョギング、サッカー、スキー、釣り、クワガタ採集をして過ごす。 前回の説明では、「Initial パケット」や「Version Negotiation パケット」といった用語を未定義で使いました。今回は、こういった「パケット」や「フレーム」が、どのような構造を持っているかについて説明します。 古典的なパケット IP、UDP、およびTCPでデータをやり取りする基単位は、すべて「ヘッダ+ペイロード」という構造を持っています。このヘッダ+ペイロードという単位は、それぞれ以下のように呼ぶのが慣習です。 IP – パケット UDP – データグラム TCP – セグメント すべてパケットと呼んでも間違いではありません。UDPの場合、IPペイロードが「UDPデータグラム(UDPヘッダ+UDPペイロード)」に

    QUICをゆっくり解説(3):QUICパケットの構造 | IIJ Engineers Blog
  • QUICをゆっくり解説(2):ネゴせよ | IIJ Engineers Blog

    Haskellコミュニティでは、ネットワーク関連を担当。 4児の父であり、家庭では子供たちと、ジョギング、サッカー、スキー、釣り、クワガタ採集をして過ごす。 QUICへの誘導 前回のブログで、ブラウザが HTTP/3 (HTTP over QUIC) に対応したサーバにアクセスしたときに、最初は HTTP/2 を使い、2回目の通信からHTTP/3を使うようになると説明しました。今回は、この過程でクライアントとサーバが何を折衝しているか、以下の順で解説します。 TLSのバージョン HTTPのバージョン HTTP/2からHTTP/3への誘導 QUICのバージョン TLSのバージョン あるURLで指定されたサーバにクライアントがアクセスすることを考えます。URLは、httpsで始まっていたとしましょう。つまり、TLSの中でHTTPが使われます。現在推奨されているTLSのバージョンは、1.2と1.

    QUICをゆっくり解説(2):ネゴせよ | IIJ Engineers Blog
  • QUICをゆっくり解説(1):QUICが標準化されました | IIJ Engineers Blog

    Haskellコミュニティでは、ネットワーク関連を担当。 4児の父であり、家庭では子供たちと、ジョギング、サッカー、スキー、釣り、クワガタ採集をして過ごす。 不定期連載を始めます IIJ-II 技術研究所 技術開発室の山です。私はプログラミング言語HaskellでHTTP/2とTLS 1.3を実装した後、もっぱらQUICを実装することに時間を費やしてきました。 ご存知の方もいらっしゃると思いますが、今年の5月にQUICの仕様がRFC9000として公開されました。このRFCは実によく書かれているので、読みこなせばQUICの全容が掴めるでしょう。 しかし仕様は膨大ですし、実際に実装してみて初めて腑に落ちることもあります。そこでこの機会に、実際にQUICを実装した経験者目線で、QUICの解説をしていきたいと思います。なんとなくTCP/IPを分かっている方が、ある程度QUICの理解ができることを

    QUICをゆっくり解説(1):QUICが標準化されました | IIJ Engineers Blog
  • ネットワークスペシャリスト - SE娘の剣 -

    左門至峰の出るとこネスペ教科書 最短距離で合格できるネットワークスペシャリスト (Usable Textbook) 左門 至峰 日経BP 2023-12-15 ネスペ教科書(改訂2版)ですが、前回の発売から約4年が経過しており、ずっと改訂したいと思っていたところ、日経BPさんから声掛けをいただきました。 内容を全面的にチェックして追加、削除をしつつ刷新したのと、新しい章を追加しております。 ページ数は前回より数ページだけ増えましたが、320ページとしており、勉強しやすい分量に収めることができました。 分厚いテキストを読むのは大変です。それより、そんなに分厚くない(=このをご活用ください)で、全体像をさらっと勉強し、過去問を勉強しながら(=ネスペシリーズをご活用ください)、知識を深めていくのが得策です。 1.なぜ基礎学習が大事か (1)事実関係(と少し考察) ❶合格率とスコア ・合格ライ

    ネットワークスペシャリスト - SE娘の剣 -
  • Netlifyが日本からだと遅い - id:anatooのブログ

    仕事Netlify にデプロイしたSPAの読み込みが遅いので原因を調査してほしい、という依頼を受けてウェブパフォーマンス調査を行った。顧客から許可をもらって、この記事ではNetlifyに対してどういう調査をしたのかを書く。 結論だけをまず書くと、NetlifyのCDNのファイル配信パフォーマンスは日国内からだと非常に悪い。パフォーマンスを改善させるためには、Netlifyに直接アクセスさせるのではなく、前段に他のCDNやキャッシュサーバを挟んだりするほうがいいだろう。 調査の前提 日国内からのみの調査 サイトには静的なファイルをデプロイしているのみ 該当するNetlifyにデプロイしたSPAをブラウザで試しに開いてみると、確かに初回の読み込みのパフォーマンスがめちゃくちゃ悪い。 Chrome Devtoolsを開いてネットワークタブでどういうふうにリソースの読み込みを行っているのか

    Netlifyが日本からだと遅い - id:anatooのブログ
  • TCP/IPをわかりやすく - 通信プロトコルの基礎知識を図解で学ぼう|ハイクラス転職・求人情報サイト AMBI(アンビ)

    TCP/IPをわかりやすく - 通信プロトコルの基礎知識を図解で学ぼう 現在のインターネットを支える技術であるTCP/IPについて、基礎となるプロトコル群と、TCPの基機能を丸田一輝さん、 中山悠さんに解説していただきました。 今からおよそ50年前、パケット交換方式による世界初のコンピュータネットワークであるARPANETが構築されました。それ以来、TCP/IP(Transmission Control Protocol / Internet Protocol)は通信を実現する基盤技術として使われ続けています。今ではパソコンに限らず、スマートフォンやゲーム機、センサー、最近では自動車など、無線通信機能を持ったさまざまな端末も含めコンピュータネットワークは構成されています。 その中でも「通信の信頼性を確保する」役割を担っているTCPは、その性質上、多くの機能を備えています。加えて、時代とと

    TCP/IPをわかりやすく - 通信プロトコルの基礎知識を図解で学ぼう|ハイクラス転職・求人情報サイト AMBI(アンビ)
    griefworker
    griefworker 2020/02/20
    非常にわかりやすかった。TCP技術入門も買おう。
  • 【Unity】インベーダ作りで学ぶUnet超入門 その1 - おもちゃラボ

    Unityでネットワークゲームを作るにはUnetというライブラリを利用します。このUnetを使うことで簡単(?)にネットワークゲームを作ることができます。 簡単にハテナがついているのは、それほど簡単じゃないからです(笑) Unetには様々なネットワークの専門用語が出てきて、どうやって作ったら良いのか混乱しがちです。ただ、基的なパターンはある程度決まっているので、それを紹介してからインベーダーゲームづくりに取り掛かりましょう。 今回の目次は次のようになります。 ネットワークゲームの基パターン オブジェクトの生成と移動 クライアント側でオブジェクトを動かす Unetの基スタイル 今回作るUnet対応インベーダーゲーム プロジェクトの作成 ネットワークゲームの基パターン Unetを使ってネットワークゲームを作る場合、基になるのは次のようなサーバとクライアントがあるパターンです。 2人以

    【Unity】インベーダ作りで学ぶUnet超入門 その1 - おもちゃラボ