HTTP рдорд╛рдерд┐ UDP - QUIC рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд░рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

HTTP рдорд╛рдерд┐ UDP - QUIC рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд░рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

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

рдЕрд╡рдзрд╛рд░рдгрд╛

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

HTTP рдорд╛рдерд┐ UDP - QUIC рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд░рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

QUIC рд▓реЗ TCP рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд░ TLS 1.3 рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рд╕рдВрдпреЛрдЬрди рдЧрд░реЗрдХреЛ рд╣реБрдирд╛рд▓реЗ, рд╕рдмреИ рдЬрдбрд╛рдирд╣рд░реВ рд╕рдзреИрдВ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╣реБрдиреНрдЫрдиреН, рд░ рддреНрдпрд╕реНрддрд╛ рдЯреНрд░рд╛рдлрд┐рдХрд╣рд░реВрд▓рд╛рдИ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдЧрд░реНрди HTTPS рдорд╛ рдЬрд╛рдиреБ рднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рдЫреИрдиред рдердк рд░реВрдкрдорд╛, TCP рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рдкреВрд░реНрдг рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирдХреЛ рд░реВрдкрдорд╛ QUIC рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрддрд░рдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫ рд╕рдзреИрдВрднрд░рд┐.

HTTP/2 рдорд╛ рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдердирдХреЛ рдмрд╛рдмрдЬреБрдж, рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдХреНрд░рдордмрджреНрдз рд░реВрдкрдорд╛ рдбреЗрд▓рд┐рднрд░ рдЧрд░реНрдиреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдХреЛ рдХрд╛рд░рдгрд▓реЗ рд╣реЗрдб-рдЕрдл-рд▓рд╛рдЗрди рдмреНрд▓рдХрд┐рдЩрдХреЛ рд╕рдорд╕реНрдпрд╛ рддреНрдпрд╣рд╛рдБ рд░рд╣реНрдпреЛред QUIC UDP рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рдорд╛ рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдХреБрдиреИ рдЕрд╡рд░реЛрдз рдЫреИрди, рд░ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рд╕рджрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд░рд╛рдЙрдирдмрд╛рдЯ рд░реЛрдХреНрди, рддрд┐рдиреАрд╣рд░реВ рдирдореНрдмрд░ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рд░ рдЕрдирд╛рд╡рд╢реНрдпрдХрддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗ "рдЫрд┐рдореЗрдХреАрд╣рд░реВ" рдХреЛ рднрд╛рдЧрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдердк рд░реВрдкрдорд╛, QUIC рд▓реЗ рдПрдХрд▓ рдЬрдбрд╛рди рднрд┐рддреНрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рд▓рд╛рдорд▓рд╛рдИ рдзреЗрд░реИ рдереНрд░реЗрдбрд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрджрдЫред рдпрд╕рд░реА, рдпрджрд┐ рдкреНрдпрд╛рдХреЗрдЯ рд╣рд░рд╛рдПрдХреЛ рдЫ рднрдиреЗ, рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдорд╛рддреНрд░ рдПрдХ рд▓рд╛рдордХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрдкрдиреНрди рд╣реБрди рд╕рдХреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╛рдЗрд▓ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдгрдХреЛ рд▓рд╛рдЧрд┐):

HTTP рдорд╛рдерд┐ UDP - QUIC рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд░рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

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

рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо, рдореБрдЦреНрдп рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд░реВрдкрдорд╛ HTTP/3 рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХреБрдиреИ рдХреБрд░рд╛ рдЫреИрди, рдХрд┐рдирднрдиреЗ рдпреЛ рдЕрдЭреИ рд╕рдорд╛рдкреНрдд рднрдПрдХреЛ рдЫреИрди рд░ рд▓рдЧрднрдЧ рд╕рдорд░реНрдерд┐рдд рдЫреИрди:

HTTP рдорд╛рдерд┐ UDP - QUIC рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд░рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

рддрд░ QUIC рд▓рд╛рдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░ рд╕рд░реНрднрд░ рдмреАрдЪрдХреЛ рдпрд╛рддрд╛рдпрд╛рддрдХреЛ рд░реВрдкрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЬреБрди Uber рдорд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ:

QUIC рдХреЛ рдкрд░рд┐рдЪрдпрдорд╛ Uber рдХреЛ рдЯрд┐рдкреНрдкрдгреА

QUIC рд▓рд╛рдИ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрдореНрдмреЗрдб рдЧрд░реНрди рд░ рдЦрд░рд╛рдм рдЬрдбрд╛рди рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рдЧрд░реНрди, рд╣рд╛рдореАрд▓реЗ рдкреБрд░рд╛рдиреЛ рд╕реНрдЯреНрдпрд╛рдХ (HTTP/2 over TLS/TCP) рд▓рд╛рдИ QUIC рдкреНрд░реЛрдЯреЛрдХрд▓рд╕рдБрдЧ рдмрджрд▓реНрдпреМрдВред рд╣рд╛рдореАрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ рдХреНрд░реЛрдиреЗрдЯ рдмрд╛рдЯ рдХреНрд░реЛрдорд┐рдпрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ, рдЬрд╕рдорд╛ рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рдореВрд▓, рдЧреБрдЧрд▓ рд╕рдВрд╕реНрдХрд░рдг - gQUIC рд╕рдорд╛рд╡реЗрд╢ рдЫред рдирд╡реАрдирддрдо IETF рд╡рд┐рдирд┐рд░реНрджреЗрд╢рд╣рд░реВ рдкрд╛рд▓рдирд╛ рдЧрд░реНрди рдпреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдирд┐ рдирд┐рд░рдиреНрддрд░ рд╕реБрдзрд╛рд░ рднрдЗрд░рд╣реЗрдХреЛ рдЫред

рд╣рд╛рдореАрд▓реЗ QUIC рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЗ рд╣рд╛рдореНрд░реЛ Android рдПрдкрд╣рд░реВрдорд╛ Cronet рдПрдХреАрдХреГрдд рдЧрд░реНрдпреМрдВред рдПрдХреАрдХрд░рдг рд╕рдореНрднрд╡ рднрдПрд╕рдореНрдо рдмрд╕рд╛рдЗрдБрд╕рд░ рд▓рд╛рдЧрдд рдШрдЯрд╛рдЙрдиреЗ рддрд░рд┐рдХрд╛рдорд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдкреБрд░рд╛рдиреЛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдЩ рд╕реНрдЯреНрдпрд╛рдХ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ рдЬреБрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреЛ OkHttp, рд╣рд╛рдореАрд▓реЗ OkHttp API рдлреНрд░реЗрдорд╡рд░реНрдХ рдЕрдиреНрддрд░реНрдЧрдд Cronet рд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдпрд╕рд░реА рдПрдХреАрдХрд░рдг рдЧрд░реЗрд░, рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд▓рд╣рд░реВрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрдпреМрдВ (рдЬреБрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рд░реЗрдЯреНрд░реЛрдлрд┐рдЯ) API рд╕реНрддрд░рдорд╛ред

рдПрдиреНрдбреНрд░реЛрдЗрдб рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬрд╕реНрддреИ, рд╣рд╛рдореАрд▓реЗ рдЖрдИрдУрдПрд╕рдорд╛ рдЙрдмрд░ рдПрдкрд╣рд░реВрдорд╛ рдХреНрд░реЛрдиреЗрдЯ рд▓рд╛рдЧреВ рдЧрд░реНрдпреМрдВ, рдиреЗрдЯрд╡рд░реНрдХрдмрд╛рдЯ HTTP рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рд░реЛрдХреНрджреИред рдПрдкреАрдЖрдИрдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ NSURL рдкреНрд░реЛрдЯреЛрдХрд▓ред iOS рдлрд╛рдЙрдиреНрдбреЗрд╕рдирджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдпреЛ рдЕрдореВрд░реНрддрддрд╛рд▓реЗ рдкреНрд░реЛрдЯреЛрдХрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ URL рдбреЗрдЯрд╛ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдЫ рд░ рд╣рд╛рдореАрд▓реЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдорд╛рдЗрдЧреНрд░реЗрд╕рди рд▓рд╛рдЧрддрд╣рд░реВ рдмрд┐рдирд╛ рдиреИ рд╣рд╛рдореНрд░рд╛ iOS рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ Cronet рдПрдХреАрдХреГрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рднрдиреНрдиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдЫред

рдмрд╛рдЯ рд▓рд┐рдЗрдПрдХреЛ рдпреЛ рдЕрдиреБрд╡рд╛рдж Uber рд▓реЗрдЦрд╣рд░реВ

рдмреНрдпрд╛рдХрдПрдиреНрдбрдорд╛ рдЙрдиреАрд╣рд░реВрд▓реЗ рдЧреБрдЧрд▓ рдХреНрд▓рд╛рдЙрдб рдПрд▓рдмреА рдорд╛рд░реНрдлрдд QUIC рдЬрдбрд╛рдирд╣рд░реВ рд╕рдорд╛рддреЗ, рдЬреБрди рдкреНрд░реЛрдЯреЛрдХрд▓ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ рдордзреНрдп 2018 рджреЗрдЦрд┐ред

рдпреЛ рдХреБрдиреИ рдЖрд╢реНрдЪрд░реНрдпрдХреЛ рдХреБрд░рд╛ рд╣реЛрдЗрди рдХрд┐ рдЧреБрдЧрд▓ рдХреНрд▓рд╛рдЙрдбрд▓реЗ рдЧреБрдЧрд▓-рд╡рд┐рдХрд╕рд┐рдд рдкреНрд░реЛрдЯреЛрдХрд▓рд╕рдБрдЧ рд░рд╛рдореНрд░реЛ рдХрд╛рдо рдЧрд░реНрджрдЫ, рддрд░ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдХреЗ рд╣реБрдиреН?

рдирд┐рдЬрд┐рдирдХреНрд╕

рдзреЗрд░реИ рд╕рдордп рдЕрдШрд┐ 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 рд╕рд╛рдЗрдЯ рд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрдорд╛ рдЬрдбрд╛рди рдкреНрд░рдХрд╛рд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН:
HTTP рдорд╛рдерд┐ UDP - QUIC рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд░рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ
HTTP/3 рдХреЛ рд╕рдЯреНрдЯрд╛ рдпреЛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ http2+quic/99, рддрд░ рдпреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ рдПрдЙрдЯреИ рдХреБрд░рд╛ рд╣реЛред

рдЕрдиреНрдп рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВ

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

HTTP рдорд╛рдерд┐ UDP - QUIC рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд░рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

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

рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрдм рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ QUIC рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд╡рд╛ рдмреНрд░рд╛рдЙрдЬрд░рд╣рд░реВрд▓рд╛рдИ рдкрдирд┐ рджрд┐рди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ - рддрд┐рдиреАрд╣рд░реВ рд╕рдмреИ рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкреНрдиреЗ рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдЫрдиреН, рд░ рдХреНрдпрд╛рдирд┐рдпреБрдЬрдХреЛ рд╕рд╛рде рджреБрдЦрдж рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдердк рдкреНрд░рдлреБрд▓реНрд▓рд┐рдд рд╣реБрдиреЗрдЫрдиреНред

HTTP рдорд╛рдерд┐ UDP - QUIC рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рд░рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди