Hello guys.
Welcome to our course on network programming from scratch.
And C, let me brief you about this course.
This course is designed to cover most worthy networking concepts and their implementation details.
We have picked up the topics often asked in advances in job interviews.
After doing this course, you will be able to design the networking or in general, the application
or the project in a better way.
You will feel confident in networking based technical interviews.
You will be ready for networking and Linux development jobs in the market.
This course will certainly help you to build your confidence and coding skills.
This course is backed by two big networking projects.
We will help you to build your GitHub portfolio to strengthen your employability in the market.
So guys, this is the table of contents that you will be studying in this course.
The table of contents contains 12 chapters with two projects.
So chapter zero, I have included Chapter zero for those who are absolutely complete beginner with Linux
development environment.
So in chapter zero we will go through the steps regarding setting up Linux development environment on
your local machine.
So those who are familiar with Linux operating system already can skip this section.
Then there are 12 modules in this course so far.
The first module is the OSI model introduction, so this is more or less the basics.
So this is completely theoretical module.
In module two, we will going to learn about how to.
Set up multi node environment on your local machine because it is a networking course, so therefore
you will be needing multi node environment to be set up on your machine so that you can really practice
routing between different nodes in the network.
The module three is about subnetting and IP address mathematics.
In module four, we will going to learn about layer two networking concepts.
In module five, we will going to learn about layer three networking concepts, that is routing and
switching.
Then in module six, we will learn about what are loopback interfaces and what is the significance of
loopback interfaces.
Then in module six, we will also cover troubleshooting tools like Tcpdump and Ping.
Then in module seven we will going to learn about transport layer concepts.
In module eight, we will going to learn about application layer and and we will also learn how to implement
Http server from scratch.
So you can see that we have covered almost all the layers of OSI model from module 1 to 8.
Then in module nine we will going to learn complete socket programming in C.
Then module ten, 11 and 12 are a little bit of advanced concepts.
In module ten, we will going to learn how encapsulation is done in networking and what are the problems
that IP in IP encapsulation solves.
Module 11 is about real timers, so wheel timer is a data structure that is widely used in networking,
and wheel timer is used to periodically send the packet to other machines.
Then in module two, we will going to learn the concept of tlvs.
So Tlv stands for type length value.
So Tlv is actually help us to format and pack the data in a very easy and flexible way.
And using the concept of tlbs, we can do data serialization and deserialization.
That this course is backed by two programming projects and Project one.
We will going to implement distributed transparent memory concept.
So it is a memory that is distributed across several machines.
But to the end user, this memory appears as one single logical memory.
And in project two we will going to implement a mechanism to dispatch the packet periodically using
wheeled timer as a data structure.
So let us discuss the course.
Prerequisites.
It is expected that you have a basic, at least basic knowledge in C and you know how to work with pointers.
All the assignments in this course will be done on the Linux operating system.
Therefore, it is expected that you install the Linux operating system using a virtualization software.
The virtualization software could be VirtualBox or VMware or whatever virtualization software you are
comfortable with.
So we also assume that our audience could be an absolute beginner with Linux and that particular case
need not worry.
We will cover Linux development setup environment on your local machine.
So we will include a lecture which will enable you, which will help you to cover, which will help
you to install and set up the Linux development environment on your machine.
And if you have no knowledge of networking or if you have a bare, bare minimum knowledge of networking,
again, you need not worry.
We again assume that our audience could be heterogeneous and there could be some folks in our audience
who want to start with networking right from the very basics.
So we will pick up every topic discussed in this course from the very basics.
So where networking stands in the job market today.
Networking is one of the oldest and stable areas in the IT.
There are already many product based companies in the market and in addition to those, new startups
are emerging in the field of networking.
With the advent of new technologies such as cloud system on chips, network processors, Internet of
Things.
Networking is one of the fast emerging technology of this decade.
Every year, millions of new users turns into network users or Internet users.
More and more devices are getting attached to the Internet, so the entire networking industry is under
pressure to meet the growing demands of the Internet users.
Hence, a stable jobs and high job security are there in the field of networking.
More and more startups jumping into networking area every year.
So the field of networking is an evergreen area because the usage of the data is increasing each and
every year.
Network equipments have been manufactured for over three decades now and would continue to be, and
there is no substitute for network equipments.
Since product based companies means all the networking companies mostly are product based companies
because they manufacture their switches, their routers, their hubs.
So in the product based companies, we seldom have a work pressure and the jobs are pretty much stable.
And in product based companies, you usually get a good pay.
So one of the best area to pursue the career today is the networking field.
So if you are networking expert, you can jump into cloud computing area.
You can jump into embedded systems.
You can jump into platform or hardware engineering.
You can jump into device driver development areas.
So having worked or having experience in the field of networking gives you a flexibility to move around
different jobs and fields.
And therefore the person with the networking background usually has high availability of jobs in the
market.
Then who should do this course?
So this course is for computer science students who have at least completed their third year of engineering
in their UG.
And this course is for working professionals who are stuck in testing profile or who are stuck in their
testing networking profile.
And want to switch to development jobs because development jobs are pretty much more stable and high
paying as compared to testing jobs.
The students looking to build up their career in high paying, product based companies, not limited
to networking based agencies.
So this course is biased towards covering networking concepts.
It's guaranteed you will learn things which you never heard of in this course.
The content of this course starts from very basic level and progress to advanced concepts.
At each stage the concept is demonstrated.
Through many assignments.
And there are helping resources.
We enlist the helping links documentation ebooks to cover the required topics as we progress into the
course.
There are many thick books available in the market.
Please don't overwhelm yourself.
So not everything which is there in the books of networking is the topic of interest from the interview
point of view.
So please remember, you don't have to eat many thick books which are available in the market.
Just stick to the basics and you will do fine.
Follow the course and you will be at the right place at the right time.
Not everything mentioned in the books is a topic of interview or usable in the networking.
So what next from here?
To be a complete package to join the networking field as a developer.
You must do networking certifications in addition to this course.
So having network certifications on your resume will definitely add more chances of jobs and make your
profile.
Better.
So having a mention of networking certifications on your resume will definitely add value to your resume.