Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Learn "QUIC" Quickly!

Fu-ga
September 24, 2021

Learn "QUIC" Quickly!

2021.9.24 鹿児島.mkのLTで登壇した時の発表資料です。
QUICというプロトコルについて話しました。

Fu-ga

September 24, 2021
Tweet

More Decks by Fu-ga

Other Decks in Programming

Transcript

  1. Learn “QUIC” Quickly!
    2021.9.24 ࣛࣇౡ.mk

    View Slide

  2. ࣗݾ঺հ
    Chapter.0

    View Slide

  3. Who am i?
    ࣗݾ঺հ
    ▸ ;ʔ͕
    ▸ ݱ৬͸ެ຿һ
    ૊৫ͷDXਪਐΛ୲౰
    ▸ FjordBootCampͰRuby/RailsͳͲΛֶश
    ࠷ऴͷΧϦΩϡϥϜͰࣗ࡞αʔϏε੡࡞த
    ▸ ݱࡏɺస৬׆ಈத
    ▸ ೝఆதຊϚελʔʢࣗশʣ
    ໤ݹλϯϝϯதຊΛ͜Αͳ͘Ѫ͢ΔRubyist
    Twitter: @fuga__ch

    View Slide

  4. ͳͥ͜ͷλΠτϧʹͨ͠ͷ͔
    Chapter.0-1

    View Slide

  5. Chapter.0-1 ͳͥ͜ͷλΠτϧʹͨ͠ͷ͔
    ▸ ϓϩάϥϛϯάΛֶͿதͰɺ͍͔ͭ͘ͷϓϩτίϧΛѻͬͨ
    HTTPɺSMTP΍ POPͰͷϝʔϧૹड৴ ͳͲ
    ▸ ͦΕΑΓ΋͞Βʹ௿ϨΠϠͷϓϩτίϧ΋͋Δ
    ଘࡏ͸஌Γͭͭ΋ษڧ͢ΔඞཁੑΛײ͍ͯ͡ͳ͔ͬͨ
    ▸ ͦΜͳதɺʮ”QUIC”ͱ͍͏৽͍͠ϓϩτίϧ͕Ͱ͖ͨʯهࣄΛಡΜͩ
    ʮͳΜͩΖ͏ʁʯʮԿ͕มΘΔΜͩΖ͏ʁʯʮτϥϯεϙʔτ૚ͬͯʁʯ
    ษڧͯ͠ΈΑ͏ʂ
    ൃදͨ͠Β΋ͬͱཧղͰ͖Δ͔΋ʂ

    View Slide

  6. ”QUIC”ͬͯɺͳʹʁ
    Chapter.1

    View Slide

  7. Chapter.1 “QUIC”ͬͯɺͳʹʁ
    ▸ τϥϯεϙʔτ૚ʹ͓͚Δ৽͍͠௨৴ϓϩτίϧ
    ▸ ʮTCPʹऔͬͯ୅ΘΔϓϩτίϧʯͱݴΘΕ͍ͯΔ
    ▸ Google͕WEBͷ଎౓վળΛओͳ໨తͱͯ͠։ൃ࢝͠Ίͨ
    ▸ 2021೥5݄ɺIETFʹΑͬͯඪ४Խ͞Εͨ
    ▸ QUIC্Ͱಈ࡞͢Δͷ͕HTTP/3
    τϥϯε
    ϙʔτ૚ʁ
    ̩̘̥ʁ
    ̝̩̩̥ʗ̏ʁ

    View Slide

  8. HTTP/2·Ͱͷτϥϯεϙʔτ૚
    Chapter.2

    View Slide

  9. Chapter.2 HTTP/2·Ͱͷτϥϯεϙʔτ૚
    ▸ σʔλ఻ૹͷ৴པੑΛఏڙ͢Δ໾ׂ
    ▸ TCP·ͨ͸UDP͍ͣΕ͔ͷϓϩτίϧͰ௨৴͢Δ
    ɾσʔλ͕ૹΕ͍ͯΔ͔
    ɾҰ౓ʹૹ৴Ͱ͖ΔαΠζʹ෼ׂʢ෼ׂͨ͠1ͭ͋ͨΓͷσʔλ୯Ґʹύέοτʣ
    ɾσʔλ͕յΕ͍ͯͳ͍͔
    ɾॱ൪௨Γʹͳ͍ͬͯΔ͔

    View Slide

  10. Chapter.2 HTTP/2·Ͱͷτϥϯεϙʔτ૚
    ▸ σʔλͷ׬શੑΛอূ
    ▸ ΫϥΠΞϯτ͕ύέοτΛड͚औ͔ͬͨͲ͏͔ΛஞҰ֬ೝ
    ̩̘̥
    ɾίωΫγϣϯͷཱ֬
    ɾ3wayϋϯυγΣΠΫ
    ▸ จॻ౳ͷ׬શੑ͕ٻΊΒΕΔσʔλ఻ૹʹ࢖ΘΕΔ
    ग़యɿhttps://www.infraexpert.com/study/tcpip9.html
    ɾ࠶ૹ੍ޚɹɾ֬ೝԠ౴ɹɾϑϩʔ੍ޚɹɾ᫔᫓੍ޚ

    View Slide

  11. Chapter.2 HTTP/2·Ͱͷτϥϯεϙʔτ૚
    ▸ σʔλͷ׬શੑ͸อূ͞Εͳ͍
    ▸ ίωΫγϣϯ΍࠶ૹ੍ޚ͕ͳ͍෼ɺߴ଎
    ̪̙̥
    ɾ௨৴தʹσʔλ͕յΕ͍ͯΔ͔Ͳ͏͔͸֬ೝ͍ͯ͠Δ
    ▸ ಈը΍Ի੠௨࿩ͳͲͷେ༰ྔ͔ͭ׬શੑΛٻΊΒΕͳ͍௨৴ʹར༻
    ɾյΕ͍ͯͯ΋ɺഁغͯ͠ऴΘΓ
    ɾΫϥΠΞϯτ͕ύέοτΛड͚औ͔ͬͨͲ͏͔͸֬ೝ͠ͳ͍

    View Slide

  12. TCP/UDPͷ໰୊఺
    Chapter.3

    View Slide

  13. Chapter.3 TCP/UDPͷ໰୊఺
    ▸ ߴ଎Խͷݶք
    ▸ ϔουΦϒϥΠϯϒϩοΩϯά
    ઌߦ͢Δύέοτ͕ύέοτϩεͨ͠৔߹ɺޙଓͷύέοτ͕ಧ͍ͯ΋࢖͏͜ͱ͕Ͱ͖ͳ͍
    ▸ ֦ுੑͷݶք
    ɾTCPͰ͸3wayϋϯυγΣΠΫ͕ඞਢͷͨΊɺ઀ଓͷཱ֬ʹ͕͔͔࣌ؒΔ
    ɾ͞ΒʹɺTLSͷϋϯυγΣΠΫ΋͋ΔͷͰ༨ܭʹ͕͔͔࣌ؒΔ
    ɾUDP͸ߴ଎͕ͩ৴པੑ͸ͳ͍
    ɾTCP͸Χʔωϧ(OS)͕ఏڙ͢Δػೳ
    ɾ৽͍͠ϓϩτίϧ֦ுΛ࡞ͬͯ΋ɺϢʔβʔ͕OSΛߋ৽͠ͳ͍ͱద༻͞Εͳ͍
    ɾΑͬͯɺϓϩτίϧͷվྑͷαΠΫϧΛૉૣ͘ճ͍ͯ͘͜͠ͱ͕Ͱ͖ͳ͍
    Ͱ΋΋ͬͱૣ͘
    ͍ͨ͠ΜͩΑʂ

    View Slide

  14. QUICͷొ৔
    Chapter.4

    View Slide

  15. Chapter.4 QUICͷొ৔
    ▸ TCPʹ૬౰͢Δ࠶ૹ੍ޚͷ͘͠Έ
    ▸ ϋϯυγΣΠΫͷ࡟ݮʹΑΔ௨৴ͷޮ཰Խ
    ɾτϥϯεϙʔτ૚ͱ҉߸ԽͷϋϯυγΣΠΫΛฒྻʹߦ͏
    ɾཱ֬·Ͱʹ1ԟ෮൒͔͔͍ͬͯͨͱ͜Ζɺ1ԟ෮ʹ
    ▸ ϔουΦϒϥΠϯϒϩοΩϯάͷ๷ࢭ
    ▸ ΞϓϦέʔγϣϯͷҰ෦ͱ࣮ͯ͠૷
    ɾվྑ΍֦ு͕༰қʹ
    ex)Webϒϥ΢β͕Ξοϓσʔτ͞ΕΕ͹QUIC΋Ξοϓσʔτ͞ΕΔ ౳
    ͭ·Γɺɺɺ

    View Slide

  16. CHAPTER.4 QUICͷొ৔
    τϥϯεϙʔτ૚ʹ͓͚Δ໰୊ͱ՝୊Λղܾ͠ɺ
    ߴ଎ੑɺ৴པੑͱ֦ுੑΛߴΊͨ৽͍͠ϓϩτίϧ
    ͦΕ͕ɺɺɺ
    ̦̪̞̘

    View Slide

  17. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ
    ͍͔͕Ͱ͔ͨ͠ʁQUICͷ֓ཁ͕ͳΜͱͳʙ͘ɺ͔ͭΊ·͔ͨ͠ʁ
    ;ʔ͕@fuga__ch

    View Slide