Networking Concepts with Socket Programming Academic Level

Networking course with socket programming concepts in depth with TCP/UDP/HTTP Socket Programming for beginners to expert
Networking Concepts with Socket Programming Academic Level
File Size :
9.34 GB
Total length :
23h 0m



Abhishek CSEPracticals


Last update

Last updated 7/2022



Networking Concepts with Socket Programming Academic Level

What you’ll learn

Confident at Answering Networking Related Question
Open up opportunities to Networking/System programming Companies
Get familiar with Linux and Learn Linux System programming side by side
Build Github portfolio, strengthen your employability
Decorate your Resume with projects done in this Course
Learn Networking concepts at all Layers of OSI Model
Course content has been designed keeping the MNCs interviews in Mind
Coding Assignments and Projects
Become a Networking professional Developer
Master designing and Writing TCP/UDP Servers in Linux environment
Build & Decode the complete packet from scratch
Concept of Packet Encapsulation
L2 and L3 Routing, Vlan based Routing

Networking Concepts with Socket Programming Academic Level


Basic UG course on Networking
Basic programming skills in C is required


This course is about strengthening the Networking concepts and fundamentals with assignments side by side with theory. Through this course you will be able to :1. Understand the Functioning of TCP/IP Stack (OSI Model). Understand the function of each layer in TCP/IP stack in good detail.2. Explain the L2 routing concepts – Mac Addresses and ARP3. Explain the L3 routing concepts – IP Addresses and IP protocol4. Understand the procedure of Dynamic construction of L3 Routing Table5. Understand various ways to design a Linux TCP/UDP server program in C6. Understand Socket programming in C 7. Understand the Networking devices functioning – L2 switch and L3 router8. Understand packet Journey through the layers of TCP/IP stack9. Design and implement HTTP Webservers from scratch10. Read and manufacture the network packets from scratch11. Understand the concept of TLVs12. Concept of packet Encapsulation13. Understand Domain Name System (DNS)14. Virtual LANs (VLANs) and Routing in VLANs15. Broadcast Domain and Collision DomainWe Understand – Networking by its nature is inclined towards being a theoretical subject of study. To arouse the interest of the students ,we elaborate each and every topic of this course through an assignment or project.
This course is thorough. We explain the design, discuss the code flow and then guide the audience how to implement the particular concept design in detail in a step by step manner. All you need is a Linux OS running on your system to do this course.Who should do this course ?This course is meant for UG Computer science students, job seekers and professional developers. This is MUST do course for those who want to join MNCs as a developer. The topics covered in this course are of utmost importance from interviews aspects and students graduating in computer science and looking to seek an opportunity in MNCs as a developer should have Networking concepts at his/her finger tips. Better to have done Networking under graduate course, not mandatory. Job seekers trying for the position of Networking developers in product based MNCs System software development including Networking is an evergreen area. Internet will not going to be doomed ever.Pre-requisiteThere is no pre-requisite for this course, however, it shall be advantage if you know a little of C. We designed this course assuming student is a complete beginner in Networking and we raise the level of course gradually as we move from Basic to advance Networking concepts. Also, Please just do not sit and watch my codes. Write your own codes, even if it is same as mine !We have a strong reasons to choose C as a language for this course:1. The entire core networking development work is being done in C in industry. So, this reason alone is good enough that you should learn network development in C if you are aiming to join industry as a network protocol developer. 2. Network equipment need to interact with underlying hardware – the ASIC chips. What could be a better language other than C when it comes to interact and program the hardware.3. C is middle level language – not as low as assembly, neither as high as Java/Python. In C, its the programmer’s responsibility to write every line of code to get the task done, unlike Java/Python which provides rich rest of libraries to do the most tasks for you. Using High Level Languages for learning network programming would obscure the low level details of networking – that is what is going behind the scenes. If you are are beginner in network programming, you must learn things from scratch and only C provides you the opportunity to do that. So, you must do all your assignments in C.4. Networking is all about cooking up the packets and sending it out of wire. C will allow you to cook packets exactly the same way as you would like them to appear on wire. Lot of Bit level programming.  5. If you are a beginner in Networking, pls refrain from learning network programming in High Level Languages such as Java Or Python. It is not job oriented thing to do in networking domain.No Third Party librariesWhatever logic you implement, you need to implement it from scratch. This course do not suggest taking help of any third party library to get the jobs done. Use of external libraries completely defeats the purpose of the course. However, it is recommended to use third party libraries for commonly used data structures such as linked lists/Trees/Queues etc which saves a lot of time implementing these data structures.What else along with the course ?If you are aiming to become a developer, then, besides strong in Data structure and Algorithms, you should have clarity of concepts related to other Linux utilities. Networking is all about system programming, and you would be interested in learning other linux concepts of prime importance such as Inter Process Communication, Remote Procedure Calls etc. Please take a look at my other courses in this regard. These courses will summed you up as a more competitive developer in Networking & System Programming domain.See what students are saying about this course Just Take a Look at These Top Rated Reviews (Browse review section to verify these reviews)***** What a Fantastic Course!!! I really appreciate the efforts Abhishek has put in this course. He has put his sweat and heart into it. The way he explains things keeps you hooked on to this course. He directly gets TO THE POINT without beating around the bush. No author of any networking book can explain things like Abhishek is doing. What Abhishek is doing is that he is explaining the Meat of the subject. One would have to read 10 books to understand this. or perhaps more. There was a hunch in my heart that dont know networking clearly. This course meets my expectations with respect to content, clarity and teaching style with proper presentations. This course improves your understanding and removes the fear of not knowing…not only that, it injects a good amount of confidence about your knowledge of Networking…Thanks for coming up with such a course. Thanks Again.***** Come across right course at right time. This course seems cover all important areas of networking. Author explains the topics in good detail and with good pace. This course looks like designed to beat technical interviews.***** Great Course, instructor is very thorough and provide quick guidance and clear any doubts promptly with high availability. I really enjoyed this course. Networking has been a tough subject for me to learn, but this course has made it quite easy. I now have my concepts thoroughly clear ! Thanks Abhishek, and Udemy.***** I am working as Firmware/Embedded engineer, and the courses from this guys are goddamn blessing. In the real industry, as he mentioned earlier, all network programming or Linux system programming must be implemented with C cuz C is a perfect language for accessing memory spaces and customizing serial communication with other chips. In the real industrial fields, no one is gonna teach you. You are the only one who needs to figure it out by yourself cuz everyone wishes you not to excel in workplace. Only one person can be a manager or supervisor. Take this guy’s courses. Needless to say, quality guaranteed. If I could do hacking on this site, i am gonna crash his lectures. I do not want other people to get benefits from his lectures. It would be best if he makes a lecture for “making Operating System from scratch” 🙂  Warning : This course has auto system-generated subtitles which may not be perfect. Please disable subtitles as per your convenience.Curriculum0. Setting up Linux Development Environment on your machine For those who are not familiar with Linux Installation/environment1. OSI Model Vs TCP/IP StackData Encapsulation and Data DecapsulationHeaders CascadingIngress and egress Journey of packet through a TCP/IP StackBig Picture2. Multi-node setup environment on your machineSetup Multinode Cluster of Virtual machines on your machineLocal and Remote SubnetsLayer 3 Route SemanticsConfigure Layer 3 routes in nodesUnderstand L3 Routing table semantics 3. Subnetting and IP addressUnderstand SubnetsDifferentiate between local and remote subnetsIP Address assignment scheme/policyData DeliveryUnderstand MAC addresses and their useCalculation of Networking ID, Broadcast address and Cardinality of a subnetUnderstand the relationship between L3 routers and SubnetsUnderstand Point-to-Point linksMAC layer and IP rules of packet rejection/acceptanceBroadcast Addresses4. Layer 2 Networking conceptsL3 Router as a gateway to subnetProtocol Identifier fields at each layerEthernet header formatHow Ethernet hdr makes L2 routing possibleARP (Address resolution protocol)ARP table population and useStep by Step ARP protocol functioningAssignment on ARPLayer2 Switch – How it works MAC address tableStep by Step description of L2 Switch functioningProblem of Layer Thrashing5. Layer 3 Networking conceptsRelationship between Layer2 and Layer3 routingExplained the dependency of two layers over each otherConfiguring Layer 3 routing tableSemantics of a Layer 3 routeLayer 3 route look upConcept of Longest prefix matchIP Header – fields you should knowNetwork Layer OperationsStep by Step description of L3 routing routingLoopback interface – purpose and configuring loopback interface Exercise on Layer 3 route installation, routing and forwarding of trafficBroadCast and Collision Domain6. Dynamic Construction of L3 Routing TablePhase 1 – Neighbotship database managementPhase 2 – Creation of Link State DatabasePhase 3 – Shortest Path first AlgorithmCalculation of Final Routing Table7. Virtual LANs (VLANs) LANs and why they are outdated todayVLANs – The purpose802.1Q VLAN hdrRules of Vlan TaggingVlan Aware L2 SwitchesVlan based L2 routingOther Vlan Benefits8. Router to Vlan ForwardingConvept of SVI interfacesSVI – VLAN BindingRouter to Vlan Forwarding – Step by Step9. Inter Vlan RoutingTwo Step Process From Src host Machine to Gateway L3 routerFrom Gateway L3 router to Dst host machineExercise and more examples10. Network troubleshooting toolsHow ping works – ICMP protocol descriptionNetworking applications troubleshooting utilities – ping, wireshark, tcpdump Capturing the packets and examine its contents using tcpdump 11. Transport LayerLayer GoalsContrasting Layer2, Layer 3 and Layer 4 togetherTCP and UDP – Properties of two protocolsTCP Vs UDPUnderstanding TCP in DetailConcept of Headers stackingConcept of port numbersLinux System call interface12. Socket programming conceptsSocket Programming DesignSelect System callAccept System callConcept of MultiplexingServer State machine13. Application Layer Different ways to implement Socketson Top of Transport layeron Top of Network Layeron Top of  Data link layerDesigning HTTP Webserver from scratchHTTP Webserver ImplementationCustom application sockets14. Domain Name SystemWhat is DNS ?DNS Architecture and DesignFQDNHosting a websiteDNS ResolverDNS Query typesIterative QueryRecursive DNS QueryReverse DNS QuerySummary15. IP-in-IP Encapsulation/TunnelingWhat is IP-in-IP Encapsulation ?Why we need IP-in-IP Encapsulation ?How Encapsulated packet is routed in the network ?Two scenarios using IP-in-IP Encapsulation16. Concept of TLVsWhat are TLVsWhy we need TLVsWriting a TLV decoderBenefits of TLVs in Network communicationSTREAMS – Data StructureTLV (De)Serialization using STREAMS**AUDIT TRIAL**2 Aug 2020 – Added Section on Dynamic Construction of L3 Routing Table14 June 2019 – Added Section on TCP 06 Oct 2018 – Added Section 6 On VLANs07 Sept 2018 – Added Section 11, Domain Name System13 July 2018 – Added Section 12, IP-in-IP Encapsulation/Tunneling17 June 2018 – Added Section 10, The Application Layer and HTTP Webserver Design & Implementation10 June 2018 – Added Section 15, The concept of TLVs


Section 1: Introduction

Lecture 1 Table Of Contents

Lecture 2 Join Telegram Group

Lecture 3 OSI Model Introduction

Lecture 4 OSI Model Layers Functions

Lecture 5 TCP IP Stack real World Analogy

Lecture 6 Data Encapsulation and Decapsulation – Introduction

Lecture 7 Data Encapsulation

Lecture 8 Data Decapsulation

Lecture 9 Data Encapsulation and Decapsulation on Forwarding nodes

Lecture 10 A Big Picture

Section 2: Networking Labs

Lecture 11 What in this Section ?

Lecture 12 Objective and Goals

Lecture 13 Mininet Installation Procedure

Lecture 14 Extra Tools Installation

Lecture 15 Launching Mininet

Lecture 16 Mininet TreeTopologies

Section 3: IP Subnet

Lecture 17 Subnetting Part 1

Lecture 18 Subnetting Part 2

Lecture 19 Data Delivery

Lecture 20 Mac and IP Address

Lecture 21 Network ID

Lecture 22 Broadcast Addresses

Lecture 23 Max Value and Control Bits

Lecture 24 IP Address Configuration

Lecture 25 Point to Point Links Mask

Lecture 26 Broadcast Addresses In Detail

Lecture 27 IP Maths Coding Assignments

Section 4: Layer 2 Routing

Lecture 28 L2 Routing Introduction

Lecture 29 Local And Remote Subnets

Lecture 30 L2 Routing – Basics

Lecture 31 Ethernet Header format

Lecture 32 How Layer 2 Routing is done ?

Lecture 33 ARP Goals

Lecture 34 ARP Standard Message Format

Lecture 35 Address Resolution Protocol Part 1

Lecture 36 Address Resolution Protocol part 2

Lecture 37 Address Resolution Protocol Demonstration

Lecture 38 Layer 2 Switch Concept

Lecture 39 L2 Switch Functioning

Lecture 40 Layer 2 Switch Example

Lecture 41 Lab Session

Lecture 42 Test Topology Description

Lecture 43 L2 Topology Demo

Lecture 44 L2 Topology Assignment

Section 5: Layer 3 Routing

Lecture 45 Layer 3 Routing Overview

Lecture 46 Why we need L3 Routes ?

Lecture 47 Semantics of Layer 3 Routes

Lecture 48 Routing table Look up

Lecture 49 L3 Routing Topology

Lecture 50 Layer 3 Operations and Flowchart

Lecture 51 Layer 3 Routing Example

Lecture 52 Loopback interfaces – Introduction

Lecture 53 Loopback interfaces – properties

Lecture 54 Routing using Loopback IP Address as Destination Address

Lecture 55 Lab Session on L3 Routing

Lecture 56 L3 Topology Construction and Demo

Section 6: Data Structure for L3 Routing Tables

Lecture 57 Section For Developers

Lecture 58 Prefix Masks and Wildcard

Lecture 59 Data Structures

Lecture 60 Route Insertion – Example 1

Lecture 61 Route Insertion – Example 2

Lecture 62 Summary

Lecture 63 Route Search Algorithm

Lecture 64 Route Deletion Algorithm

Lecture 65 Longest Prefix Match – Route LookUp

Lecture 66 Route Lookup Example 1

Lecture 67 Route Lookup Example 2

Section 7: Dynamic Construction of Layer 3 Routing Table

Lecture 68 Introduction

Lecture 69 Goals and Problem Statement

Lecture 70 Routing Table Entry Format

Lecture 71 ECMP – Equal Cost Multiple Path

Lecture 72 L3 Device Collaboration

Lecture 73 Generic Steps to Build Routing Table

Section 8: Part2 – Dynamic Construction of Layer 3 Routing Table

Lecture 74 Phases of This Section

Lecture 75 Phase 1 – 4 Steps

Lecture 76 Phase 1 – Step 1 and 2

Lecture 77 Phase 1 – Steps 3 and 4

Lecture 78 Phase 2 – Spf Algorithm

Lecture 79 Phase 2 – Spf Algo Example 1

Lecture 80 Phase 2 – Spf Algo Rules

Lecture 81 Phase 2 – Spf Algo Example 2

Lecture 82 Phase 3 – Final Routing Table Computation

Lecture 83 Loop Free is Guaranteed

Lecture 84 Convergence – Node/link Failures

Lecture 85 Summary

Section 9: Broadcast Domain and Collision Domain

Lecture 86 BD and CD – Introduction

Lecture 87 Collision Domain reduction by L2 Switches – Example1

Lecture 88 Broadcast Domain reduction by L3 router – Example2

Section 10: LANs and VLANs

Lecture 89 What are LANs and Use Cases

Lecture 90 LANs Problem 1 – Immobility

Lecture 91 LANs Problem 1 – Immobility Real World Example

Lecture 92 LANs Problem 2 – Security Issues

Lecture 93 Introducing VLANs

Lecture 94 Access and Trunk Ports of L2 Switch

Lecture 95 802.1Q VLAN Header

Lecture 96 VLAN Tagging Rules

Lecture 97 VLAN L2 Routing Example – Part1

Lecture 98 VLAN L2 Routing Example – Part2

Lecture 99 VLAN L2 Routing Example – Part3

Lecture 100 VLAN Benefit 1 – Segmentation

Lecture 101 VLAN Benefit 2 – Resolve Thrashing

Lecture 102 VLAN Benefit 3 – Reduced Broadcast Domain

Lecture 103 VLAN Benefit 4 – Mobility

Lecture 104 VLANs Additional Reading

Section 11: Router – Vlan Routing

Lecture 105 Introduction and Problem Statement

Lecture 106 Concept of SVIs

Lecture 107 L3 Router Configuration for VLAN forwarding

Lecture 108 Router to Vlan Forwarding – Example

Section 12: Inter Vlan Routing

Lecture 109 Problem Statement

Lecture 110 Traditional L3 Routing – Recap

Lecture 111 Default Routes and ARP Resolution in Vlan based Network – Recap

Lecture 112 Inter Vlan Routing Basics

Lecture 113 Inter Vlan Routing Example – Part1

Lecture 114 Inter Vlan Routing Example – Part2

Lecture 115 Summary

Lecture 116 Exercises

Section 13: Transport Layer

Lecture 117 Transport Layer Introduction

Lecture 118 Transport Layer Goals

Lecture 119 User Datagram Protocol (UDP) – part1

Lecture 120 User Datagram Protocol (UDP) – Part2

Lecture 121 TCP Disclaimer

Lecture 122 Transmission Control Protocol (TCP) – Connection Oriented

Lecture 123 TCP – Stateful Protocol

Lecture 124 TCP – Byte Oriented Protocol

Lecture 125 TCP – Ordered Delivery

Lecture 126 TCP – Reliable Delivery

Lecture 127 TCP tools for for Lossy Networks

Lecture 128 TCP Vs UDP

Lecture 129 Header Stacking

Lecture 130 Transport Layer Port Numbers

Lecture 131 System Call Interface

Section 14: Transport Layer – TCP Preliminaries

Lecture 132 TCP Vs Other Protocols

Lecture 133 TCP ARQ Challanges

Lecture 134 TCP Byte Circular Buffers

Lecture 135 Segments and Sequence Numbers – Part1

Lecture 136 Segments and Sequence Numbers – Part2

Lecture 137 TCP Hdr : Sequence Number and Acknowledge Number

Lecture 138 TCP Segments Type

Lecture 139 TCP Reliable Data Delivery – Revisited

Lecture 140 TCP Re-transmission Timer Illustration

Lecture 141 Summary

Section 15: Socket Programming

Lecture 142 Introduction to Socket Programming

Lecture 143 Server Designing

Lecture 144 Accept system call

Lecture 145 Select System Call

Lecture 146 Implementing Multiplexing with Accept & Select System Calls

Lecture 147 TCP Server Example – part 1

Lecture 148 TCP Server Example – part 2

Lecture 149 TCP Server Example – part 3

Lecture 150 TCP Server Design Observation

Lecture 151 TCP Client Design and Implementation

Lecture 152 TCP Server Client Demonstration

Lecture 153 TCP Server With Multiplexing – High Level Design – Part1

Lecture 154 TCP Server With Multiplexing – Implementation – part 2

Lecture 155 TCP Server With Multiplexing – Demonstration – part 3

Lecture 156 Socket Programming Conclusion

Section 16: The Application Layer

Lecture 157 Application Layer Introduction

Lecture 158 HTTP Server Design and Implementation from Scratch

Lecture 159 HTTP Server Demonstration

Lecture 160 HTTP Server Code Walk

Lecture 161 HTTP Server Assignment

Section 17: Socket Programming Project – Implement Distributed Transparent Memory

Lecture 162 Project Goals

Lecture 163 Project Deployment

Lecture 164 Put Request Algorithm

Lecture 165 Get Request Algorithm

Lecture 166 Messages Types

Lecture 167 Messages Processing

Lecture 168 Project Pseudocode

Lecture 169 Final Words before Coding

Section 18: Domain Name System

Lecture 170 DNS Agenda

Lecture 171 DNS – Introduction

Lecture 172 DNS – Problem Statement

Lecture 173 What is DNS ?

Lecture 174 DNS Architecture and Geographical Distribution

Lecture 175 DNS – A Hierarchical and Decentralized System

Lecture 176 DNS – Hosting your Own website

Lecture 177 Website Domain Name and FQDN

Lecture 178 Top Level Domain Servers Classification

Lecture 179 DNS Resolver

Lecture 180 DNS Query types

Lecture 181 DNS Query – Recursive

Lecture 182 DNS Query – Iterative

Lecture 183 Reverse DNS Query

Lecture 184 Summary

Section 19: Packet Encapsulation

Lecture 185 IP in IP Encapsulation – Introduction

Lecture 186 What are Heterogeneous Networks ?

Lecture 187 Scenario 1 – IPv6-in-IP Encapsulation Problem Statement

Lecture 188 Scenario 1 – IPv6-in-IP Encapsulation Solution

Lecture 189 Scenario 2 – IP Encapsulation Problem Statement and Solution

Lecture 190 Scenario 2 – IP Encapsulation Practical Use case

Lecture 191 IP Encapsulation Conclusion and Summary

Section 20: Concept of TLVs – Type Length Value

Lecture 192 TLVs – Introduction

Lecture 193 Why we need TLVs

Lecture 194 Why we need TLVs – Another scenario

Lecture 195 Understanding TLVs

Lecture 196 TLV Addressing the problem of Heterogeniety

Lecture 197 TLV Addressing the problem of Software Upgrade

Section 21: Interview Question on Data structures Algorithms OS and Networking

Lecture 198 Bonus Lecture – Time to get some Candies !!

UG students, PG Students,Those looking to build a career in Networking Domain,Coding lovers who love to build projects and see things in Action,Those, who want to distinguish themselves from Crowd

Course Information:

Udemy | English | 23h 0m | 9.34 GB
Created by: Abhishek CSEPracticals

You Can See More Courses in the IT & Software >> Greetings from

New Courses

Scroll to Top