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

4.71 (795 reviews)
Udemy
platform
English
language
Network & Security
category
9,268
students
23.5 hours
content
Jan 2024
last update
$84.99
regular price

What you will 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

Description

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 ARP

3Explain the L3 routing concepts - IP Addresses and IP protocol

4. Understand the procedure of Dynamic construction of L3 Routing Table

5. Understand various ways to design a Linux TCP/UDP server program in C

6. Understand Socket programming in C 

7. Understand the Networking devices functioning - L2 switch and L3 router

8. Understand packet Journey through the layers of TCP/IP stack

9. Design and implement HTTP Webservers from scratch

10. Read and manufacture the network packets from scratch

11. Understand the concept of TLVs

12. Concept of packet Encapsulation

13. Understand Domain Name System (DNS)

14. Virtual LANs (VLANs) and Routing in VLANs

15. Broadcast Domain and Collision Domain


We 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-requisite

There 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 libraries

Whatever 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.


Curriculum

0. Setting up Linux Development Environment on your machine 

  • For those who are not familiar with Linux Installation/environment

1. OSI Model Vs TCP/IP Stack

  • Data Encapsulation and Data Decapsulation

  • Headers Cascading

  • Ingress and egress Journey of packet through a TCP/IP Stack

  • Big Picture

2. Multi-node setup environment on your machine

  • Setup Multinode Cluster of Virtual machines on your machine

  • Local and Remote Subnets

  • Layer 3 Route Semantics

  • Configure Layer 3 routes in nodes

  • Understand L3 Routing table semantics 

3. Subnetting and IP address

  • Understand Subnets

  • Differentiate between local and remote subnets

  • IP Address assignment scheme/policy

  • Data Delivery

  • Understand MAC addresses and their use

  • Calculation of Networking ID, Broadcast address and Cardinality of a subnet

  • Understand the relationship between L3 routers and Subnets

  • Understand Point-to-Point links

  • MAC layer and IP rules of packet rejection/acceptance

  • Broadcast Addresses

4. Layer 2 Networking concepts

  • L3 Router as a gateway to subnet

  • Protocol Identifier fields at each layer

  • Ethernet header format

  • How Ethernet hdr makes L2 routing possible

  • ARP (Address resolution protocol)

  • ARP table population and use

  • Step by Step ARP protocol functioning

  • Assignment on ARP

  • Layer2 Switch - How it works 

  • MAC address table

  • Step by Step description of L2 Switch functioning

  • Problem of Layer Thrashing

5. Layer 3 Networking concepts

  • Relationship between Layer2 and Layer3 routing

  • Explained the dependency of two layers over each other

  • Configuring Layer 3 routing table

  • Semantics of a Layer 3 route

  • Layer 3 route look up

  • Concept of Longest prefix match

  • IP Header - fields you should know

  • Network Layer Operations

  • Step by Step description of L3 routing routing

  • Loopback interface - purpose and configuring loopback interface 

  • Exercise on Layer 3 route installation, routing and forwarding of traffic

  • BroadCast and Collision Domain

6. Dynamic Construction of L3 Routing Table

  • Phase 1 - Neighbotship database management

  • Phase 2 - Creation of Link State Database

  • Phase 3 - Shortest Path first Algorithm

  • Calculation of Final Routing Table

7. Virtual LANs (VLANs)

  • LANs and why they are outdated today

  • VLANs - The purpose

  • 802.1Q VLAN hdr

  • Rules of Vlan Tagging

  • Vlan Aware L2 Switches

  • Vlan based L2 routing

  • Other Vlan Benefits

8. Router to Vlan Forwarding

  • Convept of SVI interfaces

  • SVI - VLAN Binding

  • Router to Vlan Forwarding - Step by Step

9. Inter Vlan Routing

  • Two Step Process

    • From Src host Machine to Gateway L3 router

    • From Gateway L3 router to Dst host machine

    • Exercise and more examples

10. Network troubleshooting tools

  • How ping works - ICMP protocol description

  • Networking applications troubleshooting utilities - ping, wireshark, tcpdump 

  • Capturing the packets and examine its contents using tcpdump

11. Transport Layer

  • Layer Goals

  • Contrasting Layer2, Layer 3 and Layer 4 together

  • TCP and UDP - Properties of two protocols

  • TCP Vs UDP

  • Understanding TCP in Detail

  • Concept of Headers stacking

  • Concept of port numbers

  • Linux System call interface

12. Socket programming concepts

  • Socket Programming Design

  • Select System call

  • Accept System call

  • Concept of Multiplexing

  • Server State machine

13. Application Layer 

  • Different ways to implement Sockets

    • on Top of Transport layer

    • on Top of Network Layer

    • on Top of  Data link layer

  • Designing HTTP Webserver from scratch

  • HTTP Webserver Implementation

  • Custom application sockets

14. Domain Name System

  • What is DNS ?

  • DNS Architecture and Design

  • FQDN

  • Hosting a website

  • DNS Resolver

  • DNS Query types

    • Iterative Query

    • Recursive DNS Query

    • Reverse DNS Query

  • Summary

15. IP-in-IP Encapsulation/Tunneling

  • What 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 Encapsulation

16. Concept of TLVs

  • What are TLVs

  • Why we need TLVs

  • Writing a TLV decoder

  • Benefits of TLVs in Network communication

  • STREAMS - Data Structure

  • TLV (De)Serialization using STREAMS


**AUDIT TRIAL**

2 Aug 2020 - Added Section on Dynamic Construction of L3 Routing Table

14 June 2019 - Added Section on TCP

06 Oct 2018 - Added Section 6 On VLANs

07 Sept 2018 - Added Section 11, Domain Name System

13 July 2018 - Added Section 12, IP-in-IP Encapsulation/Tunneling

17 June 2018 - Added Section 10, The Application Layer and HTTP Webserver Design & Implementation

10 June 2018 - Added Section 15, The concept of TLVs

Content

Introduction

Table Of Contents
Join Us
Setting Up Linux Development Environment
OSI Model Introduction
OSI Model Layers Functions
TCP IP Stack real World Analogy
Data Encapsulation and Decapsulation - Introduction
Data Encapsulation
Data Decapsulation
Data Encapsulation and Decapsulation on Forwarding nodes
A Big Picture
Test your Understanding

MultiNode Topology

Topology
Local And Remote Subnets
L3 Routing Information
L3 Routes
Practical Session 1
Practical Session 2

IP Subnet

Subnetting Part 1
Subnetting Part 2
Data Delivery
Mac and IP Address
Network ID
Broadcast Addresses
Max Value and Control Bits
IP Address Configuration
Point to Point Links Mask
Broadcast Addresses In Detail
IP Maths Coding Assignments

Layer 2 Routing

L2 Routing Introduction
L2 Routing - Basics
Ethernet Header format
How Layer 2 Routing is done ?
ARP Goals
ARP Standard Message Format
Address Resolution Protocol Part 1
Address Resolution Protocol part 2
Address Resolution Protocol Demonstration
Layer 2 Switch Concept
L2 Switch Functioning
Layer 2 Switch Example

Layer 3 Routing

Layer 3 Routing Overview
Why we need L3 Routes ?
Semantics of Layer 3 Routes
Routing table Look up
L3 Routing Topology
Layer 3 Operations and Flowchart
Layer 3 Routing Example
Loopback interfaces - Introduction
Loopback interfaces - properties
Routing using Loopback IP Address as Destination Address
Layer 3 Exercise - Topology Creation
Layer 3 Exercise - L3 route installation and traffic Forwarding
Layer 3 Exercise - End to End packet delivery

Broadcast Domain and Collision Domain

BD and CD - Introduction
Collision Domain reduction by L2 Switches - Example1
Broadcast Domain reduction by L3 router - Example2

LANs and VLANs

What are LANs and Use Cases
LANs Problem 1 - Immobility
LANs Problem 1 - Immobility Real World Example
LANs Problem 2 - Security Issues
Introducing VLANs
Access and Trunk Ports of L2 Switch
802.1Q VLAN Header
VLAN Tagging Rules
VLAN L2 Routing Example - Part1
VLAN L2 Routing Example - Part2
VLAN L2 Routing Example - Part3
VLAN Benefit 1 - Segmentation
VLAN Benefit 2 - Resolve Thrashing
VLAN Benefit 3 - Reduced Broadcast Domain
VLAN Benefit 4 - Mobility
VLANs Additional Reading

Router - Vlan Routing

Introduction and Problem Statement
Concept of SVIs
L3 Router Configuration for VLAN forwarding
Router to Vlan Forwarding - Example

Inter Vlan Routing

Problem Statement
Traditional L3 Routing - Recap
Default Routes and ARP Resolution in Vlan based Network - Recap
Inter Vlan Routing Basics
Inter Vlan Routing Example - Part1
Inter Vlan Routing Example - Part2
Summary
Exercises

Network Troubleshooting

Ping - How it Works ?
Linux TCPdump utility part 1- Capture packets
Linux TCPdump utility part 2- Capture packets
TCP Dump and ping assignment

Transport Layer

Transport Layer Introduction
Transport Layer Goals
User Datagram Protocol (UDP) - part1
User Datagram Protocol (UDP) - Part2
TCP Disclaimer
Transmission Control Protocol (TCP) - Connection Oriented
TCP - Stateful Protocol
TCP - Byte Oriented Protocol
TCP - Ordered Delivery
TCP - Reliable Delivery
TCP tools for for Lossy Networks
TCP Vs UDP
Header Stacking
Transport Layer Port Numbers
System Call Interface

Transport Layer - TCP Preliminaries

TCP Vs Other Protocols
TCP ARQ Challanges
TCP Byte Circular Buffers
Segments and Sequence Numbers - Part1
Segments and Sequence Numbers - Part2
TCP Hdr : Sequence Number and Acknowledge Number
TCP Segments Type
TCP Reliable Data Delivery - Revisited
TCP Re-transmission Timer Illustration
Summary

Socket Programming

Introduction to Socket Programming
Server Designing
Accept system call
Select System Call
Implementing Multiplexing with Accept & Select System Calls
TCP Server Example - part 1
TCP Server Example - part 2
TCP Server Example - part 3
TCP Server Design Observation
TCP Client Design and Implementation
TCP Server Client Demonstration
TCP Server With Multiplexing - High Level Design - Part1
TCP Server With Multiplexing - Implementation - part 2
TCP Server With Multiplexing - Demonstration - part 3
Socket Programming Conclusion

The Application Layer

Application Layer Introduction
HTTP Server Design and Implementation from Scratch
HTTP Server Demonstration
HTTP Server Code Walk
HTTP Server Assignment

Socket Programming Project - Implement Distributed Transparent Memory

Project Goals
Project Deployment
Put Request Algorithm
Get Request Algorithm
Messages Types
Messages Processing
Project Pseudocode
Final Words before Coding

Domain Name System

DNS Agenda
DNS - Introduction
DNS - Problem Statement
What is DNS ?
DNS Architecture and Geographical Distribution
DNS - A Hierarchical and Decentralized System
DNS - Hosting your Own website
Website Domain Name and FQDN
Top Level Domain Servers Classification
DNS Resolver
DNS Query types
DNS Query - Recursive
DNS Query - Iterative
Reverse DNS Query
Summary

Packet Encapsulation

IP in IP Encapsulation - Introduction
What are Heterogeneous Networks ?
Scenario 1 - IPv6-in-IP Encapsulation Problem Statement
Scenario 1 - IPv6-in-IP Encapsulation Solution
Scenario 2 - IP Encapsulation Problem Statement and Solution
Scenario 2 - IP Encapsulation Practical Use case
IP Encapsulation Conclusion and Summary

Concept of TLVs - Type Length Value

TLVs - Introduction
Why we need TLVs
Why we need TLVs - Another scenario
Understanding TLVs
TLV Addressing the problem of Heterogeniety
TLV Addressing the problem of Software Upgrade
Data Structure - STREAMS
TLV De-Serialization using STREAMS

Interview Question on Data structures Algorithms OS and Networking

Interview Question on Data structures Algorithms OS and Networking
Bonus Lecture - Time to get some Candies !!

Screenshots

Networking Concepts with Socket Programming - Academic Level - Screenshot_01Networking Concepts with Socket Programming - Academic Level - Screenshot_02Networking Concepts with Socket Programming - Academic Level - Screenshot_03Networking Concepts with Socket Programming - Academic Level - Screenshot_04

Reviews

Durgesh
August 12, 2023
Every concept Abhishek has taken ample amount of time to explain with live examples and walkthroughs. I have read good amount of books on Networking I but slowly lose interest , this and his other courses have consistently kept me hooked in these subjects. I am considering his courses as my first and final stepping stone to great career path where I can have mastery of Networking and OS. I think doing all his courses is equivalent to well learned Bachelors degree with practical skills. Hoping to complete all his 100+ hr of learning videos in 1 or 2 month . Thank you very much .
Darrell
February 18, 2023
Another amazing course by this team! I highly recommend all their courses. I have at least 5 of there courses
Jim
January 8, 2023
Some of the instructors example, is very messy and no further explanation is added. Also in the development section for Layer 3 Routing (mtrie_node) structure. He only shows some information. But does not show the structure compiled and how it works in detail. This is one of the reasons I bought this course. I've would like to see the instructor use these examples in code and show it live how every part works and common pitfalls etc.
Bryn
November 10, 2022
The courses were thorough with multiple examples for each course which I appreciated. I learned a lot from this course! The sound was inconsistent between lectures, but nothing a quick sound adjustment couldn't fix. I would definitely take more courses from this instructor again!
Patrick
October 10, 2022
Content is good (e.g. description of OSI model) but presentation bad (reliance on outside resources, and varying audio volume in videos)
Sushmita
October 7, 2022
too much of interference. i just need the service for what i have paid. please stop interfering in my learning. if i need help i will ask for it. Nobody has ever done anything meaningful after being spoonfedded....
Rupin
July 24, 2022
This course was what was missing in the college days. We just read the book and never understood it. I used this course as a refresher and am very thankful to the instructor for his efforts in compiling this course. Some issues with audio quality require remaking of certain lectures but nevertheless it was a very enlightening and comprehensive.
Bhanu
July 1, 2022
The course was designed such a way that it helps the students as well as IT professionals who want to switch the domain. There are several other courses available on various networking and IPC concepts, which helps to gain deep understanding of the concepts. It will be easy for anyone to perform better at interviews/work if the implementation of projects/assignments are done. Thank You!
Martin
April 18, 2022
The academic confusing scholary claptrap, all the overviews - we are going to talk about this and that, too many words about the same over and over make me crazy. This is self valuation of teacher that he has not so much to talk about, if he had explained in clear way. So academic people do often.
Tamás
March 29, 2022
I little bit slow, but I need to hunt the gist, I needed to go fast forward sometimes with checking slides.
Hari
December 11, 2021
Pros : Lot of content, value for money. Pointers to some good youtube material (which I actually found easier to watch !). Cons : a. Not cohesive. Content is taken from different courses, so sometimes new terms are presented as understood even though they have not been discussed. b. Audio level is inconsistent. c. I personally found the presentation style difficult to handle - long complicated sentences with unnecessary words, verbal quirks, verbal repetition of trivial points. This resulted in a couple of issues : 1. hard to maintain focus, so could miss the main points, 2. I can't imagine reviewing the course videos - that would be doubly intolerable. Some of the videos could have literally been cut in length by 50% with no loss of information. This style of presentation may be fine for a classroom lecture where people are taking written notes. But you have a recorded video with slides. All the points should be on the slides, which are downloadable. So why the verbal repetition of trivial points ?! The main take away points from each video could be repeated as a written summary in the final slide. This would make reviewing the videos easier.
Rudi
September 25, 2021
The content of this course is very good so far; He explains it so details and clearly. But, the volume is a little bit inconsistent; sometimes it's too low, sometimes it's too high. I would recommend this course to everyone who want to expand their knowledge in computer networking especially in theory
Miguel
August 13, 2021
Excellent course. Very accurate explanations, with a cadence when speaking thats allows you to assimilate all the concepts. Plenty of graphics and detailed explanations. Great course
Ryan
August 6, 2021
The content seems more than sufficient, but it is a little slow and repetitive. That can be good or bad depending on how difficult the material is for the individual. Additionally, it seems hastily put together. The audio levels are frequently off and some videos are linked as YouTube videos instead of uploaded to the course directly despite being made by the same company. Some information seems incomplete (ex. "hosts are vlan unaware". I've read this isn't always true, but is generally), and so far the labs have not been especially informative.
Paul
August 6, 2021
Amazing course I've never seen a course so detailed about complex subjects, I would rate it 1000 stars if I could. But for the love of God guys you are doing yourselves a big disservice by having the very first video of the course(the linux VM setup guide) with that audio quality it may discourage people from taking the course. Especially it's a shame since that video also contains very detailed and useful information. Other than that everything was great I will buy other courses from you :)

Charts

Price

Networking Concepts with Socket Programming - Academic Level - Price chart

Rating

Networking Concepts with Socket Programming - Academic Level - Ratings chart

Enrollment distribution

Networking Concepts with Socket Programming - Academic Level - Distribution chart
1668516
udemy ID
4/29/2018
course created date
4/27/2019
course indexed date
Bot
course submited by