<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Brahma Nanda</title>
    <description>The latest articles on DEV Community by Brahma Nanda (@brahma_nanda_000fe8bea2d8).</description>
    <link>https://dev.to/brahma_nanda_000fe8bea2d8</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1689594%2F87a26a4e-8c3e-4dd8-a1e3-56f52b32a873.jpg</url>
      <title>DEV Community: Brahma Nanda</title>
      <link>https://dev.to/brahma_nanda_000fe8bea2d8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brahma_nanda_000fe8bea2d8"/>
    <language>en</language>
    <item>
      <title>Why TCP (not UDP) is used for HTTP — what would break with UDP.</title>
      <dc:creator>Brahma Nanda</dc:creator>
      <pubDate>Wed, 09 Sep 2026 19:13:24 +0000</pubDate>
      <link>https://dev.to/brahma_nanda_000fe8bea2d8/why-tcp-not-udp-is-used-for-http-what-would-break-with-udp-15cm</link>
      <guid>https://dev.to/brahma_nanda_000fe8bea2d8/why-tcp-not-udp-is-used-for-http-what-would-break-with-udp-15cm</guid>
      <description>&lt;p&gt;Why TCP was traditionally used for HTTP&lt;br&gt;
Imagine your browser requests:&lt;/p&gt;

&lt;p&gt;GET /index.html&lt;/p&gt;

&lt;p&gt;and the server sends:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6ijsa9ym5blnkktv4ttd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6ijsa9ym5blnkktv4ttd.png" alt=" " width="348" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Internet can lose packets, duplicate them, or deliver them out of order.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TCP handles this for HTTP:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feolzx037pdgl10d7oehr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feolzx037pdgl10d7oehr.png" alt=" " width="441" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So HTTP can essentially say:&lt;/p&gt;

&lt;p&gt;"Give me a reliable stream of bytes."&lt;/p&gt;

&lt;p&gt;What would happen with plain UDP?&lt;br&gt;
UDP does not guarantee delivery or ordering.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyyyxzrd3ldwczu1560bi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyyyxzrd3ldwczu1560bi.png" alt=" " width="533" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The browser might receive:&lt;/p&gt;

&lt;p&gt;Packet 1&lt;br&gt;
Packet 3&lt;br&gt;
Packet 4&lt;/p&gt;

&lt;p&gt;but Packet 2 is missing.&lt;/p&gt;

&lt;p&gt;UDP itself doesn't say:&lt;/p&gt;

&lt;p&gt;"Hey, Packet 2 was lost. Please send it again."&lt;/p&gt;

&lt;p&gt;Similarly, packets could arrive:&lt;/p&gt;

&lt;p&gt;1 → 3 → 2 → 4&lt;/p&gt;

&lt;p&gt;instead of:&lt;/p&gt;

&lt;p&gt;1 → 2 → 3 → 4&lt;/p&gt;

&lt;p&gt;UDP doesn't fix that either.&lt;/p&gt;

&lt;p&gt;So what would break?&lt;br&gt;
Without adding another reliability mechanism, HTTP could receive incomplete or incorrectly ordered data.&lt;/p&gt;

&lt;p&gt;For example, imagine downloading:&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
  &lt;br&gt;
    Hello World&lt;br&gt;
  &lt;br&gt;
&lt;/p&gt;

&lt;p&gt;If pieces arrive missing or out of order, the application has to figure out:&lt;/p&gt;

&lt;p&gt;What was lost?&lt;br&gt;
What order should the data be in?&lt;br&gt;
Should it request the missing data again?&lt;br&gt;
How fast should it send data?&lt;br&gt;
How should it handle network congestion?&lt;br&gt;
TCP already solves these problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Then why does HTTP/3 use UDP? 🤔&lt;/strong&gt;&lt;br&gt;
This is the interesting part.&lt;/p&gt;

&lt;p&gt;HTTP/3 uses:&lt;/p&gt;

&lt;p&gt;HTTP/3&lt;br&gt;
   ↓&lt;br&gt;
QUIC&lt;br&gt;
   ↓&lt;br&gt;
UDP&lt;br&gt;
   ↓&lt;br&gt;
Internet&lt;/p&gt;

&lt;p&gt;QUIC uses UDP as a base transport, but QUIC itself provides things TCP normally provides, such as reliable delivery, ordering where needed, congestion control, and encryption integration.&lt;/p&gt;

&lt;p&gt;So it's not:&lt;/p&gt;

&lt;p&gt;HTTP → UDP → "hope nothing gets lost" 😅&lt;/p&gt;

&lt;p&gt;It's:&lt;/p&gt;

&lt;p&gt;HTTP/3&lt;br&gt;
   ↓&lt;br&gt;
QUIC  ← reliability + security + transport features&lt;br&gt;
   ↓&lt;br&gt;
UDP&lt;/p&gt;

&lt;p&gt;Easy exam/interview answer&lt;br&gt;
TCP was traditionally used for HTTP because HTTP needs reliable, ordered delivery of data. UDP doesn't guarantee delivery, ordering, or retransmission, so using plain UDP would require HTTP or another protocol to implement those mechanisms itself. Modern HTTP/3 solves this differently by using QUIC over UDP.&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>networking</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What DNS server chain gets queried, and why caching at each layer (browser, OS, ISP) matters for speed.</title>
      <dc:creator>Brahma Nanda</dc:creator>
      <pubDate>Wed, 09 Sep 2026 19:06:38 +0000</pubDate>
      <link>https://dev.to/brahma_nanda_000fe8bea2d8/what-dns-server-chain-gets-queried-and-why-caching-at-each-layer-browser-os-isp-matters-for-14mo</link>
      <guid>https://dev.to/brahma_nanda_000fe8bea2d8/what-dns-server-chain-gets-queried-and-why-caching-at-each-layer-browser-os-isp-matters-for-14mo</guid>
      <description>&lt;p&gt;When a browser needs to resolve a domain name, it first checks the browser's DNS cache. If the address is not cached, the operating system's DNS cache is checked. If the OS does not have the answer, the request is sent to a recursive DNS resolver, often provided by the ISP.&lt;/p&gt;

&lt;p&gt;If the recursive resolver does not have the answer cached, it queries the DNS hierarchy: the root DNS servers, then the appropriate TLD server (such as .com), and finally the domain's authoritative nameserver. The authoritative nameserver provides the DNS record, such as the IP address.&lt;/p&gt;

&lt;p&gt;Caching at the browser, OS, and recursive DNS resolver reduces the number of DNS queries that need to travel through this hierarchy. This makes DNS resolution faster and reduces network traffic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvep87h1u657mlged4d8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvep87h1u657mlged4d8g.png" alt=" " width="800" height="857"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>networking</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
