Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
KLabエキスパートキャンプ成果発表
Search
teru0x1
August 29, 2019
Technology
0
46
KLabエキスパートキャンプ成果発表
teru0x1
August 29, 2019
Tweet
Share
More Decks by teru0x1
See All by teru0x1
開発効率と信頼性を両立する Ubieのプラットフォームエンジニアリング
teru0x1
0
350
マルチクラスタの認知負荷に立ち向かう! Ubieのプラットフォームエンジニアリング
teru0x1
4
4.3k
ブラウザの外側でWasmを使おう
teru0x1
0
350
スタブサーバ自動生成ツール 〜負荷試験をもっと楽に〜
teru0x1
0
1.8k
バッチシステムをクラウドネイティブにするために考えたこと
teru0x1
17
8.3k
クラウド環境をFargateに 移行して得た知見
teru0x1
0
1.5k
Goと定数 DMM.go #3
teru0x1
0
2.6k
はてなインターン2020成果発表
teru0x1
0
1.1k
入門QUIC
teru0x1
0
550
Other Decks in Technology
See All in Technology
実装で解き明かす並行処理の歴史
zozotech
PRO
1
310
Flaky Testへの現実解をGoのプロポーザルから考える | Go Conference 2025
upamune
1
410
[2025-09-30] Databricks Genie を利用した分析基盤とデータモデリングの IVRy の現在地
wxyzzz
0
460
バイブコーディングと継続的デプロイメント
nwiizo
2
410
データエンジニアがこの先生きのこるには...?
10xinc
0
440
生成AI_その前_に_マルチクラウド時代の信頼できるデータを支えるSnowflakeメタデータ活用術.pdf
cm_mikami
0
110
BtoBプロダクト開発の深層
16bitidol
0
250
「Verify with Wallet API」を アプリに導入するために
hinakko
1
230
組織観点からIAM Identity CenterとIAMの設計を考える
nrinetcom
PRO
1
170
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
1
870
PLaMo2シリーズのvLLM実装 / PFN LLM セミナー
pfn
PRO
2
970
How to achieve interoperable digital identity across Asian countries
fujie
0
110
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
36
6.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Building Applications with DynamoDB
mza
96
6.6k
Documentation Writing (for coders)
carmenintech
75
5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
2.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
19
1.2k
Facilitating Awesome Meetings
lara
56
6.6k
Typedesign – Prime Four
hannesfritz
42
2.8k
Speed Design
sergeychernyshev
32
1.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
Transcript
KLAB EXPERT CAMP Ռൃද খ ً
ࣗݾհ • ւಓେֶ ใΤϨΫτϩχΫεֶՊ 4 • དྷ͠·͢ • seccamp(2018), SecHack365(2017)
খ ً @teru0x1
ࢲͷςʔϚ RustͰTCPͷ࣮
ͳͥRUST͔ • CݴޠฒΈͷߴ͍ύϑΥʔϚϯε • ܕ҆શੑɺϝϞϦ҆શੑ - ະఆٛಈ࡞͕ൃੜ͠ͳ͍ - ແޮͳϙΠϯλ࡞͞Εͳ͍ʢ͔ؔΒϩʔΧϧมͷϙΠ ϯλΛฦ͢ͳͲʣ
- ίϯύΠϧ௨ͬͨ࣌ͷ҆৺ײ͕͍͢͝ • ߴ͍දݱྗ(ΫϩʔδϟɺΠςϨʔλ) • ॆ࣮ͨ͠ඪ४ϥΠϒϥϦʢϋογϡςʔϒϧɺλϓϧʣ
༷ͳͲ • TCPͷιέοτϥΠϒϥϦͱͯ͠ΞϓϦέʔγϣϯ͔Βར༻Ͱ͖Δ Α͏ʹͨ͠ • ࣮ͨ͠API - connect(): 3-way-handshakeΛߦ͍ଓΛཱ֬͢Δ -
bind(): Ϧεχϯάιέοτͷੜɺࢦఆͨ͠ΞυϨεͰϦοεϯ - accept(): ଓࡁΈιέοτΛฦ͢ - read(): ଓࡁΈιέοτ͔ΒಡΈࠐΉ - write(): ଓࡁΈιέοτॻ͖ࠐΉ • ࠶ૹ੍ޚ
࣮ʹ͍ͭͯ • TCP/IPࣗ࡞ຊɺmicropsͷ࣮Λ͔ͳΓࢀߟʹͨ͠ɻ • l3·ͰpnetΫϨʔτΛར༻ʢνΣοΫαϜͳͲϥΠϒϥϦΛ ͏ʣ • ϥΠϒϥϦΛར༻͢ΔΞϓϦέʔγϣϯͱͯ͠echoαʔόɺΫϥ ΠΞϯτΛ࡞ͨ͠ɻ
8/26 • ඈߦػͰඈΜͰ͘Δ • ݐͷೖΓํ͕Θ͔Βͳ͔ͬͨ • ͓ण͓͍͍࢘͠ • APIͷܗΛ࡞Δ •
ઃܭʹۤ࿑͢ΔʢTCPͷཧςʔϒϧͲ͜ʹ࣋ͨͤΑ͏ʁʣ
8/27 • 3-way-handshakeୡ
8/28 • connect(), read(), write()Λ࣮ • TCPΫϥΠΞϯτͷػೳྃ • bind()Λ࣮ɺαʔόʔͬΆ͍͜ͱ͕Ͱ͖ΔΑ͏ʹͳͬͨ •
͜ͷ࣌1ϙʔτ1ଓͩͬͨ
8/29 • accept()Λ࣮ • ࠶ૹ੍ޚΛ࣮
σϞ • ಈ͍͍͓ͯͩ͘͞ئ͍͠·͢ • echoαʔόVMʢUbuntuʣ, ΫϥΠΞϯτmacOSͰ͢
େมͩͬͨͱ͜Ζ • ࣗ࡞TCP͕͍ͬͯΔVMͷΧʔωϧ͕֎෦͔ΒདྷͨSYNʹରͯ͠ RSTΛฦ͢ - iptablesͰ֎͖ͷRSTυϩοϓͨ͠ • RustͷίϯύΠϧΛ௨͢͜ͱ
͞Γ͛ͳ͘એ • ιέοτϓϩάϥϛϯά • ύέοτΩϟϓνϟ • ϙʔτεΩϟϯπʔϧ • non-blocking web
αʔό • DHCPαʔό
ײͳͲ • TCPશʹཧղͨ͠ งғؾ͕গ͠Θ͔ΔΑ͏ʹͳͬͨ - ίωΫγϣϯཧͷख๏͕Θ͔ͬͨ - ঢ়ଶΛ࣋ͭͱҰؾʹෳࡶʹͳΔ • 1ʹҰճσουϩοΫͰϋϚͬͨ
- ͰɺʮσουϩοΫͯ͠ΔΑʂʯͱॲཧܥ͕ڭ͑ͯ͘ΕΔ • ggͬͯग़ͯ͜ͳ͍ਂ͍ࣝʹ͍࣭ͭͯͰ͖ͯษڧʹͳͬͨɻ • ߨٛͷํฉ͍ͯΈ͔ͨͬͨ • Rust͍͍ͧʂʂʂʂʂʂʂʂʂ ϝϯλʔ͞Μɺνϡʔλʔ͞ΜɺӡӦ͞Μɺ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ