2021.9.24 鹿児島.mkのLTで登壇した時の発表資料です。 QUICというプロトコルについて話しました。
Learn “QUIC” Quickly!2021.9.24 ࣛࣇౡ.mk
View Slide
ࣗݾհChapter.0
Who am i?ࣗݾհ▸ ;ʔ͕▸ ݱ৬ެһ৫ͷDXਪਐΛ୲▸ FjordBootCampͰRuby/RailsͳͲΛֶश࠷ऴͷΧϦΩϡϥϜͰࣗ࡞αʔϏε࡞த▸ ݱࡏɺస৬׆ಈத▸ ೝఆதຊϚελʔʢࣗশʣݹλϯϝϯதຊΛ͜Αͳ͘Ѫ͢ΔRubyistTwitter: @fuga__ch
ͳͥ͜ͷλΠτϧʹͨ͠ͷ͔Chapter.0-1
Chapter.0-1 ͳͥ͜ͷλΠτϧʹͨ͠ͷ͔▸ ϓϩάϥϛϯάΛֶͿதͰɺ͍͔ͭ͘ͷϓϩτίϧΛѻͬͨHTTPɺSMTP POPͰͷϝʔϧૹड৴ ͳͲ▸ ͦΕΑΓ͞ΒʹϨΠϠͷϓϩτίϧ͋ΔଘࡏΓͭͭษڧ͢ΔඞཁੑΛײ͍ͯ͡ͳ͔ͬͨ▸ ͦΜͳதɺʮ”QUIC”ͱ͍͏৽͍͠ϓϩτίϧ͕Ͱ͖ͨʯهࣄΛಡΜͩʮͳΜͩΖ͏ʁʯʮԿ͕มΘΔΜͩΖ͏ʁʯʮτϥϯεϙʔτͬͯʁʯษڧͯ͠ΈΑ͏ʂൃදͨ͠ΒͬͱཧղͰ͖Δ͔ʂ
”QUIC”ͬͯɺͳʹʁChapter.1
Chapter.1 “QUIC”ͬͯɺͳʹʁ▸ τϥϯεϙʔτʹ͓͚Δ৽͍͠௨৴ϓϩτίϧ▸ ʮTCPʹऔͬͯΘΔϓϩτίϧʯͱݴΘΕ͍ͯΔ▸ Google͕WEBͷվળΛओͳతͱͯ͠։ൃ࢝͠Ίͨ▸ 20215݄ɺIETFʹΑͬͯඪ४Խ͞Εͨ▸ QUIC্Ͱಈ࡞͢Δͷ͕HTTP/3τϥϯεϙʔτʁ̩̘̥ʁ̝̩̩̥ʗ̏ʁ
HTTP/2·ͰͷτϥϯεϙʔτChapter.2
Chapter.2 HTTP/2·Ͱͷτϥϯεϙʔτ▸ σʔλૹͷ৴པੑΛఏڙ͢Δׂ▸ TCP·ͨUDP͍ͣΕ͔ͷϓϩτίϧͰ௨৴͢Δɾσʔλ͕ૹΕ͍ͯΔ͔ɾҰʹૹ৴Ͱ͖ΔαΠζʹׂʢׂͨ͠1ͭ͋ͨΓͷσʔλ୯Ґʹύέοτʣɾσʔλ͕յΕ͍ͯͳ͍͔ɾॱ൪௨Γʹͳ͍ͬͯΔ͔
Chapter.2 HTTP/2·Ͱͷτϥϯεϙʔτ▸ σʔλͷશੑΛอূ▸ ΫϥΠΞϯτ͕ύέοτΛड͚औ͔ͬͨͲ͏͔ΛஞҰ֬ೝ̩̘̥ɾίωΫγϣϯͷཱ֬ɾ3wayϋϯυγΣΠΫ▸ จॻͷશੑ͕ٻΊΒΕΔσʔλૹʹΘΕΔग़యɿhttps://www.infraexpert.com/study/tcpip9.htmlɾ࠶ૹ੍ޚɹɾ֬ೝԠɹɾϑϩʔ੍ޚɹɾ੍ޚ
Chapter.2 HTTP/2·Ͱͷτϥϯεϙʔτ▸ σʔλͷશੑอূ͞Εͳ͍▸ ίωΫγϣϯ࠶ૹ੍ޚ͕ͳ͍ɺߴ̪̙̥ɾ௨৴தʹσʔλ͕յΕ͍ͯΔ͔Ͳ͏͔֬ೝ͍ͯ͠Δ▸ ಈըԻ௨ͳͲͷେ༰ྔ͔ͭશੑΛٻΊΒΕͳ͍௨৴ʹར༻ɾյΕ͍ͯͯɺഁغͯ͠ऴΘΓɾΫϥΠΞϯτ͕ύέοτΛड͚औ͔ͬͨͲ͏͔֬ೝ͠ͳ͍
TCP/UDPͷChapter.3
Chapter.3 TCP/UDPͷ▸ ߴԽͷݶք▸ ϔουΦϒϥΠϯϒϩοΩϯάઌߦ͢Δύέοτ͕ύέοτϩεͨ͠߹ɺޙଓͷύέοτ͕ಧ͍ͯ͏͜ͱ͕Ͱ͖ͳ͍▸ ֦ுੑͷݶքɾTCPͰ3wayϋϯυγΣΠΫ͕ඞਢͷͨΊɺଓͷཱ֬ʹ͕͔͔࣌ؒΔɾ͞ΒʹɺTLSͷϋϯυγΣΠΫ͋ΔͷͰ༨ܭʹ͕͔͔࣌ؒΔɾUDPߴ͕ͩ৴པੑͳ͍ɾTCPΧʔωϧ(OS)͕ఏڙ͢Δػೳɾ৽͍͠ϓϩτίϧ֦ுΛ࡞ͬͯɺϢʔβʔ͕OSΛߋ৽͠ͳ͍ͱద༻͞Εͳ͍ɾΑͬͯɺϓϩτίϧͷվྑͷαΠΫϧΛૉૣ͘ճ͍ͯ͘͜͠ͱ͕Ͱ͖ͳ͍Ͱͬͱૣ͍ͨ͘͠ΜͩΑʂ
QUICͷొChapter.4
Chapter.4 QUICͷొ▸ TCPʹ૬͢Δ࠶ૹ੍ޚͷ͘͠Έ▸ ϋϯυγΣΠΫͷݮʹΑΔ௨৴ͷޮԽɾτϥϯεϙʔτͱ҉߸ԽͷϋϯυγΣΠΫΛฒྻʹߦ͏ɾཱ֬·Ͱʹ1ԟ෮͔͔͍ͬͯͨͱ͜Ζɺ1ԟ෮ʹ▸ ϔουΦϒϥΠϯϒϩοΩϯάͷࢭ▸ ΞϓϦέʔγϣϯͷҰ෦ͱ࣮ͯ͠ɾվྑ֦ு͕༰қʹex)Webϒϥβ͕Ξοϓσʔτ͞ΕΕQUICΞοϓσʔτ͞ΕΔ ͭ·Γɺɺɺ
CHAPTER.4 QUICͷొτϥϯεϙʔτʹ͓͚Δͱ՝Λղܾ͠ɺߴੑɺ৴པੑͱ֦ுੑΛߴΊͨ৽͍͠ϓϩτίϧͦΕ͕ɺɺɺ̦̪̞̘
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ͍͔͕Ͱ͔ͨ͠ʁQUICͷ֓ཁ͕ͳΜͱͳʙ͘ɺ͔ͭΊ·͔ͨ͠ʁ;ʔ͕@fuga__ch