前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【斯坦福计网CS144】Lab5终结笔记

【斯坦福计网CS144】Lab5终结笔记

作者头像
SarPro
发布2024-02-20 15:48:02
1900
发布2024-02-20 15:48:02
举报
文章被收录于专栏:【计网】Cisco

⛳️1. 斯坦福大学计网实验室

【中文精翻】【斯坦福大学】CS144 计算机网络介绍!!!

1.1 斯坦福大学之CS144

在斯坦福大学,CS144是网络世界的大门。这门课程不仅传授网络系统的根基原理和框架,更是探索计算机网络核心概念的摇篮。IPTCP路由,这些网络骨架的秘密将被揭示,而学子们将会深入了解网络构建、管理和维护的神秘奥秘,以及数据在这个网络舞台上的华丽演绎。 CS144采用炼金术般的教学模式,融合理论授课、资料阅读、编程挑战和实验探索,助力学生深度探究计算机网络的魅力。这门课程要求学生进行一系列项目和作业,可能包括网络协议的创新设计、仿真模拟和深度分析,唤醒学子们将理论知识嵌入实际的巧思。 换而言之,CS144旨在孕育学生对计算机网络的深刻理解,为他们奠定构建、管理和优化网络系统的必备基石和技能。在这个网络狂潮中,CS144为学子们描绘出一幅璀璨的网络未来图景。


1.2 CS144实验室之Lab5

CS144Lab5通常是关于网络传输控制协议(TCP)的实验。在这个实验中,学生们将深入探索TCP协议的工作原理、流量控制和拥塞控制机制。 实验内容包括:

  1. 实现简单的TCP协议: 学生们被要求使用编程语言(如Python或者C++)实现一个简单的TCP协议栈,模拟TCP连接的建立、数据传输和连接关闭过程。这可能包括处理序列号、确认号、超时重传以及拥塞控制等功能。
  2. 流量控制和拥塞控制实验: 学生们需要设计实验来观察和评估TCP协议中流量控制和拥塞控制算法的效果。他们可以通过模拟不同网络条件下的数据传输、改变窗口大小或者引入数据包丢失来评估TCP协议的性能。
  3. 性能分析和比较实验: 实验任务之一是对比不同的TCP变种(如TCP Tahoe、Reno、NewReno等)在特定条件下的性能,了解它们在拥塞控制和流量控制方面的差异,并分析其优缺点。

这些实验有助于让学生们深入了解TCP协议的运作方式,并通过实践加深对网络传输控制的理解。他们将有机会通过实验验证理论概念,观察TCP协议在不同情境下的行为,从而更好地掌握网络协议的本质和运作机制。


⛳️2. Lab5

2.1 实验目的

1 实现一个简单的网络接口,将IP数据报以数据链路层以太网帧的形式进行转发

2 深入理解地址解析协议ARP

3 深入立即以太网帧的转发过程


2.2 实验说明

1lab5中,我们将使用堆栈实现一个网络接口:连接Internet数据报在全球传播和链路层以太网帧单跳传播。该接口可以作用于TCP/IP实现之下,但是当我们在实验室6中构建路由器时,也可以将该组件在网络接口之间传递路由数据报。

2lab01234中,我们编写了一个TCP实现,它可以成功地与使用TCP的任何其他计算机交换TCP段。但是,这些TCP段是如何传递到对等的TCP实体上的?实际上,这个实现有几种选择:

(1)TCP-in-UDP-in-IPTCP段可以携带在用户数据报的数据负载中。例如,Linux中提供了一个接口(UDPSocket),它允许应用程序只提供用户数据报的有效负载和目标地址,内核负责构造UDP头、IP头和以太网头,然后将数据包发送到适当的下一跳。内核确保每个套接字都有本地和远程地址、端口号的唯一组合。由于是内核将这些写入UDPIP头,所以它可以隔离不同的应用程序。

(2)TCP-in-IP。在通常的用法中,TCP段总是直接放在Internet数据报中,在IPTCP报头之间没有UDP报头,这就是“TCP/IP”。这实现起来有点困难。Linux提供了一个称为TUN设备的接口,它允许应用程序提供整个Internet数据报,而内核负责其余的工作(写入以太网标头,并通过物理以太网卡实际发送,等等)。但是现在应用程序必须构造完整的IP头本身,而不仅仅是有效负载。实际上,lab4提供了一个表示Internet数据报并知道如何解析和序列化自身的对象(tcp helpers.{hh,cc}),和在IP中封装tcp段的逻辑(现在可以在tcp helpers/tcp over IP .cc中找到)

(3)TCP-in-IP-in-Ethernet。在上述的几种方法中,我们仍然依赖Linux内核来实现部分网络栈。每当代码将IP数据报写入TUN设备时,Linux必须以IP数据报作为有效负载构造一个链路层以太网帧。这意味着Linux必须根据下一跳的IP地址计算出下一跳的以太网目的地址。如果它还不知道这个映射,Linux广播一个查询,问:“谁声明下面的IP地址?”你的以太网地址是什么?,然后等待回复。实际上,这些功能由网络接口执行:一个将出站IP数据报转换为链路层(如以太网)帧的组件,反之亦然。

3 在本周的实验中,我们将实现一个网络接口,

并将其放在TCP/IP栈的最底部。我们的代码将生成原始以太网帧,这些帧将通过一个称为TAP设备的接口传递给Linux——TAP设备。类似于TUN设备,但更低级,因为它交换原始链路层帧而不是IP数据报。大部分的工作是为每个下一跳的IP地址查找(和缓存)以太网地址。这方面的协议被称为地址解析协议(ARP)


2.3 实验内容

1 实现网络接口

(1)输入命令”cd sponge/build”进入build目录,输入命令”git merge origin/lab5-startercode to date”获取实验源代码。输入命令”make”进行编译,编译结果如图6-1所示。

代码语言:javascript
复制
cd sponge/build
git merge origin/lab5-startercode to date

​图6-1 编译结果

(2)输入命令” vim ../libsponge/network_interface.hh”进入文件并如图所示修改文件代码。代码源码见附录。

代码语言:javascript
复制
vim ../libsponge/network_interface.hh

​图6-2 文件内容

(3)输入命令” vim ../libsponge/network_interface.cc”进入文件并如图6-3-6-4所示修改文件代码。代码源码见附录。

代码语言:javascript
复制
vim ../libsponge/network_interface.cc

6-3 文件内容_1

​图6-4 文件内容_2

(4)输入命令”make”进行编译,编译结果如图6-5所示。

代码语言:javascript
复制
make

​图6-5 编译结果

(5)输入命令” make check_lab5”对lab5进行检查,检查结果如图6-6所示。可以看到,所有的测试样例都通过

代码语言:javascript
复制
make check_lab5

​图6-6 check结果


2.4 实验体会

1lab5实验中,我们遇到的一个典型问题是:当系统在发送一个ARP request后,如果没有响应要五秒后重发,且在上一个请求被正常响应之前其他的请求都要排在后面。如果没有注意到这一点就可能导致最后make check_lab5出现一些错误提示

2 通过这次lab5实验,我们了解到TCP报文有三种方式可被传送至远程服务器。第一种是TCP-in-UDP-in-IP,这是内核完成的任务,因此内核可以确保每个套接字都具有本地地址与端口,以及远程地址与端口的唯一组合,同时能保证不同进程之前的隔离。第二种是TCP-in-IP,当用户将 IP 报文发送给 TUN 设备后,剩余的以太网报头构造、发送以太网帧等的操作均会由内核自动进行,无需用户干预。第三种是TCP-in-IP-in-Ethernet,它将会把待出口的 IP 报文转换成链路层(以太网)帧等等,之后将链路层帧发送给 TAP 虚拟网络设备,剩下的发送操作将会由它来代为完成。

3 通过这次lab5实验,我们了解到适配器之所以除了有网络层地址(IP地址)以外,还会有链路层地址(MAC地址)的原因是因为局域网是为了任意网络层协议而设计,并非只用于 IP 和因特网。如果适配器使用 IP地址而不使用 MAC 地址,那么每次适配器移动或重启时,均需重新配置地址。由于适配器同时拥有网络层和链路层地址,因此需要相互转化。而这种转换的任务就由地址解析协议来完成。ARP 类似于 DNS 服务,但不同的是,DNS 为任何地方的主机来解析主机名,但 ARP 只能为在同一个子网上的主机和路由器接口解析 IP 地址。


📝总结

斯坦福大学的CS144实验从Lab0到Lab7涵盖了广泛的网络系统和计算机网络主题。Lab0往往是介绍性的,可能涉及设置实验环境和初步概念。逐步进入Lab1至Lab7,学生将涉及更深层次的网络协议、编程和系统设计。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ⛳️1. 斯坦福大学计网实验室
    • 1.1 斯坦福大学之CS144
      • 1.2 CS144实验室之Lab5
      • ⛳️2. Lab5
        • 2.1 实验目的
          • 2.2 实验说明
            • 2.3 实验内容
              • 2.4 实验体会
              • 📝总结
              相关产品与服务
              云服务器
              云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档