你将学到的
  • OSI 模型和 TCP/IP 模型
  • Linux 的 TUN/TAP虚拟网卡介绍
  • 协议栈网卡 IO 和管理
  • ARP 协议的处理和实现
  • 路由和路由表
  • 端口的概念
  • 网络层到传输层的数据报分发
  • TCP 协议头部详解
  • 协议栈整体概览
  • 实现 TAP网卡的数据处理
  • 以太网数据帧协议
  • IPV4 协议和实现
  • ICMP 协议和实现
  • 协议栈端口管理的实现
  • UDP 协议和实现
  • TCP 原理解析

网络协议栈是当今数据信息的搬运工,因为协议栈的存在,让开发者轻松实现上层应用,才有了今日发达的网络,为了更深入的理解协议栈,本项目参考 Google 开源的 Netstack 项目,用 Golang 编写实现一个用户态的协议栈。该协议栈包含了我们常用网络协议,以太网协议、ARP 协议、IPV4 协议、ICMP 协议、UDP 协议和 TCP 协议。结合 Linux 的虚拟 TAP 网卡,我们可以轻松在机器上实现模拟网络数据报文,进而测试和实验网络协议栈的各个功能。

我们每个人的电脑都有操作系统,而每个操作系统几乎都自带了网络协议栈,比如 Linux,想要研究协议栈的实现,Linux 内核是个很好的研究对象,那为何本项目不讲解 Linux 内核协议栈,那是因为内核协议栈其实很庞大,涉及到的知识也很多,想要在内核上修改和做实验也有一定的门槛。而 Golang 写的网络协议栈,相对来说是协议栈的简写版,但也包含了协议栈的基本功能,所以了解 Netstack 的实现有助于理解协议栈的工作原理,甚至熟悉以后还可以自己实现网络协议的一些功能。

目前的网络协议栈讲的都是 TCP/IP 协议栈,了解 TCP/IP 协议栈就必须要了解 TCP/IP 的分层和架构,了解分层的意义是什么?每层的功能是什么?每层又是怎么实现的?这些问题都会在该项目找到答案。

网络协议是信息传输的载体,网络协议是主机通信之间的语言,了解网络协议相当于就了解了协议栈,所以本项目基本是围绕了网络协议来讲解。本项目不仅讲解网络协议的格式,网络协议实现的机制,还讲解了网络协议在协议栈中的实现。通过编写和分析代码,来深入理解网络协议栈的原理。

图片描述

适合人群

  • 熟悉 Golang 网络编程,希望深入了解协议栈底层是怎么工作的。
  • 对网络接口编程有一定的了解,但想跟进一步理解网络的原理。
  • 想编写自定义网络协议,却不知如何设计协议时,可以参考协议栈的实现。
  • 了解 TCP 协议,想更深入的理解 TCP 的工作原理。
  • 熟悉 TCP 拥塞控制,想自己实现或修改 TCP 拥塞控制来加速网络。

课程信息

  • 学习周期:课程有效期 2 个月,2 个月后无法进行在线实验,但可查看文档内容。高级会员有效期内可一直学习,到期后课程失效,且无法查看文档。部分云主机实验环境因成本较高,存在开启次数限制。关于课程退款等相关注意事项说明,请阅读 用户付费协议
  • 版权说明:课程内容为实验楼原创或实验楼在原作者授权下制作。未经书面同意,擅自爬取、转载和再分发课程内容,均将受到严肃追责。
  • 企业团报:企业购买,请点击 企业用户咨询
课程教师

郑宝杨 共发布过 1 门课程

golang高级工程师,四年golang和网络开发经验,独立开发过流媒体服务器,目前从事SDWAN网络开发,负责网络架构和协议的实现。 喜欢编程和研究底层技术,比如: golang的runtime实现和linux内核协议栈。 github id: https://github.com/zboya blog: https://zboya.github.io

查看老师的所有课程 >
蓝桥楼+
实验楼会员
会员
开通会员,即刻开始学习