This course is about strengthening the Networking concepts and fundamentals with assignments and projects 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
3. Explain the L3 routing concepts - IP Addresses and IP protocol
4. Understand various ways to design a Linux TCP/UDP server program in C
5. Understand Socket programming in C
6. Understand the Networking devices functioning - L2 switch and L3 router
7. Understand packet Journey through the layers of TCP/IP stack
8. Design and implement HTTP Webservers from scratch
9. Read and manufacture the network packets from scratch
10. Do various coding assignments and projects to hands-on the concepts
11. Understand the concept of TLVs
12. Concept of packet Encapsulation
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.
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 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 needs 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 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 does 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.
0. Setting up Linux Development Environment on your machine
1. OSI Model Vs TCP/IP Stack
2. Multi-node setup environment on your machine
3. Subnetting and IP address
4. Layer 2 Networking concepts
5. Layer 3 Networking concepts
6. Virtual LANs (VLANs)
7. Router to Vlan Forwarding
8. Inter Vlan Routing
9. Network troubleshooting tools
10. Transport Layer
11. Socket programming concepts
12. Application Layer
13. Domain Name System
14. IP-in-IP Encapsulation/Tunneling
15. Concept of TLVs
Abhishek Sagar has been engaged with coding and software for more than 8 years. He's an L3 Protocol developer at Juniper. His rich working experience is backed by graduation from IIT Bombay as an MTech specialist. Abhishek is restless for more in-depth knowledge himself, always working out the ways to integrate what he knows in practical ways. No surprise that he’s been able to accumulate a great deal of tech-wisdom. The good news is that he’s also happy to train and encourage people on BitDegree – the next-gen education platform.
Probably, the strongest Abhishek Sagar’s side is his proficiency in Linux network development field. You can use the opportunity to get familiar and confident with Linux taking his courses on BitDegree. You’ll strengthen the networking concepts and fundamentals in a very practical way. You’ll complete assignments and work on a project where you’ll use all the theory provided by Abhishek. His chosen teaching methods will make sure you build a proper understanding and that you’ll get all the questions explained.
Abhishek Sagar is your #1 point of reference when it comes to Linux system programming. Let him take the privilege to guide you and bring useful additions to your resume!