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
37
KLabエキスパートキャンプ成果発表
teru0x1
August 29, 2019
Tweet
Share
More Decks by teru0x1
See All by teru0x1
マルチクラスタの認知負荷に立ち向かう! Ubieのプラットフォームエンジニアリング
teru0x1
3
2.4k
ブラウザの外側でWasmを使おう
teru0x1
0
260
スタブサーバ自動生成ツール 〜負荷試験をもっと楽に〜
teru0x1
0
1.5k
バッチシステムをクラウドネイティブにするために考えたこと
teru0x1
17
7.7k
クラウド環境をFargateに 移行して得た知見
teru0x1
0
1.4k
Goと定数 DMM.go #3
teru0x1
0
2.4k
はてなインターン2020成果発表
teru0x1
0
970
入門QUIC
teru0x1
0
440
【衝撃】Archlinuxをインストールした結果がヤバすぎた!
teru0x1
0
46
Other Decks in Technology
See All in Technology
セキュリティ監視の内製化 効率とリスク
mixi_engineers
PRO
6
770
ビジネスとエンジニアリングを繋ぐプロダクトを中心とした組織づくりの実践
sansantech
PRO
1
110
Our Journey from in-House CD System to Open Source
ffjlabo
0
110
Oracle Exadata Database Service(Dedicated Infrastructure):サービス概要のご紹介
oracle4engineer
PRO
0
9.4k
PlaywrightによるE2Eテスト入門 / Introduction to E2E Testing with Playwright
rhumie
3
980
APIのドキュメント化何使ってますか?
miu_crescent
2
160
疎通2024
sadnessojisan
5
780
夏休みの(最後の)宿題 for JuliaTokyo #12
antimon2
0
130
エンジニアリングマネージャーが紐解く、事業視点から組織文化まで、包括的アプローチの探求 / READYFOR
9ma3r
14
2.2k
デジタル化・DX推進あるある
y150saya
0
230
分野に潜むツールの紹介
pojiro
1
340
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
41k
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.5k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
Docker and Python
trallard
39
3k
What’s in a name? Adding method to the madness
productmarketing
PRO
21
3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
33
1.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
22
3.9k
Web Components: a chance to create the future
zenorocha
308
41k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
354
29k
Pencils Down: Stop Designing & Start Developing
hursman
118
11k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
103
47k
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͍͍ͧʂʂʂʂʂʂʂʂʂ ϝϯλʔ͞Μɺνϡʔλʔ͞ΜɺӡӦ͞Μɺ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ