你将学到的
  • OSI 模型和 TCP/IP 模型
  • Linux 的 TUN/TAP虚拟网卡介绍
  • 协议栈网卡 IO 和管理
  • ARP 协议的处理和实现
  • 路由和路由表
  • 端口的概念
  • 网络层到传输层的数据报分发
  • TCP 协议头部详解
  • 协议栈整体概览
  • 实现 TAP网卡的数据处理
  • 以太网数据帧协议
  • IPV4 协议和实现
  • ICMP 协议和实现
  • 协议栈端口管理的实现
  • UDP 协议和实现
  • TCP 原理解析
课程内容
  共6个章节
lab-classic 实验 1 TCPIP 和开放系统互连(OSI)模型

知识点: 1.互联网发展史 2.OSI模型和TCPIP模型 3.家用电脑是如何上网的 4.协议栈整体概览

lab-classic 实验 2 链路层的基本实现

知识点: 1.以太网的基本参数 2.linux的tun/tap虚拟网卡介绍 3.实现tap网卡的数据处理,包括读取与写入 4.协议栈网卡IO和管理 5.以太网数据帧协议 6.arp协议的处理和实现

lab-classic 实验 3 网络层的实现

知识点: 1.网络层的基本功能 2.ipv4协议和代码实现 3.路由和路由表 4.icmp协议和代码实现

知识点: 1.端口的概念 2.端口的类型 3.协议栈端口管理的实现

lab-classic 实验 5 传输层概念及UDP协议

知识点: 1.传输层基本功能 2.网络层到传输层的数据报分发 3.UDP协议和代码实现

lab-classic 实验 6 TCP原理及实现

知识点: 1.tcp协议头部详解 2.tcp的状态解析 3.tcp的可靠性解析 4.tcp的流量控制解析 5.tcp的拥塞控制解析

课程介绍

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

系统认识协议栈的工作原理

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

了解 TCP/IP 分层架构

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

深入了解网络协议

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

适合人群

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

课程信息

  • 学习周期:课程有效期 2 个月,2 个月后实验文档一直可以看,但无法进行在线实验。高级会员有效期内可一直查看文档,高级会员到期后课程失效(不能看文档)。

    提醒:每个实验可开启 6 次在线环境(每次 60 分钟)

  • 课程价格:当前优惠价格 69 元。

  • 企业团报:可获得更多支持服务,请点击购买咨询

课程教师

郑宝杨 共发布过 1 门课程

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

查看老师的所有课程 >
实验楼楼+
实验楼会员
会员
开通会员,即刻开始学习
公众号
实验楼学习助手 实验楼订阅号