A 部分 – 网络项目 – 在 C 中实现 TCP/IP 堆栈
C/C++ Linux 项目、网络套接字编程、构建 TCP/IP 堆栈、期末项目、C 中的 L2 和 L3 实现
讲师:Abhishek CSEPracticals
口袋资源独家Udemy付费课程,独家中英文字幕,配套资料齐全!
用不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。
你会学到什么
- 从头开始自己实现 TCP/IP 协议栈的第 2/3 层
- 编写自定义 CLI 命令以配置网络拓扑
- 从头开始构建网络拓扑
- 实施路由和交换算法 – 实用的方法
- 定时器、GLthreads、库集成、Makefile、项目模块化技术
- 使用版本控制系统 git 从头开始管理和开发大型源代码
- 这是 100% 的编码课程,理论最少
- 在网络领域的其他面试中,您将被要求解释基本路由概念,所以不要错过这门课程!
要求
- 基本的 L2 和 L3 路由知识非常必要
- 擅长C或任何一种主流语言的编码
- 必须知道如何使用 git – 至少是基础知识
- 擅长 C 中的指针和内存管理技能
描述
学生水平:中级到高级到工作专业人士,编码初学者请原谅这门课程。
与您的教授交谈:将此项目用作您最后一年的本科生项目
注意:如果您要购买此课程,请不要购买我的其他课程 – “Integrate CLI interface to you C/C+++ Project”。这是本课程中已包含的所有视频。
这是一门 100% 基于 C 语言编码的课程,我们将从头开始开发一个 TCP/IP 堆栈,其中包含数据链路层、网络层和应用层。这是一个分成 6 个小项目的大项目。姊妹课程(Part-B)的开发正在进行中。
本课程将使您为成为核心网络开发人员在行业中的角色做好准备。如果您对 L2 路由的基础知识(包括 ARP、L3 路由)非常了解,那么您可能已经具备了这个基于项目的课程所需的知识。如果没有,您应该注册我的课程 – “网络概念和从头开始编程”并且至少完成第3 至 5节。对于 VLAN 实施,第6、7 和 8节是必需的。 我们现在将在 C 中实现这个理论。如果您有其他喜欢的语言,请随意使用该语言学习这门课程,我不介意,但我将只用 C 语言解释逻辑和展示演示。
在本课程中,我们将通过 6 个网络项目实施 TCP/IP 堆栈演示。以下所有项目都应按照所列的相同顺序完成。
项目 1:构建路由器和交换机的多节点拓扑仿真
项目 2:实施数据链路层(L2 路由),包括 ARP
项目 3:实施 L2 交换(基于 Mac 的学习和转发)
项目四:实现基于Vlan的Mac学习和转发
项目 5:实施网络层(L3 路由)
项目 6:案例研究:实施 IP 隧道(可选)
在这些迷你项目中,我们将通过 TCP/IP 堆栈层(= OSI 模型)实现向上和向下的数据包旅程。我们将实施 TCP/IP 协议栈!本课程中有最少的套接字编程。并非每个网络项目都必须基于套接字编程。
在此过程中,我们将在解决问题的过程中讨论和实施我们遇到的新挑战的解决方案。根据学生对这门课程的接受程度,我会根据学生的反馈给这门课程增加更多的项目。
完成这些项目后,您将能够:
1. 说出为什么需要数据链路层和网络层
2. 如何在 TCP/IP 栈上设计新的应用协议(就像 ICMP、HTTP 等都在 TCP/IP 栈上工作一样)
3. 亲自动手进行工业级网络编程。
4. 学习烹饪、解析和读取数据包缓冲区
5. 理解端到端的网络应用和TCP/IP栈的架构和设计
6. 征服网络开发工程师角色的面试
7. 美化你的GitHub,给你的HAT加一个强项目,本课程期望LOCs超过10k!
该项目将填补理论知识与其实施版本之间的差距。怎么听上去是自己亲手写代码解决ARP、包转发等问题,用这个项目装点你的简历和GitHub吧。
本课程分为两 部分:
A 部分– 在课程的这一部分中,我们将构建由路由器、交换机和连接它们的链路组成的网络拓扑基础结构。节点还可以与其邻居交换数据包。基本上,我们想在这部分课程中模拟一个完全可编程和可配置的网络拓扑。这是项目 1。
B 部分– 课程 A 部分中的可配置网络拓扑构建应用于实施上面列出的其余五个项目 [2-6]。
We shall be setting up all the required infrastructure to mimic the network topology – and that itself is a mini project altogether. We shall be creating nodes, links connecting nodes, configuring network parameters on nodes, sending and receiving traffic streams – All in one project. This is Megaproject, expected LOC may go to tens of thousands if we keep on adding TCP/IP stack features onto it. The sky is the limit.
这个项目最好的事情是——你会在旅途中学到很多其他的东西,包括设置定时器、网络拓扑构造、Glthreads——链表的胶合方式、使用 Makefile 构建项目,我什至不是在谈论学习软件设计技能。附加材料已添加到课程的附录部分。我们将在单独的文件夹中对项目进行模块化,每个文件夹都包含实现特定 OSI 层功能的代码,是的,我们将从头开始。
警告 :
1. 绝对的初学者,在基本的数据结构和指针上苦苦挣扎,请原谅这门课程。你没有为这个项目做好准备。请先花时间学习基础知识。
2. 使用的机器: Ubuntu 19.04,GCC 编译器。因此,如果您使用其他编译器或机器,我的代码可能无法在您的机器上编译。
目录 :
*********
A部分
*********
[ 项目 1]
第 1 节 KYC(了解你的课程)
第 2 节开发通用图拓扑
- 图数据结构
- 图相关API
- 创建我们的第一个静态图
第 3 节 网络图拓扑的构建
- 将网络拓扑详细信息添加到图中
- 用于配置网络拓扑的 API
- 没有第一个 Hello World 网络拓扑就做好准备
第 4 节命令行集成
- 将 CLI 接口集成到项目中
- 编写自定义命令以显示网络拓扑详细信息
第 5 节通信设置
- 向出接口上的 Nbr 节点发送数据包
- 侦听和监视多个套接字
- 在接口上接收数据包
*********
B部分
*********
第 6 节 B 部分议程
[ 项目 2]
第 7 节 TCP/IP 堆栈开发入门
- 界面模式
- 以太网报头格式
- 以太网报头操作分配
- 数据包处理标准
- 数据包缓冲区管理
第 8 节。实施第 2 层(数据链路层)- ARP
- ARP 实施入门
- ARP 消息格式和示例
- 创建 ARP 表
- ARP 表上的 CRUD API
- 使用 ARP 的 CLI
- ARP 周期和 ARP API
- 准备和发送 ARP 广播请求消息
- 处理 ARP 广播请求消息
- 发送 ARP 回复消息
- 启动框架入口之旅的 API
- 处理 ARP 回复消息并在 ARP 表中创建一个 ARP 条目
- ARP 实战
[ 项目 3]
第 9 节。实现第 2 层(数据链路层)- L2 交换
- 将节点配置为 L2 交换机的 API
- 使用 L2 交换机和主机设置新拓扑
- 实施 MAC 学习和转发算法
- L2交换机的MAC表管理
- 使用 ARP 测试 L2 交换行为
[ 项目 4]
第 10 节第 2 层 – 实现基于 Vlan 的转发
- 目标和先决条件
- 802.1Q Vlan hdr 格式
- Vlan 标记的以太网报头数据结构
- 用于确定标记帧与未标记帧的 API
- 标记 <–> 未标记帧转换
- 基于 Vlan 的 MAC 转发 – 进一步的路线图
- 帧入口条件表
- 帧入口完成
- 帧出口条件表
- 出口帧完成
- 测试基于 Vlan 的转发
[ 项目 5]
第 11 节设置第 3 层路由基础设施(网络层)
- 目标和先决条件
- L3 路由表设置
- 用于路由表管理的 CRUD API
- L3路由安装
- 定义 IP HDr 格式
- 添加 Ping CLI
- 网络与应用层交互
- 重温 L3 路由概念
- 货运案例
- 主机直接交付案例
- 本地交付案例
- 自平案例
- L3 路由流程图
第 12 节。第 3 层路由流程图实现
- 从 L2 到 L3 的有效载荷数据传输
- 第 3 层流程图实施 – 逐步
- 第 3 层操作流程图实施
- 第 2 层操作流程图实施
- 测试我们项目的 Beta 版本
第 13 节。按需 ARP 解析
- 问题陈述
- 解决策略
- 数据结构增强
- ARP Sane 条目创建
- ARP 待定列表处理
- 我们完整项目的最终演示
[项目6]
第 14 节实施 IP-IN-IP 封装(隧道)
- 实施 IP-IN-IP 封装(隧道)
项目的未来扩展。学生应该自己推动这一进程。
第 15 节 两个 Vlan 之间的路由(Inter Vlan Routing)
本课程适合谁:
- 在 UG 完成网络课程的学生
- 试图闯入网络开发角色的职业人士
- 那些想要将他们与人群分开的人
- 那些想要达到卓越,与他人平起平坐的人