<?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: daniel💻</title>
    <description>The latest articles on DEV Community by daniel💻 (@daniel_idoko).</description>
    <link>https://dev.to/daniel_idoko</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2136938%2Fcbb4ce6c-6051-4fd0-b7d7-9db87229038d.jpeg</url>
      <title>DEV Community: daniel💻</title>
      <link>https://dev.to/daniel_idoko</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/daniel_idoko"/>
    <language>en</language>
    <item>
      <title>Comparing VPN Performance: State-of-the-Art Solutions in Stable vs. Unreliable Networks</title>
      <dc:creator>daniel💻</dc:creator>
      <pubDate>Wed, 15 Jan 2025 00:07:11 +0000</pubDate>
      <link>https://dev.to/daniel_idoko/comparing-vpn-performance-state-of-the-art-solutions-in-stable-vs-unreliable-networks-1kll</link>
      <guid>https://dev.to/daniel_idoko/comparing-vpn-performance-state-of-the-art-solutions-in-stable-vs-unreliable-networks-1kll</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;VPNs, like many tools in technology, offer both advantages and drawbacks. A significant downside is the latency and reduced network performance they can sometimes cause. Over the years, various VPN implementations have been developed to tackle these challenges and improve overall efficiency.&lt;/p&gt;

&lt;p&gt;This article explores several state-of-the-art VPN implementations to assess the extent of performance degradation they experience. It is based on a 2019 study conducted by Thomas Fischer at the University of Skövde. The research question is as follows:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How does the performance differ between state-of-the-art VPN solutions under stable versus unreliable network conditions?&lt;/p&gt;
&lt;/blockquote&gt;







&lt;h2&gt;
  
  
  What are Virtual Private Networks (VPNs)
&lt;/h2&gt;

&lt;p&gt;A Virtual Private Network (VPN) is a technology used to extend a private network over the internet, allowing authorized users (typically authenticated with a shared secret such as a password) to access it as if they were directly connected. This makes these 'authorized users' appear to be connected to the private network, even though they may be thousands of miles and numerous router hops away.&lt;/p&gt;

&lt;h3&gt;
  
  
  VPN Tunnel
&lt;/h3&gt;

&lt;p&gt;VPN connection is achieved using secure, encrypted 'tunnels' called VPN tunnels. They are referred to as tunnels because they are established between two endpoints. When two routers are configured for tunneling, it becomes possible to send encrypted packets that might not be supported over the general internet between them.&lt;br&gt;
When set up correctly, these tunnels provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy&lt;/strong&gt;: By not exposing the private network to the public internet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: By encrypting the packets shared through the tunnels. Anyone who gains access to the encrypted packets will not be able to read them. Only authorized users can decrypt and access the data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data integrity&lt;/strong&gt;: Through mechanisms that detect if the data has been tampered with during transport.
Any network running such tunnel is running a Virtual Private Network or VPN.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Types of VPN Tunneling
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Host-to-network (Remote access) tunneling&lt;/strong&gt;: Allows individual users to securely connect to a private network. This is commonly used by remote workers who need access to private company files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Site-to-site tunneling&lt;/strong&gt;: Connects entire networks, often used by companies with offices in different locations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split tunneling&lt;/strong&gt;: Routes only specific traffic through the VPN, while other traffic is sent directly to the internet. This is useful for balancing security and speed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full tunneling&lt;/strong&gt;: Routes all traffic through the VPN, providing maximum privacy and security.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Side Note: VPNs provide security between two endpoints, but they do not secure the endpoints themselves. This poses a significant security risk because every endpoint with access to your VPN also has access to your private network. Additional security measures are necessary to ensure endpoint security and protect the network from potential vulnerabilities. &lt;/p&gt;
&lt;/blockquote&gt;







&lt;h2&gt;
  
  
  Different VPN Solutions
&lt;/h2&gt;

&lt;p&gt;There are numerous VPN solutions available, but three stand out as the most popular and were used for this study:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IPSec (IP Security Protocol)&lt;/li&gt;
&lt;li&gt;OpenVPN&lt;/li&gt;
&lt;li&gt;WireGuard&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  IPsec (IP Security Protocol)
&lt;/h3&gt;

&lt;p&gt;IPsec was standardized by the Internet Engineering Task Force (IETF) in 1995. Originally developed for IPv6, it has also been widely implemented for IPv4. IPsec is an IETF-approved end-to-end authentication and encryption system. Almost all major VPN vendors include at least an IPsec compatibility mode in their products. Additionally, operating systems like Linux, Solaris, HP-UX, and AIX provide native kernel support for IPsec.&lt;/p&gt;

&lt;p&gt;In tunnel mode, IPsec encrypts the transport layer header, which includes source and destination port numbers. However, this approach often conflicts with how most firewalls operate. To address this issue, most modern implementations default to transport mode, where only the payloads of packets (the data being transported) are encrypted.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenVPN
&lt;/h3&gt;

&lt;p&gt;OpenVPN has become the de facto standard for VPNs today, with over 50 million downloads since its release in 2001 (OpenVPN, 2019). It uses SSL/TLS for key exchange and encryption. OpenVPN is open-source, which contributes to its security through the extensive scrutiny it undergoes, as anyone can review the code. In 2017, an independent review of OpenVPN was conducted by Cryptography Engineering (Hopkins and Green, 2019), and the results found no major vulnerabilities.&lt;/p&gt;

&lt;p&gt;OpenVPN supports both TCP and UDP, with UDP as the default. While UDP is faster, it does not perform error correction like TCP does. OpenVPN is fully functional on Windows, macOS, and Linux, and offers a wide range of ciphers and encryption methods to choose from.&lt;/p&gt;

&lt;h3&gt;
  
  
  WireGuard
&lt;/h3&gt;

&lt;p&gt;WireGuard is a new VPN solution designed to replace two of the most widely used VPN technologies: OpenVPN and IPSec (Donenfeld, 2018). It claims to offer better performance than OpenVPN while avoiding the complexity of IPSec. Originally written for Linux systems, WireGuard is now available on multiple platforms. Like OpenVPN and IPSec, it is open-source, allowing anyone with the knowledge to audit the code. One of its design goals is to offer a straightforward configuration, similar to SSH, using asymmetric key cryptography. Currently, WireGuard supports only UDP (Donenfeld, 2018).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some other VPN solutions include: PPTP (Point-to-Point Tunneling Protocol), SSTP (Secure Socket Tunneling Protocol), and OpenSSH (Open Secure Shell)&lt;/strong&gt;.&lt;/p&gt;







&lt;h2&gt;
  
  
  Network Performance Metrics
&lt;/h2&gt;

&lt;p&gt;Here are the key metrics used in this study when testing networks: &lt;strong&gt;throughput&lt;/strong&gt;, &lt;strong&gt;latency&lt;/strong&gt;, and &lt;strong&gt;packet loss&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Throughput&lt;/strong&gt;: This refers to how much data is sent from one point to another during a specific time frame. Throughput is typically measured in bits per second (bps). It is influenced by the entire infrastructure of the channel, including the physical medium (such as cabling) and computational power, among other factors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency&lt;/strong&gt;: Latency is the time it takes to transmit a packet in one direction (e.g., from client to server). In VPN testing, latency is expressed as a time value, usually measured in milliseconds (ms).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Packet loss&lt;/strong&gt;: This metric refers to how many packets are “lost,” meaning they did not arrive from the source to the destination. Packet loss can occur due to network congestion, among other reasons. It is measured as a percentage of packets lost relative to the total packets sent.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Unreliability Handling
&lt;/h3&gt;

&lt;p&gt;Unreliability handling refers to how a network manages disturbances, which can be either artificial or natural, such as high latency or packet loss. These disturbances can be quantified by limiting the aforementioned metrics.&lt;/p&gt;

&lt;p&gt;For example, consider a remote worker with an unreliable network connection. The unreliability of a network could stem from fluctuating connections, such as cellular networks on a moving train traveling through areas with poor infrastructure or through mountains. It could also involve a remote worker located far from the office, requiring access to files stored across the globe. This would introduce delays far beyond the typical packet transfer delay expected when working with files stored on a server in the same building.&lt;/p&gt;

&lt;p&gt;Therefore, it is crucial to investigate how different VPN solutions perform on unreliable networks.&lt;/p&gt;







&lt;h2&gt;
  
  
  Tools for Measurement
&lt;/h2&gt;

&lt;h3&gt;
  
  
  iPerf
&lt;/h3&gt;

&lt;p&gt;The tool used to measure network performance is iPerf3 (&lt;a href="https://iperf.fr" rel="noopener noreferrer"&gt;https://iperf.fr&lt;/a&gt;), version 3.1.3. The reason for choosing iPerf3 is that it effectively tests throughput and provides data on the number of packets transferred, including those that did not arrive. Since iPerf is available for Windows, Linux, and macOS, it is well-suited for this experiment, which is being conducted across all three operating systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Operating systems
&lt;/h3&gt;

&lt;p&gt;The test was performed on 3 different operating systems: Windows 10, Linux Ubuntu, and macOS.&lt;/p&gt;

&lt;h3&gt;
  
  
  pfSense router
&lt;/h3&gt;

&lt;p&gt;The router used in this experiment is a pfSense software router running FreeBSD 11.2-RELEASE-p10 (pfSense 2.4.4-RELEASE-p3). The reason for choosing this router is its capability to shape traffic directly using a tool called dummynet, which is built into pfSense. With dummynet, it is possible to introduce network unreliability aspects (such as delay and packet loss) directly between the VPN nodes. This approach eliminates the need for using dedicated tools or software on the individual nodes themselves, simplifying the setup and ensuring more accurate control over network conditions for the experiment.&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.amazonaws.com%2Fuploads%2Farticles%2Fir4zqtg03gp6que1ih7j.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.amazonaws.com%2Fuploads%2Farticles%2Fir4zqtg03gp6que1ih7j.png" alt="Image description" width="800" height="610"&gt;&lt;/a&gt;&lt;/p&gt;







&lt;h2&gt;
  
  
  Steps for the Experiment
&lt;/h2&gt;

&lt;p&gt;To accurately answer the research question—&lt;em&gt;How does the performance differ between state-of-the-art VPN solutions under stable versus unreliable network conditions?&lt;/em&gt;—the following steps were taken: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify the VPN solutions to experiment on, control traffic, determine which metrics to use, choose the tools, and decide what data to collect&lt;/li&gt;
&lt;li&gt;Test the Network in the Experimental Setup Without Any VPN Solution to Identify a Baseline Performance&lt;/li&gt;
&lt;li&gt;Configure and Test VPN Solutions on Three Different Operating Systems with Network Unreliability Conditions&lt;/li&gt;
&lt;li&gt;Analyze and Compare the Results to Identify Performance Differences Between the VPN Solutions&lt;/li&gt;
&lt;/ul&gt;







&lt;h2&gt;
  
  
  Important aspects of the default configuration for each VPN that could impact the perform
&lt;/h2&gt;

&lt;p&gt;As mentioned earlier, the three VPN solutions selected for this test are OpenVPN, WireGuard, and IPSec. It is important to note that the default configurations of these VPN solutions were used. For all three VPN solutions, default settings were maintained wherever possible, rather than standardizing the settings across network protocols, cryptographic algorithms, or compression choices.&lt;/p&gt;

&lt;p&gt;After setting up the three VPN solutions on three different operating systems, below are some important aspects of the default configuration for each VPN that could impact the perform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Encryption Algorithm&lt;/strong&gt;: The performance of a VPN is significantly affected by the encryption algorithm used. Different algorithms have varying computational complexities, which can impact both the encryption/decryption speed and overall VPN performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compression&lt;/strong&gt;: Compression of the payload is another factor. By default, all the tested VPN solutions have payload compression disabled. Enabling compression can reduce the size of the data being transmitted, potentially improving performance, especially in environments with high latency or limited bandwidth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-threading&lt;/strong&gt;: Multi-threading specifies whether the encryption and decryption processes can be distributed across multiple CPU cores. This feature allows parallel encryption on multiple cores, which could increase the speed of encryption and decryption, leading to better overall performance for the VPN.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Default Configuration&lt;/th&gt;
&lt;th&gt;IPSec&lt;/th&gt;
&lt;th&gt;WireGuard&lt;/th&gt;
&lt;th&gt;OpenVPN&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Encryption Algorithm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AES-256&lt;/td&gt;
&lt;td&gt;ChaCha20&lt;/td&gt;
&lt;td&gt;AES-256-GCM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compression&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes*&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multi-threading&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;







&lt;h2&gt;
  
  
  Testing
&lt;/h2&gt;

&lt;p&gt;The image below illustrates the flow of the testing process:&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.amazonaws.com%2Fuploads%2Farticles%2Fh0ywbugz6ke8hlvzndjc.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.amazonaws.com%2Fuploads%2Farticles%2Fh0ywbugz6ke8hlvzndjc.png" alt="Image description" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The testing procedure was structured as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Initial Test (No VPN)&lt;/strong&gt;: The first round of testing was conducted without any VPN enabled. This provided a baseline for network performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test with VPN Solutions&lt;/strong&gt;: After establishing the baseline, each VPN solution (OpenVPN, WireGuard, and IPSec) was enabled and tested sequentially. During these tests, the performance metrics (throughput, latency, and packet loss) were measured with the VPNs active.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test with Unreliability #1&lt;/strong&gt;: Traffic shaping was applied to introduce a 400ms delay (Unreliability #1), and the VPN solutions were tested again under these conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test with Unreliability #2&lt;/strong&gt;: In the final round, the traffic shaping tool introduced 1% packet loss (Unreliability #2), and the VPNs were tested once more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This process was repeated for all three VPN solutions (OpenVPN, WireGuard, and IPSec)&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;The results presented are values from when iPerf sends the packets to the server and server receives and presents the values. All the results presented are the mean values of the 50 tests per case. The tests are on 36 different cases. A table of all 36 individual cases can be seen in table 3.:&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.amazonaws.com%2Fuploads%2Farticles%2Fdpv28zq0uvvwe6tqmwrd.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.amazonaws.com%2Fuploads%2Farticles%2Fdpv28zq0uvvwe6tqmwrd.png" alt="Image description" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;







&lt;h2&gt;
  
  
  Observation
&lt;/h2&gt;

&lt;p&gt;To reiterate, the research question for this paper is: '&lt;em&gt;How does performance differ between state-of-the-art VPN solutions under stable versus unreliable network conditions?&lt;/em&gt;' A definitive conclusion is that each implementation has its own advantages and disadvantages. Some VPN solutions perform better on certain operating systems. The most impactful conclusions drawn from the results are presented below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The best-performing VPN solution for macOS, if the network is reliable, was IPSec, followed by WireGuard, with OpenVPN performing the worst&lt;/li&gt;
&lt;li&gt;We can see that with any of the unreliability variables in effect, all VPNs and operating systems had reduced throughput compared to no unreliability&lt;/li&gt;
&lt;li&gt;Linux is fastest with the baseline and no unreliability at 943.5Mbits/sec&lt;/li&gt;
&lt;li&gt;All VPNs except OpenVPN perform best in Linux during the delay unreliability when comparing the other OSs under delay&lt;/li&gt;
&lt;li&gt;All VPNs perform best in Linux while experiencing packet loss&lt;/li&gt;
&lt;li&gt;OpenVPN is not the top performer in any test&lt;/li&gt;
&lt;li&gt;Linux performs best in all unreliability tests except one, the unreliability #1 – delay&lt;/li&gt;
&lt;/ul&gt;







&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Based on the results, a few recommendations for OS and VPN combinations emerged when using the default configuration. They can be seen in the Table below. The VPN in bold with a blue background is the overall recommended option for the specific network situation, as it had the best performance. The recommendations are as follows:&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.amazonaws.com%2Fuploads%2Farticles%2Frpl37rmnyezutkfkdlec.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.amazonaws.com%2Fuploads%2Farticles%2Frpl37rmnyezutkfkdlec.png" alt="Image description" width="800" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>networking</category>
      <category>cybersecurity</category>
      <category>tutorial</category>
      <category>ai</category>
    </item>
    <item>
      <title>Subnetting Demystified: Concepts, Importance, and a Real-World Example</title>
      <dc:creator>daniel💻</dc:creator>
      <pubDate>Thu, 02 Jan 2025 19:50:41 +0000</pubDate>
      <link>https://dev.to/daniel_idoko/subnetting-demystified-concepts-importance-and-a-real-world-example-1co</link>
      <guid>https://dev.to/daniel_idoko/subnetting-demystified-concepts-importance-and-a-real-world-example-1co</guid>
      <description>&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;The goal of this article is to give you a clear understanding of what subnetting is, its importance, and a real-world example of subnetting in action. To fully grasp the concepts in this article, you need a good understanding of what an IP address is, its structure, subnet masks, and CIDR notation. All of these topics are covered in this article: &lt;a href="https://dev.to/daniel_idoko/decoding-ip-addresses-mastering-subnet-mask-and-cidr-notation-2241"&gt;[Decoding IP Addresses: Mastering Subnet Mask and CIDR Notation]&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Subnetting Works
&lt;/h2&gt;

&lt;p&gt;A network is simply a group of computers that can communicate with each other. In technical terms, it is a group of hosts within the same IP range. As the size of a network grows, communication becomes increasingly difficult due to heavy traffic loads. To address this issue, large networks can be divided into smaller, more manageable subnetworks (subnets) using a process called subnetting. Subnetting helps reduce congestion by limiting broadcast traffic to smaller groups of hosts.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Subnetting is the method used to divide large networks into smaller, more manageable networks called subnetworks or subnets.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Flat Network&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;A flat network is a network without subdivisions (subnets), where all devices share the same broadcast domain. This can lead to issues like increased broadcast traffic, scalability problems, and security risks, which subnetting aims to address.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Example of Subnetting&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Suppose you have a Class C IP address &lt;code&gt;192.168.1.0/24&lt;/code&gt; that needs to be divided into 4 subnets. The total number of possible IPs is 256, ranging from &lt;code&gt;192.168.1.0&lt;/code&gt; to &lt;code&gt;192.168.1.255&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Only 254 IP addresses are available for use because the Network address (&lt;code&gt;192.168.1.0&lt;/code&gt;) and the Broadcast address (&lt;code&gt;192.168.1.255&lt;/code&gt;) are reserved and cannot be assigned to devices. The Network address is the first IP address in the range, and the Broadcast address is the last. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The subnet can be divided as follow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subnet 1&lt;/strong&gt;: &lt;code&gt;192.168.1.0/26&lt;/code&gt;. This provides a total of 64 IPs from range &lt;code&gt;192.168.1.0&lt;/code&gt; to &lt;code&gt;192.168.1.63&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subnet 2&lt;/strong&gt;: &lt;code&gt;192.168.1.64/26&lt;/code&gt;. This provides a total of 64 IPs from range &lt;code&gt;192.168.1.64&lt;/code&gt; to &lt;code&gt;192.168.1.127&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subnet 3&lt;/strong&gt;: &lt;code&gt;192.168.1.128/26&lt;/code&gt;. This provides a total of 64 IPs from range &lt;code&gt;192.168.1.128&lt;/code&gt; to &lt;code&gt;192.168.1.191&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subnet 4&lt;/strong&gt;: &lt;code&gt;192.168.1.192/26&lt;/code&gt;. This provides a total of 64 IPs from range &lt;code&gt;192.168.1.192&lt;/code&gt; to &lt;code&gt;192.168.1.255&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Importance of Subnetting
&lt;/h2&gt;

&lt;p&gt;Some of the importance of dividing a network into subnetworks include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Efficient Use of IP Addresses&lt;/strong&gt;: Subnetting allows the administrator to allocate only the necessary number of IPs required for that subnet, preventing waste.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Security&lt;/strong&gt;: Subnetting reduces security risks by limiting access between subnets. Unlike a flat network, which broadcasts packets and resources to every single host on the network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhanced Performance&lt;/strong&gt;: Each subnet runs faster because of the reduced broadcasting traffic burden. For example, it is easier to broadcast a packet to 10 hosts in a subnetwork than to 200 hosts in an undivided, flat network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simplifies Network Management&lt;/strong&gt;: By dividing networks into subnetworks, the workflow on a topology becomes clearer, making it easier to manage, detect problems, and reduce downtime. When one network goes down, the others can still function properly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Privacy&lt;/strong&gt;: Subnetting limits visibility between subnets by isolating sensitive traffic from the general network. For example, the HR department does not need to see the data that travels within the Admin department.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  A Real-World Application of Subnetting
&lt;/h2&gt;

&lt;p&gt;Your company has been assigned the IP network: &lt;code&gt;192.168.1.0/24&lt;/code&gt;. As the Network Admin, you are tasked with dividing this network to serve four different departments in your company:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Admin&lt;/strong&gt; (50 hosts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HR&lt;/strong&gt; (25 hosts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Staff&lt;/strong&gt; (30 hosts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guest&lt;/strong&gt; (14 hosts)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each subnet must accommodate the required number of hosts. The formula for calculating how many hosts are available to a network is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hosts Available = 2^h - 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;h is the number of host bits in the IP address.&lt;/li&gt;
&lt;li&gt;2 is subtracted because the network address and the broadcast address are reserved and cannot be used.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Finding the Number of Host Bits (h)&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Let's use the &lt;strong&gt;Admin&lt;/strong&gt; subnet as an example. Remember, the &lt;strong&gt;Admin&lt;/strong&gt; subnet needs 50 hosts.&lt;/p&gt;

&lt;p&gt;To find h for this subnet, find the smallest power of 2 that can accommodate the required number of hosts (50) in the subnet using this formula:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2^h ≥ Required Hosts + 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Number of host bits(h)** =&amp;gt; 2h ≥ 50 + 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After solving, h will equal &lt;code&gt;6&lt;/code&gt; (approximately 5.7, which rounds up to 6).&lt;/p&gt;

&lt;p&gt;We can solve for the total number of hosts that will be available to the subnet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Hosts Available** =&amp;gt; 26 - 2 = 62
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;strong&gt;subnet mask&lt;/strong&gt; for this subnet will be: &lt;strong&gt;32 - 6&lt;/strong&gt;, where 32 is the number of bits in an IP address and 6 is the number of host bits (h). This will give us a subnet mask of &lt;code&gt;/26&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Allocating the Admin Subnet&lt;/p&gt;

&lt;p&gt;From the example above, we can now set the &lt;strong&gt;Admin&lt;/strong&gt; Subnet as follows:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Department: Admin
- Number of host bits(h): 6
- Hosts Needed: 50
- Hosts Available: 62
- Subnet mask: `/26` or `255.255.255.192`
- Network Address: `192.168.1.0`
- Broadcast Address: `192.168.1.63`
- Usable IP Range: `192.168.1.1` to `192.168.1.62`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Using this example, allocate the subnet for the HR, Staff, and Guest subnets. If you get stuck anywhere, feel free to reach out to me or leave a comment.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>cybersecurity</category>
      <category>tutorial</category>
      <category>linux</category>
    </item>
    <item>
      <title>Decoding IP Addresses: Mastering Subnet Mask and CIDR Notation</title>
      <dc:creator>daniel💻</dc:creator>
      <pubDate>Fri, 20 Dec 2024 20:37:32 +0000</pubDate>
      <link>https://dev.to/daniel_idoko/decoding-ip-addresses-mastering-subnet-mask-and-cidr-notation-2241</link>
      <guid>https://dev.to/daniel_idoko/decoding-ip-addresses-mastering-subnet-mask-and-cidr-notation-2241</guid>
      <description>&lt;h2&gt;
  
  
  What is an IP Address
&lt;/h2&gt;

&lt;p&gt;In networking, IP addresses serve a straightforward purpose: &lt;strong&gt;Identification&lt;/strong&gt;. They are how IoT (Internet of Things) devices locate each other, whether on a private network or the public internet.&lt;/p&gt;

&lt;p&gt;In this article, I will break down the structure on an IP address, how to identify the the Network and Host portions of an IP address. I will also show you an easy way to calculate the CIDR (Classless Inter-Domain Routing) notation.&lt;/p&gt;

&lt;p&gt;Even though IPv6 is in widespread use today, I will be using IPv4 for the examples in this article. The concepts are still the same, the only difference is that IPv6 has more bits.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  IP Address Structure
&lt;/h2&gt;

&lt;p&gt;A typical IPv4 address consists of 32 bits divided into 4 segments using dots (e.g., &lt;code&gt;11000000.10101000.00000001.00000001&lt;/code&gt;). For better human readability each segment is converted to a byte, which represents a decimal value between 0 and 255 (e.g., &lt;code&gt;192.168.1.1&lt;/code&gt;). Each segment cannot exceed 255 because the total number of unique combinations of 8 bits is 256 (including 0).&lt;/p&gt;

&lt;p&gt;The 32 bits of an IPv4 address are divided into two parts: the &lt;strong&gt;Network portion&lt;/strong&gt; and the &lt;strong&gt;Host portion&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;Network portion&lt;/strong&gt; defines the specific network or sub-network that the address identifies. It is the same for every host on the network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;Host portion&lt;/strong&gt; defines a node on that network, which identifies the device on the network. It is unique for every host on the network.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your next question might be: which part of the address is the Network, and which part is the Host? Well, computers also need an answer to this question, and that's where &lt;strong&gt;subnet mask&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Subnet Mask
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Inherent Classes (Classful Addressing)&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;In the past, IP addresses used &lt;strong&gt;inherent classes&lt;/strong&gt; to determine which bytes of the address represent the network and which parts represent the host'. The class is defined by the first few bits of the leftmost byte. Depending on the class (A, B, C, D, or E), the computer determines how to divide the address into network and host portions.&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.amazonaws.com%2Fuploads%2Farticles%2Fjhezoitliz1jofhr8nu2.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.amazonaws.com%2Fuploads%2Farticles%2Fjhezoitliz1jofhr8nu2.png" alt="Classful Addressing Table" width="750" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, IP addresses are defined with an explicit &lt;strong&gt;subnet mask&lt;/strong&gt; (e.g., &lt;code&gt;255.255.255.0&lt;/code&gt;) that identifies the network portion. With subnets, the boundary between Network and Host can fall between bits, not just between bytes as seen in classful addressing.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Key Characteristics of Subnet IP Addresses&lt;/u&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;1s correspond to the network portion, and the 0s correspond to the host portion. When &lt;code&gt;255&lt;/code&gt; is converted to binary, the result is 8 bits (&lt;code&gt;11111111&lt;/code&gt;). This means the entire byte is part of the network portion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The 1s must be left-most and contiguous. You cannot have a byte that looks like &lt;code&gt;10101010&lt;/code&gt;; only something like &lt;code&gt;11110000&lt;/code&gt; is valid.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At least eight bits must be allocated to the network portion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At least two bits must be allocated to the host portion.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that if no subnet is defined for an IP address, the computer will use the class method by default.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;How to Identify the Host and Network Portion with Subnet Mask&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;If an IP address has a subnet of &lt;code&gt;255.255.255.0&lt;/code&gt;, it means the first three bytes are part of the network portion, while the last byte is the host portion. 255 represents 1 byte (8 bits), or &lt;code&gt;11111111&lt;/code&gt; in binary; it identifies the network portion(s) of an IP address.&lt;br&gt;
If the IP address &lt;code&gt;192.168.1.1&lt;/code&gt; has a subnet of &lt;code&gt;255.255.0.0&lt;/code&gt;, it means &lt;code&gt;192.168&lt;/code&gt; is part of the network portion, while &lt;code&gt;.1.1&lt;/code&gt; is part of the host portion.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  CIDR (Classless Inter-Domain Routing)
&lt;/h2&gt;

&lt;p&gt;As mentioned earlier, the boundary between the network and host can fall between bits. This will result in bytes that are neither 255 nor 0, but in between (the combination of 1s and 0s in binary). CIDR notation is commonly used in this situation. In CIDR notation, the subnet mask is written as &lt;code&gt;/XX&lt;/code&gt;, where XX is the number of bits in the network portion.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Example of CIDR (Classless Inter-Domain Routing) notation&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;192.168.1.0/27&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The subnetmask /27 means the first 27 bits are the network portion. I.e The subnet mask in binary will be:&lt;br&gt;
11111111.11111111.11111111.11100000 when converted each byte to decimal, will be 255.255.255.224.&lt;br&gt;
As usual`` the 1s are network while the 0s are host portion.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>networking</category>
      <category>systemadministration</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>TCP/IP Networking Model</title>
      <dc:creator>daniel💻</dc:creator>
      <pubDate>Fri, 27 Sep 2024 21:54:28 +0000</pubDate>
      <link>https://dev.to/daniel_idoko/tcpip-networking-model-bc3</link>
      <guid>https://dev.to/daniel_idoko/tcpip-networking-model-bc3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The TCP/IP network model is referred to as a network suite. It is referred to as a suite because it consists of different networking protocols working together to transmit data packets from &lt;code&gt;host A&lt;/code&gt; to &lt;code&gt;host B&lt;/code&gt; and ensure a reliable connection between networks. These protocols are arranged in a &lt;em&gt;hierarchy&lt;/em&gt; or &lt;em&gt;stack&lt;/em&gt;, where the higher-level protocols make use of the protocols beneath them. TCP/IP is the backbone protocol on which the Internet runs and a core protocol for computer networking in general.&lt;/p&gt;







&lt;h2&gt;
  
  
  Definition of Terms
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TCP - Transmission Control Protocol&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TCP is a &lt;em&gt;connection-oriented&lt;/em&gt; protocol that provides reliable data transfer, error detection and correction, segmentation, and reassembly. It operates at the Transport Layer of the TCP/IP Network Model and is a core protocol in the Internet protocol suite. TCP is often compared to &lt;a href="https://www.cloudflare.com/learning/ddos/glossary/user-datagram-protocol-udp/#:~:text=The%20User%20Datagram%20Protocol%2C%20or,connection%20before%20data%20is%20transferred." rel="noopener noreferrer"&gt;UDP (User Diagram Data)&lt;/a&gt;, but TCP is generally preferred in networks requiring high reliability due to its robust error-handling mechanisms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IP - Internet Protocol&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You've definitely heard the term "IP address" before. The Internet Protocol is a core protocol for transmitting data packets because it handles the tasks of &lt;em&gt;addressing and routing packets&lt;/em&gt;. Every host must have an IP address through which packets can be addressed to it and every device with an IP address is considered a host. There are currently two standard versions of the Internet Protocol: IPv4 and IPv6.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Packets&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The term "packets" is used in various places in this article. It simply refers to small units of data. When transmitting data, large data sets are broken down into packets to meet the &lt;em&gt;Maximum Transfer Unit (MTU)&lt;/em&gt; of a particular network. Each packet is framed with a &lt;em&gt;header&lt;/em&gt;, which consists of its addressing information such as its source IP address and destination IP address.&lt;/p&gt;







&lt;h2&gt;
  
  
  A Practical Look at the TCP/IP Networking Model
&lt;/h2&gt;

&lt;p&gt;In this section we'll take a shallow look at an instance of a Computer Network in action to better understand the role of the TCP/IP network model.&lt;/p&gt;

&lt;p&gt;Assuming you have two laptops and need to transfer some files from &lt;code&gt;Laptop A&lt;/code&gt; to &lt;code&gt;Laptop B&lt;/code&gt;, you'll be presented with a couple of options (both wired and wireless). Let's assume you choose an Ethernet cable for the transfer. Modern systems have streamlined the data transfer process, making much of it opaque to the user. In this chapter, we'll delve deeper into the process of your files traveling from &lt;code&gt;Laptop A&lt;/code&gt; to &lt;code&gt;Laptop B&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;After plugging each end of the Ethernet cable into both laptops, the next step is to assign each laptop an IP address within the same network range. For example, &lt;code&gt;Laptop A&lt;/code&gt; could be assigned &lt;code&gt;10.10.10.1&lt;/code&gt;, while &lt;code&gt;Laptop B&lt;/code&gt; would be assigned &lt;code&gt;10.10.10.2&lt;/code&gt;. This creates a private IP address range through which both laptops can transfer data addressed to each other's IP addresses. Each laptop automatically learns the other's IP address via an &lt;a href="https://en.wikipedia.org/wiki/Address_Resolution_Protocol" rel="noopener noreferrer"&gt;ARP (Address Resolution Protocol)&lt;/a&gt; request, and a connection is then established.&lt;/p&gt;

&lt;p&gt;When you transfer files from &lt;code&gt;Laptop A&lt;/code&gt;, addressed to &lt;code&gt;Laptop B&lt;/code&gt;'s IP address, the data passes through a series of &lt;em&gt;TCP network layers&lt;/em&gt; to reach its destination. Let's delve into these layers and see their role in data transmission.&lt;/p&gt;







&lt;h2&gt;
  
  
  The TCP/IP Network Layers
&lt;/h2&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.amazonaws.com%2Fuploads%2Farticles%2Ffnsfi01vdsu7mi0rhpa8.JPG" 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.amazonaws.com%2Fuploads%2Farticles%2Ffnsfi01vdsu7mi0rhpa8.JPG" alt="Image description" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The TCP/IP network model conventionally consists of four (4) distinct layers: &lt;code&gt;Application layer&lt;/code&gt;, &lt;code&gt;Transport layer&lt;/code&gt;, &lt;code&gt;Network layer&lt;/code&gt;, and &lt;code&gt;Link layer&lt;/code&gt;. This model is a simplified version of the &lt;strong&gt;OSI (Open Systems Interconnection) model&lt;/strong&gt;, which has seven (7) layers: &lt;code&gt;Application layer&lt;/code&gt;, &lt;code&gt;Presentation layer&lt;/code&gt;, &lt;code&gt;Session layer&lt;/code&gt;, &lt;code&gt;Transport layer&lt;/code&gt;, &lt;code&gt;Network layer&lt;/code&gt;, &lt;code&gt;Data link layer&lt;/code&gt;, and &lt;code&gt;Physical layer&lt;/code&gt;. The TCP/IP model combines some layers of the OSI model for simplicity. Let's explore the four layers of the TCP/IP model:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Link Layer&lt;/strong&gt;&lt;br&gt;
This layer is also known as the Network Interface Layer or Network Access Layer. It's responsible for framing and transmitting data bits over a physical medium. This can be transmitted wirelessly via electromagnetic waves or physically via wired signals. Examples of physical components include cables, optical fibers, radio waves, etc. In our practical example from the previous section &amp;lt; &lt;strong&gt;Practical Look at the TCP/IP Networking Model&lt;/strong&gt; &amp;gt;, this would be the Ethernet cable used to connect the two computers.&lt;/p&gt;

&lt;p&gt;Framing and Transmission is handle by two separate components of the Link layer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Link Layer Control - Handles framing the packets&lt;/li&gt;
&lt;li&gt;Media Access Control - Handles transmitting the packet to physical components.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Network or Internet Layer&lt;/strong&gt;&lt;br&gt;
This layer consists of protocols responsible for the logical transmission of data over a network. Examples of these protocols include: Internet Protocol (IP), Internet Control Message Protocol (ICMP), and Address Resolution Protocol (ARP). Each of these protocols plays a specific role in transmitting data.&lt;/p&gt;

&lt;p&gt;In our practical example from the previous section &amp;lt; &lt;strong&gt;Practical Look at the TCP/IP Networking Model&lt;/strong&gt; &amp;gt;, we assigned different but similar IP addresses to each laptop. The similarity (10.10.10.x) indicates that they belong to the same subnet. As &lt;code&gt;Laptop A&lt;/code&gt; transmits a data packet to &lt;code&gt;Laptop B&lt;/code&gt;, the packet will be framed in &lt;code&gt;Laptop A&lt;/code&gt;'s Link Layer Control. The frame will contain &lt;code&gt;Laptop B&lt;/code&gt;'s IP address as the destination.&lt;/p&gt;

&lt;p&gt;If there were more than two laptops connected to the network, communication would be impossible without IP addresses. IP addresses are essential for each laptop to know how to send files to others within the network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Transport Layer&lt;/strong&gt;&lt;br&gt;
This layer consists of protocols that provide reliable data transfer from one host in a network to the endpoint or receiving host of the network. It is concerned with end-to-end communication. TCP, UDP, and SCTP (Stream Control Transmission Protocol) are examples of Transport layer protocols.&lt;/p&gt;

&lt;p&gt;End-to-end communication means sender-to-receiver communication. In our practical example from the previous section &amp;lt; &lt;strong&gt;Practical Look at the TCP/IP Networking Model&lt;/strong&gt; &amp;gt;, we looked at a very simple network topology involving only two devices. In the Internet or a more complex network topology, data does not always travel directly from one host to another. It usually hops through a series of routes before reaching its destination host.&lt;/p&gt;

&lt;p&gt;Communication between one route and the next route is referred to as &lt;em&gt;hop-to-hop&lt;/em&gt; communication while the overall communication between the source host and destination host is the &lt;em&gt;end-to-end&lt;/em&gt; communication.&lt;/p&gt;

&lt;p&gt;As packets travel through these complex topologies, they are always aware of their next hop through a Layer 2 header using a &lt;em&gt;MAC (Media Access Control)&lt;/em&gt; address and their destination host through a Layer 3 header using an IP address. Every IOT device is assigned a unique MAC address at the time of manufacture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Application Layer&lt;/strong&gt;&lt;br&gt;
This layer combines the Session and Presentation layers from the OSI layer model. The Application layer consists of protocols that work directly with the end user's applications, providing various network services to these applications. Some Application layer protocols include SSH (Secure Shell), FTP (File Transfer Protocol), HTTP (Hypertext Transfer Protocol), DNS (Domain Name System), SNMP (Simple Network Management Protocol), and many more.&lt;/p&gt;







&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this exploration of the TCP/IP Network Model, we've delved into the fundamental layers and protocols that underpin modern computer networking.&lt;/p&gt;

&lt;p&gt;We've examined how data flows through the network, starting at the Application layer and traversing the Transport, Network, and Link layers. We've also explored the roles of key protocols like TCP, IP, and ARP in ensuring reliable and efficient communication.&lt;/p&gt;

&lt;p&gt;By understanding the TCP/IP model, you gain a deeper appreciation for the complex processes involved in modern computer networking. This knowledge can be valuable for troubleshooting network issues, designing network architectures, and staying informed about emerging networking technologies.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>tutorial</category>
      <category>cybersecurity</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
