{"id":81847,"date":"2020-05-17T01:42:34","date_gmt":"2020-05-16T23:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/http-po-udp-ispolzuem-s-polzoj-protokol-quic"},"modified":"2020-05-17T01:42:34","modified_gmt":"2020-05-16T23:42:34","slug":"http-po-udp-ispolzuem-s-polzoj-protokol-quic","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/http-po-udp-ispolzuem-s-polzoj-protokol-quic","title":{"rendered":"HTTP over UDP \u2014 using the QUIC protocol effectively","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"HTTP over UDP \u2014 using the QUIC protocol effectively\" src=\"\/wp-content\/uploads\/2020\/05\/c051364dba613156a5233551af373f8d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQUIC (Quick UDP Internet Connections) is a protocol built on top of UDP that supports all capabilities of TCP, TLS, and HTTP\/2, while addressing many of their issues. It's often referred to as a new or 'experimental' protocol, but it has long since moved past the experimental stage: development has been ongoing for over 7 years. During this time, the protocol has not yet become a standard, but it has gained widespread adoption. For example, QUIC is used to accelerate traffic and reduce latency in mobile networks by giants such as Google and Facebook, and the IETF declared its fork the basis for the HTTP\/3 standard (given that HTTP\/2 only uses <noindex><a rel=\"nofollow\" href=\"https:\/\/w3techs.com\/technologies\/details\/ce-http2\">44.8%<\/a><\/noindex> of websites).<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Concept<\/h2>\n<p>\nQUIC was developed as a replacement for the outdated TCP, which was originally designed for wired networks with low packet loss. TCP delivers packets in order, so if one packet is lost, the entire queue halts (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Head-of-line_blocking\">head-of-line blocking<\/a><\/noindex>), which negatively affects the quality and stability of the connection. To avoid massive losses, cellular networks resort to using large buffers, which in turn leads to redundancy and false negative responses from the protocol (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bufferbloat\">bufferbloat<\/a><\/noindex>). Additionally, TCP takes a considerable amount of time to establish a connection: SYN\/ACK and TLS requests are handled separately, requiring three round trips instead of one, as is the case with QUIC.<\/p>\n<p><img decoding=\"async\" alt=\"HTTP over UDP \u2014 using the QUIC protocol effectively\" src=\"\/wp-content\/uploads\/2020\/05\/02381a50e0f5bb12db0d2530f6a8454a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSince QUIC combines a TCP replacement with the implementation of TLS 1.3, all connections are always encrypted, making it just as difficult to decrypt such traffic as if it were sent over HTTPS. Additionally, QUIC is implemented at the application level, as a complete replacement of the TCP stack would take <i>ages.<\/i>.<\/p>\n<p>Despite supporting multiplexing in HTTP\/2, the head-of-line blocking issue remains due to the necessity of delivering packets in order. QUIC is implemented over UDP, so it inherently has no blocking; to prevent packets from being lost irretrievably, they are numbered and can contain parts from \u2018neighbors\u2019, ensuring redundancy. Moreover, QUIC breaks the monolithic queue into multiple streams for different types of requests within a single connection. Thus, when a packet is lost, issues can only arise from one queue (for instance, for transferring a specific file):<\/p>\n<p><img decoding=\"async\" alt=\"HTTP over UDP \u2014 using the QUIC protocol effectively\" src=\"\/wp-content\/uploads\/2020\/05\/d9b7638d1c135c64dc579cd6153230d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Using <\/h2>\n<p>\nOriginally, QUIC was developed internally at Google and was primarily tailored for use within the company. In 2013, it was handed over to the IETF for standardization (which is still ongoing), allowing anyone to participate in the protocol's development by proposing what they feel is lacking. The IETF working group organizes annual meetings where new standards are ratified and innovations discussed. This implementation of QUIC is considered the primary one and is the basis for certifying the HTTP\/3 standard.<\/p>\n<p>Currently, there is no discussion about making HTTP\/3 the primary protocol since it is still incomplete and hardly supported:<\/p>\n<p><img decoding=\"async\" alt=\"HTTP over UDP \u2014 using the QUIC protocol effectively\" src=\"\/wp-content\/uploads\/2020\/05\/e61c7f2828f8b262ef513840e0072b68.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHowever, QUIC can be implemented as a transport between the application and the server, as successfully demonstrated by Uber:<\/p>\n<blockquote>\n<h3><i>Uber's comment on implementing QUIC<\/i><\/h3>\n<p>\nTo successfully integrate QUIC and enhance application performance under poor connectivity conditions, we replaced the old stack (HTTP\/2 over TLS\/TCP) with the QUIC protocol. We utilized the network library <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.android.com\/guide\/topics\/connectivity\/cronet\">Cronet<\/a><\/noindex> from <noindex><a rel=\"nofollow\" href=\"https:\/\/www.chromium.org\/Home\">Chromium Projects<\/a><\/noindex>, which contains the original Google version of the protocol \u2013 gQUIC. This implementation is also continuously improved to follow the latest IETF specification.<\/p>\n<p>First, we integrated Cronet into our Android applications to add QUIC support. The integration was designed to minimize migration costs. Instead of fully replacing the old network stack that used the library <noindex><a rel=\"nofollow\" href=\"https:\/\/square.github.io\/okhttp\/\">OkHttp<\/a><\/noindex>, we integrated Cronet UNDER the OkHttp API framework. By performing the integration this way, we avoided changes to our network calls (which use <noindex><a rel=\"nofollow\" href=\"https:\/\/square.github.io\/retrofit\/\">Retrofit<\/a><\/noindex>) at the API level.<\/p>\n<p>Similarly to our approach with Android devices, we implemented Cronet in Uber's iOS applications by intercepting HTTP traffic using <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsurlsession\">API<\/a><\/noindex>, using <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsurlprotocol\">NSURLProtocol<\/a><\/noindex>. This abstraction, provided by the iOS Foundation, handles protocol-specific URL data and ensures that we can integrate Cronet into our iOS applications without significant migration costs.<\/p><\/blockquote>\n<p><i>taken from <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/Voximplant\/blog\/463073\/\">this translation<\/a><\/noindex> of the Uber article<\/i><\/p>\n<p>On the backend, they handled QUIC connections through Google Cloud lb, which <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/blog\/products\/gcp\/introducing-quic-support-https-load-balancing\">has supported the protocol<\/a><\/noindex> since mid-2018.<\/p>\n<p>It's not surprising that Google Cloud works excellently with a protocol developed by Google, but what alternatives are there?<\/p>\n<h3>Nginx<\/h3>\n<p>\nNot long ago, CloudFlare <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudflare.com\/experiment-with-http-3-using-nginx-and-quiche\/\">attempted to combine<\/a><\/noindex> nginx (which does not support HTTP\/3 by default) with their tool Quiche. The implementation is available in the form of a single .patch file, along with an installation tutorial:<\/p>\n<pre><code class=\"bash\">curl -O https:\/\/nginx.org\/download\/nginx-1.16.1.tar.gz\ntar xvzf nginx-1.16.1.tar.gz\ngit clone --recursive https:\/\/github.com\/cloudflare\/quiche\ncd nginx-1.16.1\npatch -p01 &lt; ..\/quiche\/extras\/nginx\/nginx-1.16.patch<\/code><\/pre>\n<p>\nHere, you can connect your modules if necessary<\/p>\n<pre><code class=\"bash\">.\/configure                          \t\n   \t--prefix=$PWD                       \t\n   \t--with-http_ssl_module              \t\n   \t--with-http_v2_module               \t\n   \t--with-http_v3_module               \t\n   \t--with-openssl=..\/quiche\/deps\/boringssl \n   \t--with-quiche=..\/quiche\n make<\/code><\/pre>\n<p>\nYou just need to enable HTTP\/3 support<\/p>\n<pre><code class=\"nginx\">events {\n    worker_connections  1024;\n}\n\nhttp {\n    server {\n        # Enable QUIC and HTTP\/3.\n        listen 443 quic reuseport;\n\n        # Enable HTTP\/2 (optional).\n        listen 443 ssl http2;\n\n        ssl_certificate      cert.crt;\n        ssl_certificate_key  cert.key;\n\n        # Enable all TLS versions (TLSv1.3 is required for QUIC).\n        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;\n\n        # Request buffering is not currently supported for HTTP\/3.\n        proxy_request_buffering off;\n\n        # Add Alt-Svc header to negotiate HTTP\/3.\n        add_header alt-svc 'h3-27=\"443\"; ma=86400';\n    }\n}<\/code><\/pre>\n<p>\nIn regular browsers, it is not yet possible to connect via HTTP\/3, but you can take <noindex><a rel=\"nofollow\" href=\"https:\/\/www.google.com\/chrome\/canary\/\">Chrome Canary<\/a><\/noindex> and run it with the flag <code>--enable-quic<\/code>, connect to your server or, for instance, to the site quic.rocks and check the connection type in Developer Tools:<br \/>\n<img decoding=\"async\" alt=\"HTTP over UDP \u2014 using the QUIC protocol effectively\" src=\"\/wp-content\/uploads\/2020\/05\/ca3488c0cb3a9273ea9d0318b00d4f83.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nInstead of HTTP\/3, it shows <code>http2+quic\/99<\/code>, but essentially it's the same.<\/p>\n<h3>Other technologies<\/h3>\n<p><\/p>\n<ul>\n<li>QUIC is also supported <noindex><a rel=\"nofollow\" href=\"https:\/\/www.litespeedtech.com\/products\/litespeed-web-server\">LiteSpeed<\/a><\/noindex> (which pompously connected to Facebook via HTTP\/3) and progressive <noindex><a rel=\"nofollow\" href=\"https:\/\/caddyserver.com\/\">Caddy<\/a><\/noindex>. Apache doesn't support it yet, but work is in progress <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/apache\/trafficserver\/projects\/8\">in full swing<\/a><\/noindex>.<\/li>\n<li>On January 21, the <noindex><a rel=\"nofollow\" href=\"https:\/\/w3c.github.io\/webrtc-quic\/\">draft standard for WebRTC was updated<\/a><\/noindex><\/li>\n<li>Just recently, Microsoft opened <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/microsoft\/msquic\">the source code of its msquic implementation<\/a><\/noindex>, which currently does not include all functionalities of the IETF standard, but this is already a significant breakthrough.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Conclusion<\/h2>\n<p>\n<img decoding=\"async\" alt=\"HTTP over UDP \u2014 using the QUIC protocol effectively\" src=\"\/wp-content\/uploads\/2020\/05\/96846d94d1ec27fbb1e00fce0f2d618e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInterest in QUIC is inconsistent but growing; work is ongoing for its standardization. New implementations of the protocol are appearing almost every month, and every year more developers are realizing that the future lies with QUIC. There is even a possibility of incorporating the protocol into future versions of the TCP stack, which means that sooner or later the entire internet will shift to more stable and faster connections.<\/p>\n<p>You can already configure QUIC interaction for your infrastructure or even deploy it to browsers\u2014they all plan to add support for the protocol, and the sad statistics from caniuse will soon become more cheerful.<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/vdsina.ru\/eternal-server?partner=habr13\"><img decoding=\"async\" alt=\"HTTP over UDP \u2014 using the QUIC protocol effectively\" src=\"\/wp-content\/uploads\/2020\/05\/88c6439f1325b696dc8868db29bab064.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/vdsina\/blog\/501840\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>QUIC (Quick UDP Internet Connections) \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u043e\u0432\u0435\u0440\u0445 UDP, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 TCP, TLS \u0438 HTTP\/2 \u0438 \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0439 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0415\u0433\u043e \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u043c \u0438\u043b\u0438 \u00ab\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u00bb \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c, \u043d\u043e \u043e\u043d \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0436\u0438\u043b \u0441\u0442\u0430\u0434\u0438\u044e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430: \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0435\u0434\u0451\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 7 \u043b\u0435\u0442. \u0417\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043d\u0435 \u0443\u0441\u043f\u0435\u043b \u0441\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c, \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81848,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81847","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"QUIC (Quick UDP Internet Connections) \u2014.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/http-po-udp-ispolzuem-s-polzoj-protokol-quic\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47HTTP \u043f\u043e UDP \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b QUIC | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"QUIC (Quick UDP Internet Connections) \u2014.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/http-po-udp-ispolzuem-s-polzoj-protokol-quic\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-16T23:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-16T23:42:34+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47HTTP over UDP \u2014 using the QUIC protocol to our advantage | ProHoster","description":"QUIC (Quick UDP Internet Connections) \u2014","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/http-po-udp-ispolzuem-s-polzoj-protokol-quic","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47HTTP \u043f\u043e UDP \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b QUIC | ProHoster","og:description":"QUIC (Quick UDP Internet Connections) \u2014.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/http-po-udp-ispolzuem-s-polzoj-protokol-quic","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-16T23:42:34+00:00","article:modified_time":"2020-05-16T23:42:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81847","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:49:39","updated":"2022-09-29 09:08:49","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/81847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=81847"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/81847\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/81848"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=81847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=81847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=81847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}