<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Kevin Rozario]]></title><description><![CDATA[Kevin Rozario]]></description><link>https://kevinrozario.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 06:43:45 GMT</lastBuildDate><atom:link href="https://kevinrozario.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[What Happens When You Text ChatGPT? (It's Not Googling The Answer)]]></title><description><![CDATA[It's late evening. You join Lecture 0 of the highly anticipated GenAI in JS cohort, expecting a dry, academic breakdown of neural networks. Instead, within the first few minutes, you watch a live demo]]></description><link>https://kevinrozario.hashnode.dev/what-happens-when-you-text-chatgpt</link><guid isPermaLink="true">https://kevinrozario.hashnode.dev/what-happens-when-you-text-chatgpt</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><dc:creator><![CDATA[Kevin Rozario]]></dc:creator><pubDate>Mon, 29 Jun 2026 21:55:50 GMT</pubDate><content:encoded><![CDATA[<p>It's late evening. You join Lecture 0 of the highly anticipated GenAI in JS cohort, expecting a dry, academic breakdown of neural networks. Instead, within the first few minutes, you watch a live demonstration where ChatGPT completely breaks the ice by greeting one of your instructors with: <strong>"Hello, Cute Piyush Garg!"</strong></p>
<p>Seeing a master of backend development left completely mindblown and speechless by smooth-talking AI? That is peak entertainment. (Check out media below - if you don't believe me, which is sad 😔)</p>
<img src="https://cdn.hashnode.com/uploads/covers/6785dd1b5a39cce585ea5557/1436b562-8099-48cd-83ec-1ef671782313.png" alt="" style="display:block;margin:0 auto" />

<p>But it also sparked a massive realization: <strong>How on earth does a machine learn to personalize things so well, and what is actually happening under the hood?</strong></p>
<h2>1. Demystifying the Beast: What is LLM?</h2>
<p>Before we talk about the magic let's look at the actual engine. LLM stands for <strong>Large Language Model.</strong></p>
<p>The easiest way to understand this is through a brilliant analogy used by Hitesh and Piyush in class: <strong>The Car</strong> vs <strong>The Engine.</strong></p>
<ul>
<li><p><strong>The Engine (Core LLM):</strong> This is the heavy machinery built by incredibly smart Machine Learning Engineers. They gather massive oceans of preprocessed text data, spend millions on compute power, and build a core engine that handles input and output using natural language. Think of models built by OpenAI, Google and Anthropic.</p>
</li>
<li><p><strong>The Car (Applied AI):</strong> An engine sitting on a garage floor is powerful, but you can't drive it to the grocery store. To make it useful, someone needs to build the chassis, the wheels, the steering wheel, and a sleek dashboard. <strong>That is our job as Application Developer.</strong> We take that raw engine and build the "car"; the practical, everyday applications that solve real-world problems.</p>
</li>
</ul>
<p>When you use an LLM in daily life whether it's asking an AI to summarize a massive 50-page PDF, help you debug a stubborn syntax error, or translate a casual conversation, you are driving a beautifully built application powered by a massive language engine.</p>
<h2>2. What Happens When You Press Enter?</h2>
<p>When you type a prompt into ChatGPT and hit enter, it feels like you're texting an incredibly fast friend who happens to know everything. But what is it <em>actually</em> doing?</p>
<p>Here is the step-by-step breakdown of the journey your message takes:</p>
<img src="https://cdn.hashnode.com/uploads/covers/6785dd1b5a39cce585ea5557/0b8db992-5a1d-4578-98ab-1cf38979d36a.png" alt="" style="display:block;margin:0 auto" />

<h3>Step 1: The Prompt Leaves Your Keyboard</h3>
<p>You type your text. The application hands this natural language over to the core engine.</p>
<h3>Step 2: Processing and Understanding</h3>
<p>The engine doesn't read your sentence the way you do. It immediately breaks your words down into tiny pieces and analyzes the context.</p>
<h3>Step 3: Generating the Response (The Big Misconception)</h3>
<p>Here is the most important thing to understand: <strong>ChatGPT is absolutely not copying and pasting answers from the internet.</strong> It doesn't have a secret digital clipboard where it runs a Google Search, grabs a paragraph from Wikipedia, and pastes it into your chat box.</p>
<p>Instead, it works on <strong>Next-Token Prediction.</strong> Based on all the data it was trained on, it looks at your prompt and asks itself a statistical question: <em>"Given these words, what is the single most logical next word to write?"</em> It generates the response syllable by syllable, word by word, completely from scratch. It's creating something brand new every single time.</p>
<h2>3. Why Computers Secretly Hate Human Language?</h2>
<p>As application developers, we live and breathe strings, characters, and templates. But under the hood, computers are stubborn. They are essentially just massive, hyper-fast calculators. They don't understand the emotional weight of a sentence, the nuance of sarcasm, or what makes a joke funny.</p>
<p><strong>Computers only understand numbers.</strong></p>
<p>If you hand a core AI engine a raw string like <code>Piyush Garg is Cute</code>, the computer's internal reaction is basically a giant syntax error. For the engine to process language, calculate patterns, and spit out a response, we have to find a way to translate our messy, artistic human text into rigid, clean arrays of numbers.</p>
<p>And that brings us to the ultimate translator: <strong>Tokenization.</strong></p>
<h2>4. Tokenization: Breaking Down the Matrix</h2>
<p>Tokenization is the first bridge between human chaos and computer logic. It is the process of chopping up a piece of text into smaller, digestible chunks called <em>Tokens.</em></p>
<p>A lot of people think 1 Word = 1 Token. But AI is smarter (and more efficient) than that. Tokens can be whole words, characters or even common syllables (subwords).</p>
<p>To see this in action, we got our hands dirty during the lecture and built a simple tokenizer in JavaScript using the <code>tiktoken</code> npm package.</p>
<p>Imagine running this conceptual code in NodeJS:</p>
<pre><code class="language-javascript">import { encoding_for_model } from "tiktoken";

// Initialize the tokenizer brain
const coder = encoding_for_model("gpt-4o");

const text = "ChaiCode is cooking!";

// Step 1: Human Text to Computer Numbers (Encoding)
const tokens = coder.encode(text);
console,log(tokens);
// Output: Uint32Array(6) [ 1205, 1361, 2836, 382, 19307, 0 ]

// Step 2: Computer Numbers to Human Text (Decoding)
const decodedBytes = coder.decode(tokens);
const originalText = new TextDecoder().decode(decodedBytes);
console.log(originalText);
// Output: "ChaiCode is cooking!"

coder.free(); // Clean memory mentioned in official docs
</code></pre>
<p>Why do we need this?</p>
<p>When you see an array of numbers, that is what the LLM actually "reads". By breaking words into common sub-words, the model doesn't need to memorize every single variation of a word (like cook, cooking, cooked), It saves memory, keeps things lightning-fast, and ensures processing stays highly efficient.</p>
<h2>5. Transformers: The 2017 Architecture That Changed Everything</h2>
<p>Once your text is turned into an array of numbers, where does it go? it enters the brain of modern AI: <strong>The Transformer.</strong></p>
<p>Back in 2017, a team of researchers at Google published a legendary whitepaper titled <strong>"Attention Is All You Need."</strong> They weren't trying to write a relationship advice column; they were introducing a brand-new way for machines to process data. Before Transformers, AI read text sequentially, word by word. If it reached the end of a long paragraph, it would completely forget how the sentence started.</p>
<p>Transformers fixed this by introducing <strong>Self-Attention.</strong></p>
<h3>The Power of Attention Mechanisms</h3>
<p>Imagine the word <strong>"BANK"</strong>.</p>
<ul>
<li><p>If I say: <em>"I need to deposit money at the ICICI BANK."</em></p>
</li>
<li><p>If I say: <em>"Let's sit by the RIVER BANK."</em></p>
</li>
</ul>
<p>How does the computer know the difference? A Transformer doesn't look at "BANK" in isolation. It looks at every single token in the sentence simultaneously. The token "BANK" interacts with the tokens "ICICI" or "RIVER", yielding a mathematical context vector (an <strong>Embedding</strong>).</p>
<p>Because of this architecture, modern LLMs can understand context, remember what you said a paragraph ago, and generate replies that feel genuinely human. Almost every dominant model today like GPT, Claude, Gemini, runs on this exact foundation.</p>
<h3>Temperature: Hyperparameter</h3>
<img src="https://cdn.hashnode.com/uploads/covers/6785dd1b5a39cce585ea5557/bfe74910-b654-4c01-a5cd-7dd6a8f896a1.png" alt="" style="display:block;margin:0 auto" />

<p>When an LLM predicts the next token, you can control its creativity using a setting called <strong>Temperature.</strong></p>
<ul>
<li><p><strong>Low Temperature(e.g. 0.2):</strong> <em>The Safe &amp; Boring Route.</em> The model strictly picks the highest-probability words. Perfect for writing code, doing math, or factual questions.</p>
</li>
<li><p><strong>High Temperature(e.g. 0.9):</strong> <em>The Creative &amp; Wild Route.</em> The model takes risks on less probable words. Perfect for brainstorming stories, writing marketing copy, or getting ChatGPT to call your instructor cute.</p>
</li>
</ul>
<h2>Conclusion: The Roadmap Ahead</h2>
<p>Stepping into the world of Generative AI as a JavaScript developer feels like being handed the keys to a spaceship. Lecture 0 completely shattered the illusion of AI being a mysterious "black box". It's not magic, but it's architecture, math, tokenization, and attention.</p>
<p>As application developers, we aren't here to re-invent the engine. We are here to build the custom, high-performance cars that will drive the future.</p>
]]></content:encoded></item><item><title><![CDATA[DNS Decoded: Internals and the Art of Resolution]]></title><description><![CDATA[Introduction
How many phone numbers can you recall in today's digital age? Chances are, it's only a handful, given the convenience of storing contacts on our devices. Now, imagine if you had to memori]]></description><link>https://kevinrozario.hashnode.dev/dns-decoded-internals-and-the-art-of-resolution</link><guid isPermaLink="true">https://kevinrozario.hashnode.dev/dns-decoded-internals-and-the-art-of-resolution</guid><category><![CDATA[ChaiCode]]></category><dc:creator><![CDATA[Kevin Rozario]]></dc:creator><pubDate>Wed, 15 Jan 2025 18:54:06 GMT</pubDate><content:encoded><![CDATA[<h2>Introduction</h2>
<p><strong>How many phone numbers can you recall in today's digital age?</strong> Chances are, it's only a handful, given the convenience of storing contacts on our devices. Now, imagine if you had to memorise the IP addresses of every website you visit on the internet. It would be an overwhelming task, considering the vast number of websites we access daily. Fortunately, we don't have to worry about this daunting prospect because the <strong>Domain Name System (DNS) is here to assist us.</strong></p>
<h2>What is DNS ?</h2>
<p>It is a system responsible to translate human readable domain names to numerical IP addresses.</p>
<p><strong>For example:</strong> Instead to remembering the IP address <strong>“142.250.207.238”</strong> you remember and type <strong>“google.com“</strong> and the page is served to you.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736922651123/bf28c746-8045-42bd-8042-2f3e3711da5d.png" alt="" style="display:block;margin:0 auto" />

<h2>Types of DNS Records</h2>
<ol>
<li><p><strong>A Record (Address Record):</strong> Maps domain name to IPv4 addresses.</p>
<pre><code class="language-bash">//command
dig google.com

//output
google.com.        261    IN    A    142.250.67.238
</code></pre>
</li>
<li><p><strong>AAAA Record (IPv6 Address Record):</strong> Maps domain name to IPv6 addresses.</p>
<pre><code class="language-bash">//command
dig google.com

//output
ns1.google.com.        42757    IN    AAAA    2001:4860:4802:32::a
ns2.google.com.        42757    IN    AAAA    2001:4860:4802:34::a
ns3.google.com.        237425    IN    AAAA    2001:4860:4802:36::a
ns4.google.com.        42757    IN    AAAA    2001:4860:4802:38::a
</code></pre>
</li>
<li><p><strong>CNAME Record (Canonical Name Record):</strong> Points a domain name to another domain name.</p>
<p><strong>Ex: google.com → <a href="http://www.google.com">www.google.com</a></strong></p>
</li>
<li><p><strong>MX Record (Mail Exchange Record):</strong> Specifies mail server to domain to handle email delivery.</p>
<pre><code class="language-bash">//command
dig google.com mx

//output
google.com.        300    IN    MX    10 smtp.google.com.
</code></pre>
</li>
<li><p><strong>NS Record (Name Server Record):</strong> Specifies authoritative server for a domain.</p>
<pre><code class="language-bash">//command
dig google.com ns

//output
google.com.        41507    IN    NS    ns2.google.com.
google.com.        41507    IN    NS    ns4.google.com.
google.com.        41507    IN    NS    ns3.google.com.
google.com.        41507    IN    NS    ns1.google.com.
</code></pre>
</li>
<li><p><strong>SOA Record (Start of Authority):</strong> Provides administrative information about a domain, including the primary name server and contact details.</p>
<pre><code class="language-bash">//command
dig google.com ns

//output
google.com.        60    IN    SOA    ns1.google.com. dns-admin.google.com. 715308054 900 900 1800 60
</code></pre>
</li>
</ol>
<h2>DNS Hierarchy Explained: Root to Authoritative Servers</h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736922592266/0d035c5d-b7eb-4007-a982-c0d620866a7b.png" alt="" style="display:block;margin:0 auto" />

<p><strong>Process of DNS Resolution</strong></p>
<ol>
<li><p><strong>Client Request:</strong> The user types google.com into their browser. The browser first checks its DNS Cache to see if it already knows the IP address for the domain. If not, it forwards the request to the Resolver.</p>
</li>
<li><p><strong>Resolver:</strong> The Resolver <strong>(Recursive Server)</strong> which is ISP <strong>(Internet Service Provider)</strong> basically is a DNS server responsible for initiating and sequencing queries to resolve a domain name.</p>
</li>
<li><p><strong>Root Server:</strong> The Root Server is the first step in resolution. It doesn’t contain the IP address of the domain but provides the address of the TLD server. For example: <strong>“Can you direct me to .com TLD server? - 104.250.87.15“</strong></p>
</li>
<li><p><strong>TLD (Top-Level Domain) Server:</strong> The TLD Server is specific to the domain's TLD (e.g., .com, .org). It redirects the Resolver to the Authoritative Name Server (ANS) for the domain google.com. For example: <strong>“Can you direct me to google.com ANS? - 176.150.90.10.</strong></p>
</li>
<li><p><strong>Authoritative Name Server:</strong> The ANS has the final answer. It provides the IP address of google.com to the Resolver. For example: <strong>“What is the IP address for google.com? - 142.250.66.14.</strong></p>
</li>
<li><p><strong>Resolver to client:</strong> The response i.e the IP address is sent back to the client and further the client gets connected to the website of google.com.</p>
</li>
<li><p><strong>DNS Cache:</strong> The resolved IP address is stored in the Client’s DNS Cache to speed up future requests for the same domain.</p>
</li>
</ol>
<h2>Conclusion</h2>
<p>In a world where memorizing countless IP addresses is unimaginable, the Domain Name System (DNS) simplifies our digital lives. By translating domain names into IP addresses, it ensures seamless, efficient, and user-friendly access to the internet, serving as the backbone of our connected world.</p>
<p>Thank you for taking the time to read this blog. I hope you found it informative.</p>
]]></content:encoded></item><item><title><![CDATA[From Browsers to Servers: The Journey of Your Data]]></title><description><![CDATA[Introduction
Let’s imagine data journey as ordering a coffee at StarBucks.

Placing the order at the counter - “One coffee please!“ (Browser sends a request).

Barista takes your order - “Sure sir!“ (]]></description><link>https://kevinrozario.hashnode.dev/from-browsers-to-servers-the-journey-of-your-data</link><guid isPermaLink="true">https://kevinrozario.hashnode.dev/from-browsers-to-servers-the-journey-of-your-data</guid><category><![CDATA[ChaiCode]]></category><dc:creator><![CDATA[Kevin Rozario]]></dc:creator><pubDate>Tue, 14 Jan 2025 14:05:03 GMT</pubDate><content:encoded><![CDATA[<h2>Introduction</h2>
<p>Let’s imagine data journey as ordering a coffee at StarBucks.</p>
<ul>
<li><p>Placing the order at the counter - “One coffee please!“ <strong>(Browser sends a request)</strong>.</p>
</li>
<li><p>Barista takes your order - “Sure sir!“ <strong>(Server receives the request)</strong>.</p>
</li>
<li><p>Preparation of your coffee - “Hiss, Pssshhh!“ <strong>(Server processes the request)</strong>.</p>
</li>
<li><p>Pouring of your coffee - <strong>(Server sends response)</strong>.</p>
</li>
<li><p>Barista approaches with your coffee - “Here’s your coffee sir!“ <strong>(Data travels through the internet)</strong>.</p>
</li>
<li><p>You take your coffee - “Thank you!“ <strong>(Browser accepts and renders the response)</strong>.</p>
</li>
<li><p>You enjoy your coffee - “Ahhhh! Delicious“ <strong>(User interaction)</strong>.</p>
</li>
</ul>
<h3>Diagram:</h3>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736857982590/864f56a5-9781-449b-87fc-57cbeb115acd.png" alt="" style="display:block;margin:0 auto" />

<h2>Web Browsers</h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736844347790/a7d1eef6-6ff4-4fd5-a68a-94e9b006967c.png" alt="" style="display:block;margin:0 auto" />

<h3>What is the web browser ?</h3>
<p>Web Browser is a software that enables an user to access the content such as website, images, videos etc on the World Wide Web.</p>
<p><strong>Example:</strong> Google Chrome, Microsoft Edge, Brave, Firefox.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736858005100/c103150d-5a2c-4c35-ab75-5da3272aa947.png" alt="" style="display:block;margin:0 auto" />

<h3>Architecture of a Web Browser</h3>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736858033670/51110b2d-79d1-471d-ac4c-44a4ada4f453.png" alt="" style="display:block;margin:0 auto" />

<p><strong>User Interface:</strong> The part of the browser which interacts with the user consists of search bar, buttons, address bar, other widgets etc.</p>
<p><strong>Browser Engine:</strong> It acts as a mediator to marshal actions between the user interface and the rendering engine.</p>
<p><strong>Rendering Engine:</strong> It is responsible for displaying the content provided by the server in response to the user's request. This engine parses the HTML code along with CSS to create a DOM (Document Object Model) tree, which then forms a render tree.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736858051563/a85c800a-f616-433c-97f8-8e383bad97fe.png" alt="" style="display:block;margin:0 auto" />

<p><strong>Data Persistance:</strong> The browser needs to save data locally (cookies, cache, etc.) so the Data Storage component handles this part.</p>
<p><strong>Networking:</strong> The Networking Layer is responsible for making network calls to fetch resources.</p>
<p><strong>Javascript Interpreter:</strong> It is responsible for executing the JavaScript code provided by the server, along with HTML and CSS.</p>
<p><strong>UI Backend:</strong> This layer is responsible for drawing the basic widgets like select or input boxes and windows. Underneath it uses operating system UI methods.</p>
<h3>HTTP / HTTPS</h3>
<p><strong>What is HTTP (Hypertext Transfer Protocol)?</strong></p>
<p>It is a set of predefined rules i.e protocols which consists of links to other texts/ pages.</p>
<p><strong>What is HTTPS (Hypertext Transfer Protocol Secure)?</strong></p>
<p>It is hypertext transfer protocol secure which uses an SSL/TLS (Secure Shell/ Transport Layer Security)certificate secure the communication between client and the server using encryption.</p>
<p><strong>Components of an HTTPS Request</strong></p>
<ul>
<li><p><strong>URL (Uniform Resource Locator):</strong> It uniquely identifies a resource over the Internet. Ex: <a href="https://google.com">https://google.com</a></p>
</li>
<li><p><strong>Headers:</strong> It consists of metadata regarding the request made to the server.</p>
</li>
<li><p><strong>Methods:</strong></p>
<ul>
<li><p><strong>GET:</strong> Retrieves information from the server.</p>
</li>
<li><p><strong>POST:</strong> Upload data to the server.</p>
</li>
<li><p><strong>PUT:</strong> Updates data on the server.</p>
</li>
<li><p><strong>DELETE:</strong> Removes data from the server.</p>
</li>
</ul>
</li>
</ul>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736846680561/21167950-c353-45e3-a7fe-a385fc592afd.png" alt="" style="display:block;margin:0 auto" />

<h3><strong>Process of HTTP Request</strong></h3>
<ul>
<li><p><strong>Step 1: DNS Lookup</strong>: Resolves the domain to an IP address.</p>
</li>
<li><p><strong>Step 2: SSL/TLS Handshake</strong>:</p>
<ul>
<li><p>Client verifies the server's certificate.</p>
</li>
<li><p>Both client and server agree on encryption protocols and keys.</p>
</li>
</ul>
</li>
<li><p><strong>Step 3: Data Transmission</strong>:</p>
<ul>
<li><p>The client sends the HTTPS request.</p>
</li>
<li><p>The server processes the request and sends a secure response.</p>
</li>
</ul>
</li>
</ul>
<p><strong>HTTP Status Codes</strong></p>
<ul>
<li><p><strong>200-299</strong>: Success (e.g., 200 OK, 201 Created).</p>
</li>
<li><p><strong>300-399</strong>: Redirection (e.g., 301 Moved Permanently).</p>
</li>
<li><p><strong>400-499</strong>: Client errors (e.g., 400 Bad Request, 404 Not Found).</p>
</li>
<li><p><strong>500-599</strong>: Server errors (e.g., 500 Internal Server Error).</p>
</li>
</ul>
<h3>DNS (Domain Name Server)</h3>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736859087875/ebb8e40e-3b90-4fad-925b-48a6d0dbe55f.png" alt="" style="display:block;margin:0 auto" />

<p>It is a server which translates human readable texts to numeric IP addresses that computers use to locate each other on the internet.</p>
<p><strong>Types of DNS</strong></p>
<ol>
<li><p><strong>Root Servers:</strong> Acts as the starting point for DNS resolution, directing queries to the correct Top-Level Domain (TLD) servers.</p>
</li>
<li><p><strong>Top-Level Servers:</strong> Handles requests for specific domain extensions like <strong>.com</strong> or <strong>.org</strong> and directs them to authoritative servers.</p>
</li>
<li><p><strong>Authoritative Servers:</strong> Provides the actual IP address for a specific domain name based on its records.</p>
</li>
<li><p><strong>Recursive Servers:</strong> Resolves domain names by querying multiple DNS servers until it finds the final IP address.</p>
</li>
<li><p><strong>Forwarding Servers:</strong> Forwards DNS queries from clients to external DNS servers for resolution.</p>
</li>
<li><p><strong>Caching Servers:</strong> Temporarily stores DNS query results to speed up future requests for the same domain.</p>
</li>
</ol>
<h2>SSL / TLS Handshake</h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736859885983/a77d4a61-d5b7-4c45-88fe-1f8df7909764.png" alt="" style="display:block;margin:0 auto" />

<p><strong>Process of SSL / TLS Handshake</strong></p>
<ul>
<li><p><strong>Client Hello:</strong></p>
<ul>
<li><p>Sent by the client to the server.</p>
</li>
<li><p>Contains:</p>
<ul>
<li><p>TLS version.</p>
</li>
<li><p>Supported CipherSuites (in client's preference order).</p>
</li>
<li><p>Random byte string (for key computation).</p>
</li>
<li><p>Supported data compression methods.</p>
</li>
</ul>
</li>
</ul>
</li>
<li><p><strong>Server Hello:</strong></p>
<ul>
<li><p>Sent by the server to the client.</p>
</li>
<li><p>Contains:</p>
<ul>
<li><p>Chosen CipherSuite.</p>
</li>
<li><p>Session ID.</p>
</li>
<li><p>Random byte string (for key computation).</p>
</li>
<li><p>Server's digital certificate.</p>
</li>
</ul>
</li>
<li><p>Optionally includes a <strong>client certificate request</strong> if client authentication is required.</p>
</li>
</ul>
</li>
<li><p><strong>Server Certificate Verification:</strong></p>
<ul>
<li>Client verifies the server's digital certificate.</li>
</ul>
</li>
<li><p><strong>Key Exchange:</strong></p>
<ul>
<li>Client sends a random byte string encrypted with the server's public key to compute the shared secret key.</li>
</ul>
</li>
<li><p><strong>Client Certificate (if requested):</strong></p>
<ul>
<li><p>Client sends:</p>
<ul>
<li><p>Random byte string encrypted with the client’s private key.</p>
</li>
<li><p>Client's digital certificate.</p>
</li>
<li><p>Or a "no digital certificate alert" (if certificate is unavailable).</p>
</li>
</ul>
</li>
<li><p>Server verifies the client's digital certificate.</p>
</li>
</ul>
</li>
<li><p><strong>Client Finished Message:</strong></p>
<ul>
<li>Client sends a “finished” message encrypted with the shared secret key, signaling the completion of the client handshake.</li>
</ul>
</li>
<li><p><strong>Server Finished Message:</strong></p>
<ul>
<li>Server sends a “finished” message encrypted with the shared secret key, signaling the completion of the server handshake.</li>
</ul>
</li>
<li><p><strong>Secure Communication:</strong></p>
<ul>
<li>Both parties now exchange symmetrically encrypted messages using the shared secret key.</li>
</ul>
</li>
</ul>
<h2>HTTP Request / Response Cycle</h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736860419543/9f5b199b-f644-4cbb-b7dd-7801be55a0ac.png" alt="" style="display:block;margin:0 auto" />

<p>First, a user provides a client with a URL. The client then creates a <strong>request</strong> for information or resources from a server. When the server receives this request, it uses the details in the request to create a <strong>response</strong> containing the requested information. Once the response is ready, it is sent back to the client in the requested format to be displayed to the user.</p>
<h2>Servers</h2>
<p><strong>What is a server?</strong></p>
<p>A <strong>server</strong> is a computer or system that provides services, data, or resources to other devices (clients) over a network.</p>
<p><strong>Types of servers</strong></p>
<ul>
<li><p><strong>Web server:</strong> Serving HTML, CSS and Javascript (static pages to client). Ex: Nginx</p>
</li>
<li><p><strong>Application server:</strong> Hosting backend application. Ex: Express.js, Django.</p>
</li>
<li><p><strong>Database server:</strong> Storing, retrieving and managing data. Ex: MongoDB, Postgresql.</p>
</li>
</ul>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736861540912/a4042bd6-8e22-48c5-8cc1-18cc2831dd97.png" alt="" style="display:block;margin:0 auto" />

<h2>Conclusion</h2>
<p>Servers are the backbone of today's technology, allowing smooth communication, data storage, and app functions. As technology changes, servers meet new challenges, pushing innovation with cloud computing, edge technologies, and serverless designs. Their role is crucial in creating a connected, efficient, and secure digital future.</p>
]]></content:encoded></item></channel></rss>