UDP рд╡рд░ HTTP - QUIC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рд╡рд╛рдкрд░ рдХрд░рдгреЗ

UDP рд╡рд░ HTTP - QUIC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рд╡рд╛рдкрд░ рдХрд░рдгреЗ

QUIC (рдХреНрд╡рд┐рдХ UDP рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди) рд╣рд╛ UDP рдЪреНрдпрд╛ рд╡рд░рдЪрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЖрд╣реЗ рдЬреЛ TCP, TLS рдЖрдгрд┐ HTTP/2 рдЪреНрдпрд╛ рд╕рд░реНрд╡ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдмрд╣реБрддреЗрдХ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рддреЛ. рдпрд╛рд▓рд╛ рдмрд▒реНрдпрд╛рдЪрджрд╛ рдирд╡реАрди рдХрд┐рдВрд╡рд╛ "рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ" рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореНрд╣рдЯрд▓реЗ рдЬрд╛рддреЗ, рдкрд░рдВрддреБ рддреЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдЕрд╡рд╕реНрдереЗрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдХрд╛рд│ рдЯрд┐рдХрд▓реЗ рдЖрд╣реЗ: рд╡рд┐рдХрд╛рд╕ 7 рд╡рд░реНрд╖рд╛рдВрд╣реВрди рдЕрдзрд┐рдХ рдХрд╛рд│ рдЪрд╛рд▓реВ рдЖрд╣реЗ. рдпрд╛ рдХрд╛рд│рд╛рдд, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдПрдХ рдорд╛рдирдХ рдмрдиреВ рд╢рдХрд▓рд╛ рдирд╛рд╣реА, рдкрд░рдВрддреБ рддрд░реАрд╣реА рд╡реНрдпрд╛рдкрдХ рдЭрд╛рд▓рд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЯреНрд░реЕрдлрд┐рдХрд▓рд╛ рдЧрддреА рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдореЛрдмрд╛рдЗрд▓ рдиреЗрдЯрд╡рд░реНрдХрдордзреАрд▓ рд╡рд┐рд▓рдВрдм рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Google рдЖрдгрд┐ Facebook рд╕рд╛рд░рдЦреНрдпрд╛ рджрд┐рдЧреНрдЧрдЬрд╛рдВрдХрдбреВрди QUIC рдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ IETF рдиреЗ рддреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдлрд╛рдЯрд╛ HTTP/3 рдорд╛рдирдХрд╛рдЪрд╛ рдЖрдзрд╛рд░ рдШреЛрд╖рд┐рдд рдХреЗрд▓рд╛ (рдЬрд░реА HTTP/2 рд╡рд╛рдкрд░рддреЗ. рдлрдХреНрдд ренреж% рд╕рд╛рдЗрдЯреНрд╕).

рд╕рдВрдХрд▓реНрдкрдирд╛

рдХреНрд╡рд┐рдХ рд╣реЗ рд▓реЗрдЧреЗрд╕реА TCP рдЪреНрдпрд╛ рдмрджрд▓реА рдореНрд╣рдгреВрди рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ, рдЬреЗ рдореВрд▓рддрдГ рдХрдореА-рддреЛрдЯрд╛ рд╡рд╛рдпрд░реНрдб рдиреЗрдЯрд╡рд░реНрдХрд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗ рд╣реЛрддреЗ. рдЯреАрд╕реАрдкреА рдХреНрд░рдорд╛рдиреЗ рдкреЕрдХреЗрдЯ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ, рддреНрдпрд╛рдореБрд│реЗ рдПрдХ рдкреЕрдХреЗрдЯ рд╣рд░рд╡рд▓реНрдпрд╛рд╕, рд╕рдВрдкреВрд░реНрдг рд░рд╛рдВрдЧ рдерд╛рдВрдмрд╡рд┐рд▓реА рдЬрд╛рддреЗ (рд╣реЗрдб-рдСрдл-рд▓рд╛рдЗрди рдмреНрд▓реЙрдХрд┐рдВрдЧ), рдЬреЗ рдХрдиреЗрдХреНрд╢рдирдЪреА рдЧреБрдгрд╡рддреНрддрд╛ рдЖрдгрд┐ рд╕реНрдерд┐рд░рддрд╛ рдирдХрд╛рд░рд╛рддреНрдордХрд░рд┐рддреНрдпрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ. рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдиреБрдХрд╕рд╛рди рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА, рд╕реЗрд▓реНрдпреБрд▓рд░ рдиреЗрдЯрд╡рд░реНрдХ рдореЛрдареНрдпрд╛ рдмрдлрд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдЕрд╡рд▓рдВрдм рдХрд░рддрд╛рдд, рдЬреНрдпрд╛рдореБрд│реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХрддрд╛ рдЖрдгрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдЪреБрдХреАрдЪрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рд╕рд╛рдж рд╣реЛрддреЛ (рдмрдлрд░рдмреНрд▓реЛрдЯ). рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА TCP рдЦреВрдк рд╡реЗрд│ рдШрд╛рд▓рд╡рддреЗ: SYN/ACK рдЖрдгрд┐ TLS рд╡рд┐рдирдВрддреНрдпрд╛ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЬреНрдпрд╛рд╕рд╛рдареА QUIC рдкреНрд░рдорд╛рдгреЗ рдПрдХ рдРрд╡рдЬреА рддреАрди рд░рд╛рдЙрдВрдбрдЯреНрд░рд┐рдкреНрд╕ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддрд╛рдд.

UDP рд╡рд░ HTTP - QUIC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рд╡рд╛рдкрд░ рдХрд░рдгреЗ

QUIC рдордзреНрдпреЗ TCP рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдЖрдгрд┐ TLS 1.3 рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ, рд╕рд░реНрд╡ рдХрдиреЗрдХреНрд╢рди рдиреЗрд╣рдореА рдХреВрдЯрдмрджреНрдз рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдЕрд╢рд╛ рдЯреНрд░реЕрдлрд┐рдХрдЪреЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдгреЗ HTTPS рд╡рд░ рдЬрд╛рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд╕реЛрдкреЗ рдирд╛рд╣реА. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, TCP рд╕реНрдЯреЕрдХрдЪреА рд╕рдВрдкреВрд░реНрдг рдмрджрд▓реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрд░реНрдЬ рд╕реНрддрд░рд╛рд╡рд░ QUIC рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЕрдирдВрддрдХрд╛рд│.

HTTP/2 рдордзреНрдпреЗ рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЕрд╕реВрдирд╣реА, рдкреЕрдХреЗрдЯреНрд╕ рдХреНрд░рдорд╛рдиреЗ рд╡рд┐рддрд░реАрдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рд▓реНрдпрд╛рдореБрд│реЗ рд╣реЗрдб-рдСрдл-рд▓рд╛рдЗрди рдмреНрд▓реЙрдХрд┐рдВрдЧрдЪреА рд╕рдорд╕реНрдпрд╛ рддрд┐рдереЗрдЪ рд░рд╛рд╣рд┐рд▓реА. QUIC рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА UDP рдЪреНрдпрд╛ рд╡рд░ рдХреЗрд▓реА рдЬрд╛рддреЗ, рддреНрдпрд╛рдореБрд│реЗ рддреНрдпрд╛рдд рддрддреНрддреНрд╡рддрдГ рдХреЛрдгрддреЗрд╣реА рдмреНрд▓реЙрдХрд┐рдВрдЧ рдирд╕рддреЗ рдЖрдгрд┐ рдкреЕрдХреЗрдЯреНрд╕ рдХрд╛рдпрдордЪреЗ рд╣рд░рд╡рдгреНрдпрд╛рдкрд╛рд╕реВрди рд░реЛрдЦрдгреНрдпрд╛рд╕рд╛рдареА, рддреНрдпрд╛рдВрдирд╛ рдХреНрд░рдорд╛рдВрдХрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдд тАЬрд╢реЗрдЬрд╛рд░реАтАЭ рдЪреЗ рднрд╛рдЧ рдЕрд╕реВ рд╢рдХрддрд╛рдд, рдЬреЗ рд░рд┐рдбрдВрдбрдВрд╕реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, QUIC рдПрдХрд╛рдЪ рдХрдиреЗрдХреНрд╢рдирдордзреНрдпреЗ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╕рд╛рдареА рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рд░рд╛рдВрдЧреЗрд▓рд╛ рдПрдХрд╛рдзрд┐рдХ рдереНрд░реЗрдбрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдкреЕрдХреЗрдЯ рд╣рд░рд╡рд▓реНрдпрд╛рд╕, рд╕рдорд╕реНрдпрд╛ рдлрдХреНрдд рдПрдХрд╛ рд░рд╛рдВрдЧреЗрд╕рд╛рдареА рдЙрджреНрднрд╡реВ рд╢рдХрддрд╛рдд (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╛рдЗрд▓ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА):

UDP рд╡рд░ HTTP - QUIC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рд╡рд╛рдкрд░ рдХрд░рдгреЗ

рд╡рд╛рдкрд░рд╛

рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, QUIC Google рдордзреНрдпреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ рдЖрдгрд┐ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдХрдВрдкрдиреАрдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ. 2013 рдордзреНрдпреЗ, рддреЗ IETF рд▓рд╛ рдорд╛рдирдХреАрдХрд░рдгрд╛рд╕рд╛рдареА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ (рдЬреЗ рдЕрджреНрдпрд╛рдк рдЪрд╛рд▓реВ рдЖрд╣реЗ), рдЖрдгрд┐ рдЖрддрд╛ рдкреНрд░рддреНрдпреЗрдХрдЬрдг рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдХрд╛рдп рдЧрд╣рд╛рд│ рдЖрд╣реЗ рддреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░реВрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдордзреНрдпреЗ рд╕рд╣рднрд╛рдЧреА рд╣реЛрдК рд╢рдХрддреЛ. IETF рд╡рд░реНрдХрд┐рдВрдЧ рдЧреНрд░реБрдк рд╡рд╛рд░реНрд╖рд┐рдХ рдмреИрдардХрд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд░рддреЛ рдЬреНрдпрд╛ рджрд░рдореНрдпрд╛рди рдирд╡реАрди рдорд╛рдирдХ рдордВрдЬреВрд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдирд╡рдХрд▓реНрдкрдирд╛рдВрд╡рд░ рдЪрд░реНрдЪрд╛ рдХреЗрд▓реА рдЬрд╛рддреЗ. QUIC рдЪреА рд╣реА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдореБрдЦреНрдп рдорд╛рдирд▓реА рдЬрд╛рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ HTTP/3 рдорд╛рдирдХ рдкреНрд░рдорд╛рдгрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ.

рдЖрддрд╛рдкрд░реНрдпрдВрдд, рдореБрдЦреНрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореНрд╣рдгреВрди HTTP/3 рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдмрджреНрджрд▓ рдХреЛрдгрддреАрд╣реА рдЪрд░реНрдЪрд╛ рдирд╛рд╣реА, рдХрд╛рд░рдг рддреЗ рдЕрджреНрдпрд╛рдк рдкреВрд░реНрдг рдЭрд╛рд▓реЗрд▓реЗ рдирд╛рд╣реА рдЖрдгрд┐ рдЬрд╡рд│рдЬрд╡рд│ рд╕рдорд░реНрдерд┐рдд рдирд╛рд╣реА:

UDP рд╡рд░ HTTP - QUIC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рд╡рд╛рдкрд░ рдХрд░рдгреЗ

рдкрд░рдВрддреБ рдХреНрд╡рд┐рдХ рд╣реЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░рдордзреАрд▓ рд╡рд╛рд╣рддреВрдХ рдореНрд╣рдгреВрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЬреЗ Uber рдпреЗрдереЗ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ:

QUIC рдЪреНрдпрд╛ рдкрд░рд┐рдЪрдпрд╛рд╡рд░ Uber рдЪреА рдЯрд┐рдкреНрдкрдгреА

QUIC рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдПрдореНрдмреЗрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЦрд░рд╛рдм рдХрдиреЗрдХреНрдЯрд┐рд╡реНрд╣рд┐рдЯреА рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдЬреБрдирд╛ рд╕реНрдЯреЕрдХ (HTTP/2 рдУрд╡реНрд╣рд░ TLS/TCP) QUIC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдиреЗ рдмрджрд▓рд▓рд╛. рдЖрдореНрд╣реА рдиреЗрдЯрд╡рд░реНрдХ рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рд▓реА рдХреНрд░реЛрдиреЗрдЯ рдкрд╛рд╕реВрди Chromium рдкреНрд░рдХрд▓реНрдк, рдЬреНрдпрд╛рдордзреНрдпреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреА рдореВрд│, Google рдЖрд╡реГрддреНрддреА рдЖрд╣реЗ - gQUIC. рдирд╡реАрдирддрдо IETF рддрдкрд╢реАрд▓рд╛рдВрдЪреЗ рдкрд╛рд▓рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рджреЗрдЦреАрд▓ рд╕рддрдд рд╕реБрдзрд╛рд░рд▓реА рдЬрд╛рдд рдЖрд╣реЗ.

QUIC рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рдкреНрд░рдердо рдЖрдордЪреНрдпрд╛ Android рдЕреЕрдкреНрд╕рдордзреНрдпреЗ Cronet рд╕рдорд╛рдХрд▓рд┐рдд рдХреЗрд▓реЗ. рд╕реНрдерд▓рд╛рдВрддрд░ рдЦрд░реНрдЪ рд╢рдХреНрдп рддрд┐рддрдХреНрдпрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗрд▓реЗ рдЧреЗрд▓реЗ. рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдЬреБрдиреНрдпрд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рд╕реНрдЯреЕрдХрд▓рд╛ рдкреВрд░реНрдгрдкрдгреЗ рдмрджрд▓рдгреНрдпрд╛рдРрд╡рдЬреА OkHttp, рдЖрдореНрд╣реА OkHttp API рдлреНрд░реЗрдорд╡рд░реНрдХ рдЕрдВрддрд░реНрдЧрдд Cronet рд╕рдорд╛рдХрд▓рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдПрдХрддреНрд░реАрдХрд░рдг рдХрд░реВрди, рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓рдордзреАрд▓ рдмрджрд▓ рдЯрд╛рд│рд▓реЗ (рдЬреЗ рд╡рд╛рдкрд░рддрд╛рдд рд░рд┐рдЯреНрд░реЛрдлрд┐рдЯ) API рд╕реНрддрд░рд╛рд╡рд░.

рдЕрдБрдбреНрд░реЙрдЗрдб рдЙрдкрдХрд░рдгрд╛рдВрд╕рд╛рдареАрдЪреНрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рдкреНрд░рдорд╛рдгреЗрдЪ, рдЖрдореНрд╣реА iOS рд╡рд░реАрд▓ Uber рдЕреЕрдкреНрд╕рдордзреНрдпреЗ Cronet рд▓рд╛рдЧреВ рдХреЗрд▓реЗ, рдиреЗрдЯрд╡рд░реНрдХрд╡рд░реВрди HTTP рдЯреНрд░реЕрдлрд┐рдХ рд░реЛрдЦреВрди APIрд╡рд╛рдкрд░рдд рдЖрд╣реЗ NSURLрдкреНрд░реЛрдЯреЛрдХреЙрд▓. iOS рдлрд╛рдЙрдВрдбреЗрд╢рдирджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реЗ рд╣реЗ рдЕтАНреЕрдмреНрд╕реНрдЯреНрд░реЕрдХреНрд╢рди, рдкреНрд░реЛрдЯреЛрдХреЙрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ URL рдбреЗрдЯрд╛ рд╣рд╛рддрд╛рд│рддреЗ рдЖрдгрд┐ рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рдХреА рдЖрдореНрд╣реА рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд▓рд╛рдВрддрд░ рдЦрд░реНрдЪрд╛рд╢рд┐рд╡рд╛рдп рдЖрдордЪреНрдпрд╛ iOS рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ Cronet рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░реВ рд╢рдХрддреЛ.

рдкрд╛рд╕реВрди рдШреЗрддрд▓реЗ рд╣реЗ рднрд╛рд╖рд╛рдВрддрд░ рдЙрдмрд░ рд▓реЗрдЦ

рдмреЕрдХрдПрдВрдбрд╡рд░ рддреНрдпрд╛рдВрдиреА Google Cloud lb рджреНрд╡рд╛рд░реЗ QUIC рдХрдиреЗрдХреНрд╢рди рдкрдХрдбрд▓реЗ, рдЬреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ 2018 рдЪреНрдпрд╛ рдордзреНрдпрд╛рдкрд╛рд╕реВрди.

Google рдХреНрд▓рд╛рдЙрдб Google-рд╡рд┐рдХрд╕рд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╕рд╣ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдкрд░реНрдпрд╛рдп рдХрд╛рдп рдЖрд╣реЗрдд?

Nginx

CloudFlare рдлрд╛рд░ рдкреВрд░реНрд╡реА рдирд╛рд╣реА рдореА рдкрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ nginx (рдЬреЗ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ HTTP/3 рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдд рдирд╛рд╣реА) рддреНрдпрд╛рдЪреНрдпрд╛ Quiche рдЯреВрд▓рд╕рд╣. рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдПрдХрд▓ .рдкреЕрдЪ рдлрд╛рдЗрд▓ рдореНрд╣рдгреВрди рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ, рдЬреА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рд╕рд╣ рдпреЗрддреЗ:

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz
tar xvzf nginx-1.16.1.tar.gz
git clone --recursive https://github.com/cloudflare/quiche
cd nginx-1.16.1
patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

рдпреЗрдереЗ рдЖрдкрдг рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕ рдЖрдкрд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХрдиреЗрдХреНрдЯ рдХрд░реВ рд╢рдХрддрд╛

./configure                          	
   	--prefix=$PWD                       	
   	--with-http_ssl_module              	
   	--with-http_v2_module               	
   	--with-http_v3_module               	
   	--with-openssl=../quiche/deps/boringssl 
   	--with-quiche=../quiche
 make

рдлрдХреНрдд HTTP/3 рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдХрд░рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ

events {
    worker_connections  1024;
}

http {
    server {
        # Enable QUIC and HTTP/3.
        listen 443 quic reuseport;

        # Enable HTTP/2 (optional).
        listen 443 ssl http2;

        ssl_certificate      cert.crt;
        ssl_certificate_key  cert.key;

        # Enable all TLS versions (TLSv1.3 is required for QUIC).
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

        # Request buffering in not currently supported for HTTP/3.
        proxy_request_buffering off;

        # Add Alt-Svc header to negotiate HTTP/3.
        add_header alt-svc 'h3-27=":443"; ma=86400';
    }
}

рдирд┐рдпрдорд┐рдд рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ HTTP/3 рджреНрд╡рд╛рд░реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдгреЗ рдЕрджреНрдпрд╛рдк рд╢рдХреНрдп рдирд╛рд╣реА, рдкрд░рдВрддреБ рдЖрдкрдг рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ рдХреНрд░реЛрдо рдХреЕрдирд░реА рдЖрдгрд┐ рдзреНрд╡рдЬрд╛рд╕рд╣ рдЪрд╛рд▓рд╡рд╛ --enable-quic, рддреБрдордЪреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЬрд╛ рдХрд┐рдВрд╡рд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, quic.rocks рд╕рд╛рдЗрдЯрд╡рд░ рдЬрд╛ рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕рдХ рд╕рд╛рдзрдирд╛рдВрдордзреНрдпреЗ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ рдкрд╣рд╛:
UDP рд╡рд░ HTTP - QUIC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рд╡рд╛рдкрд░ рдХрд░рдгреЗ
HTTP/3 рдРрд╡рдЬреА рдЕрд╕реЗ рд▓рд┐рд╣рд┐рд▓реЗ рдЖрд╣реЗ http2+quic/99, рдкрдг рдореВрд▓рдд: рд╕рдорд╛рди рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ.

рдЗрддрд░ рддрдВрддреНрд░рдЬреНрдЮрд╛рди

рдирд┐рд╖реНрдХрд░реНрд╖

UDP рд╡рд░ HTTP - QUIC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рд╡рд╛рдкрд░ рдХрд░рдгреЗ

QUIC рдордзреАрд▓ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕реНрдерд┐рд░ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╡рд╛рдврдд рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рдо рд╕реБрд░реВ рдЖрд╣реЗ. рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреА рдирд╡реАрди рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЬрд╡рд│рдЬрд╡рд│ рдкреНрд░рддреНрдпреЗрдХ рдорд╣рд┐рдиреНрдпрд╛рдд рджрд┐рд╕реВрди рдпреЗрддреЗ рдЖрдгрд┐ рджрд░рд╡рд░реНрд╖реА рдЕрдзрд┐рдХрд╛рдзрд┐рдХ рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ рдХреА QUIC рд╣реЗ рднрд╡рд┐рд╖реНрдп рдЖрд╣реЗ. TCP рд╕реНрдЯреЕрдХрдЪреНрдпрд╛ рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреНрдпреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рд╢рдХреНрдп рдЖрд╣реЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рд▓рд╡рдХрд░рдЪ рдХрд┐рдВрд╡рд╛ рдирдВрддрд░ рд╕рдВрдкреВрд░реНрдг рдЗрдВрдЯрд░рдиреЗрдЯ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рдЖрдгрд┐ рдЬрд▓рдж рдХрдиреЗрдХреНрд╢рдирд╡рд░ рдЬрд╛рдИрд▓.

рдЖрдзреАрдЪ рдЖрддрд╛ рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрд╕рд╛рдареА рдХреНрд╡рд┐рдХ рд╕рдВрд╡рд╛рдж рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ рд╢рдХрддрд╛ рдХрд┐рдВрд╡рд╛ рдмреНрд░рд╛рдЙрдЭрд░рд▓рд╛ рджреЗрдЦреАрд▓ рджреЗрдК рд╢рдХрддрд╛ - рддреЗ рд╕рд░реНрд╡ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрдд рдЖрд╣реЗрдд рдЖрдгрд┐ рдХреЕрдирд┐рдпреБрдЬрд╕рд╣ рджреБрдГрдЦреА рдЖрдХрдбреЗрд╡рд╛рд░реА рдЕрдзрд┐рдХ рдЖрдирдВрджреА рд╣реЛрдИрд▓.

UDP рд╡рд░ HTTP - QUIC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рд╡рд╛рдкрд░ рдХрд░рдгреЗ

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛