GO语言模拟实现TCP/IP协议

训练营
关注

本课程旨在让大家了解网络协议的基本概念及原理,同时我们会使用GO语言模拟实现其传输过程。在试验中我们会详细介绍TCP/IP、UDP、链路层、传输层及端口的概念和工作模式,并在代码中完成其具体实现,能够让大家非常深入和详尽的了解这些基础网络知识。

GO 语言模拟实现 TCP/IP 协议

课程介绍

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

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

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

了解 TCP/IP 分层架构

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

深入了解网络协议

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

从这个训练营你能够学到什么

  • 电脑是如何上网的
  • linux 的虚拟网卡
  • 网络协议栈的分层架构
  • 网络协议报文格式
  • 网络协议之间的交叉配合
  • 深入分析 tcp 的连接、可靠性、流量控制和拥塞控制机制

项目架构

+----------------------+
|      application     | application
+----------------------+
|        tcp/udp       | transport
+----------------------+
|    arp/ipv4/ipv6     | network
+----------------------+
|         vnic         | nic_manager
+----------------------+
|       tap,eth        | link
+----------------------+
|         os           | os
+----------------------+

适合人群

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

课程信息

  • 学习周期:课程有效期 2 个月,2 个月后实验文档一直可以看,但无法进行在线实验。

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

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

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

实验列表

  • 实验 1:TCPIP 和开放系统互连(OSI)模型
  • 实验 2:链路层的基本实现
  • 实验 3:网络层的实现
  • 实验 4:端口
  • 实验 5:传输层概念及 UDP 协议
  • 实验 6:TCP 原理及实现
GO语言模拟实现TCP/IP协议
实验楼楼+
实验楼会员