本系列是北航计算机学院于 2024 年春季学期开设的核心专业课《计算机网络实验》课程的实验报告记录,实验形式为两人组队实验。由于学习过程中掌握并不牢靠,如有错误请读者不吝赐教!

应用层实验

前半部分为实验的实际操作环节,后半为实验报告内容的填写。

实验内容

  • DNS 协议分析
  • HTTP 分析
  • SMTP 分析
  • FTP 分析
  • DHCP 分析

DNS 协议分析

实验说明

DNS 协议

DNS 是域名系统(Domain Name System)的缩写,是一种分层次的基于域的命名方案,主要用于将主机名和电子邮件目标地址映射成 IP 地址。

  • 域名空间、资源记录:构成 DNS 的分布式数据库系统
  • 域名服务器:维护分布式数据库系统的服务器,答复查询请求
  • DNS 解析器:在 DNS 客户机上的一个进程,用于和服务器通信,获取域名解析的结果

DNS 查询

DNS 查询通常有两种方法:递归查询和迭代查询。一般采用递归和迭代相结合的查询方法,示例见本小节末尾主机查询 www.buaa.edu.cn IP 地址的流程。

  • 递归查询:主机向本地域名服务器请求解析域名时,若没有请求结果则由本地域名服务器代为查询,整个过程是递归查询,对于主机来说查询的压力较小
  • 迭代查询:本地域名服务器自上至下逐层迭代查询根域名服务器、顶级域名服务器和权限域名服务器,若无目标域名则返回几个下一级的服务器(例如根域名服务器没有就返回几个顶级域名服务器)直至本地域名服务器获得结果,再保存并发送给请求主机,查询压力主要在本地域名服务器上
image-20240505183857797

DNS 服务器软件

课程使用的 DNS 服务器软件是 Simple DNS Plus 软件

  • 查询 DNS 缓存信息:Tools - DNS Cache Snapshot (根域名服务器在 root/net/root-servers 目录下)

本地域名服务器配置:

  • 修改网络连接中首选 DNS 服务器的 IP 地址为本机 IP
  • 运行软件,Tools - Options - General - 勾选 Run as windows service
  • DNS requests 选项卡中选中本机 IP 地址,使得本机作为本地域名服务器

实验内容

  1. 进行实验组网:配置 PCA ~ PCC 的 IP 地址、子网掩码、网关和首选 DNS 服务器,注意路由器 R1 的 E0/1 端口 IP 地址要根据分配的机器组号查表后设置

image-20240505190403634

  1. 运行 PCA、PCC 的 Simple DNS Plus 程序,配置 DNS 服务器
  2. 配置路由器的 NAT 功能,确保能够上网
[R1]acl number 2001     
[R1-acl-2001]rule permit source 10.0.0.0 0.0.0.255
[R1-acl-2001]rule deny source any、
[R1]nat address-group 1
[R1-address-group-1] address 192.168.5.x 192.168.5.x+4
# 这条命令定义了一个包含5个公网地址(5~9)的地址池,地址池名称为1
[R1]interface e0/1
[R1-Ethernet0/1]nat outbound 2001 address-group 1
# 在出接口E0/1启用地址转换
[R1]ip route-static 0.0.0.0 0.0.0.0 192.168.5.1
  1. 清空浏览器历史记录,但不关闭浏览器,命令行清空计算机 DNS ipconfig /flushdns
  2. 清空 DNS 服务器缓存:Tools - Clear DNS cache
  3. 在 DNS 服务器和本地计算机上分别进行报文截获,在 PCB、PCD 上访问 www.buaa.edu.cn,观察 DNS 解析的过程。

本次实验发现,与往年有很大不同,本地域名服务器截获的 DNS 报文中无法看到多次的迭代过程,大多数情况是:本地域名服务器收到 DNS 解析请求后,向根域名服务器发送查询请求,根域名服务器直接返回查询结果。无法看到与教材中所说的顶级域名服务器、各级授权域名服务器的多级迭代查询。
我们初步的解释是:
(1)根域名服务器进行了升级,能够保存了大量常见的 DNS 域名解析结果,尽量按递归方式直接返回查找的结果,避免多级迭代,提高了效率。如下图,我们尝试解析了多个地址,都是根域名服务器直接返回结果。
对于这种情况,请大家根据实验结果,如实填写报告。
(2)根域名服务器查找不到结果的情况(例如,查找一个不存在的域名),会给本地域名服务器返回顶级域名服务器地址集合。由本地域名服务器向顶级域名服务器发起迭代查询,但顶级域名服务器也改变了,也尽量按递归方式回答。回答不了的,仍然返回顶级域名服务器地址聚合,不再返回下级域名服务器地址。本地域名服务器遍历顶级域名服务器集合仍然没有找到答案,视为无效域名,返回域名解析失败消息。
如果有兴趣,同学们可以尝试访问比较生僻的域名,或者 ping 一个不存在的域名,例如:ping www.buaa.com.cn,可以看到部分迭代过程。

  1. 报文分析部分可见实验报告部分 3 题

HTTP 分析

实验说明

HTTP 协议

超文本传送协议(HTTP)是万维网客户程序与万维网服务器程序之间的交互所要严格遵守的协议,使用 TCP 连接,属于应用层协议。

HTTP 的工作流程:

  1. 浏览器分析页面 URL
  2. 请求 DNS 解析目标 IP 地址
  3. 域名服务器解析后返回应答
  4. 浏览器与目标 IP 的服务器的指定端口建立 TCP 连接
  5. 浏览器发起 GET 请求,获取网页内容
  6. 文件传输后关闭 TCP 连接

实验内容

  1. 停止 Simple DNS Plus,修改各台 PC 的 DNS 服务器为 202.112.128.51(北航 DNS 服务器,备用服务器是 *.50)
  2. 开启 Wireshark 进行报文截获
  3. 访问 www.buaa.edu.cn,关闭页面
  4. 分析截获的报文内容

SMTP 分析(电子邮件相关协议分析)

实验说明

电子邮件系统

一个电子邮件系统应具有 3 个主要组成构件:用户代理、邮件服务器以及电子邮件使用的协议

  • 用户代理:用户和电子邮件系统的接口
  • 邮件服务器:每个 ISP 都有邮件服务器,用于接收和发送邮件

电子邮件发送接收的过程:

  1. 发信人调用用户代理编辑邮件,通过 SMTP 将邮件发送给邮件服务器
  2. 邮件服务器将邮件放入缓存队列
  3. 发送端的 SMTP 客户进程向接收端的 SMTP 服务器发起 TCP 连接,发送完毕后关闭连接
  4. 收到邮件后收信人在收信时调用用户代理,使用 POP 协议将自己的邮件从邮件服务器取回

SMTP 协议只能传送 ASCII 码,MIME 协议定义了传送非 ASCII 码的编码规则。

SMTP 协议

简单邮件传输协议(SMTP)是电子邮件的发送协议。发送端的客户进程直接向接收端邮件服务器发送,只能传送打印 ASCII 的邮件。

SMTP 协议的工作过程:

  1. 客户端向服务器申请建立 TCP 连接,建立后服务器发出 220(服务就绪)
  2. 客户端向服务器发送 HELO 命令,同时附上发送方的主机名
  3. 传送从 MAIL 命令开始(包含发信人的地址)
  4. 服务器返回 250(OK)
  5. 接着客户端发送 RCPT 命令,表示将邮件发给哪些收信人(每收到一个 RCPT 都要返回对应的信息)
  6. 客户端发送 DATA 命令,服务器返回 354(可以接收)或 421、500
  7. 客户端发送邮件内容,发送完毕后追加 \r\n,表示邮件内容结束
  8. 服务器检测到邮件结束后发送 250(OK)
  9. 客户端发送 QUIT 命令,服务器返回 221

Magic Winmail Server 与配置

实验内容

  1. 如图进行组网配置:添加 PCD 的 IP 地址

image-20240506185704590

  1. 在 PCB、PCD 上配置邮件服务器,PCA、PCC 上配置用户代理(Foxmail)
  2. 运行 PCB、PCD 的 Winmail 软件,从 PCA、PCC 向自己已有的邮箱发送邮件
  3. 在用户代理截获报文分析向发送端邮件服务器建立连接的过程
  4. 在发送端邮件服务器截获报文分析向接收端邮件服务器建立连接的过程
  5. 配置用户代理的 POP3 服务器地址,开启报文截获,再收取邮件
  6. 分析整个过程中的 POP3 报文,分析与 SMTP 有什么不同

FTP 分析

实验说明

FTP 协议

文件传输协议(FTP)采用两个 TCP 连接来传输文件。

  • 控制连接:以通常的客户服务器方式建立,服务器默认打开 FTP 端口 21,控制连接进行命令的传输
  • 数据连接:每当一个文件在客户和服务器之间进行传输时,就创建一个数据连接

实验内容

  1. 进行组网配置:配置 PCA、PCB 的 IP 地址与子网掩码

image-20240506194605617

  1. 在 PCA 上配置一个 FTP Server:
    • 设置用户名密码
    • 更改 FTP Server 的根目录
    • 配置用户权限
  2. 开启报文截获,在 PCB 上互联网访问 FTP 服务器(PCA 地址)并进行登录
  3. 分析报文内容
  4. FTP使用资源管理器,关闭匿名登陆

DHCP 分析

实验说明

动态主机配置协议(DHCP)是一种能够自动分配 IP 网络地址的通信协议。DHCP 使得中心节点拥有监控、分配 IP 地址的能力,当计算机登录网络时,能够自动获得 IP 地址

客户端与 DHCP 服务器交互的过程:Discover → Offer → Request → Ack

  1. 广播发送 DHCP Discover 报文,寻找 DHCP 服务器
  2. 服务器接收到 DHCP Discover 报文后会进行响应,从未分配的 IP 地址中选择一个分配给 DHCP 客户端,返回u一个包含 IP 地址和设置的 DHCP Offer 报文
  3. DHCP 客户端接收到 Offer 报文后选择第一个 Offer 报文,广播回发 DHCP Request 报文,表示已经接收到 IP 地址
  4. 服务器接收到 Request 报文后,再发送一个 DHCP Ack 报文,发送 IP 地址和其他设置
  5. DHCP 客户端接收到 Ack 报文后,确定使用该 IP 地址,将其 TCP/IP 与 网卡绑定

当客户端再次连入该网络时,直接发送包含上一次获得 IP 的 DHCP Request 报文,如果服务器允许继续使用该 IP 地址就正常返回 Ack,否则返回 Nack,客户端重新从 Discover 报文开始获取 IP 地址

实验内容

  1. 进行组网配置:设置各台 PC 为自动获取 IP 地址

image-20240506201738205

  1. 进行报文截获
  2. 修复本地连接
  3. 分析截获的报文

1

选择本地 DNS 服务器第一次向 Internet 发出的 DNS 请求报文和对应的 DNS 应答报文(Transaction ID 字段应该相同)

image-20240506213343065

2

客户机向本地域名服务 器发送的查询报文 中 Flags 字段中 Recursion desired 位置 1 表示使用递归查询 ;本地域名服务器向 Internet 中的 DNS 服务器发送的查询报文中 Flags 字段中Recursion desired 置 0 , 表示使用迭代查询。试结合递归查询和迭代查询的特点分析这样做的原因

  • 使用递归查询的原因是为了简化客户机的查询过程。客户机将繁琐的查询过程交给了本地DNS服务器处理,减少了客户机的负担和复杂性。
  • 使用迭代查询的原因是为了将查询过程分布到整个DNS系统中,减轻单个DNS服务器的负载压力。虽然本地DNS服务器需要进行多次查询交互过程,但整个DNS系统的负载更为均衡。

3

image-20240506213322137

image-20240506213805565

image-20240506213608907

  • Queries:包括查询类型(例如A记录、MX记录等)和查询类(通常是IN,表示Internet)
  • Answers:记录类型(如A、MX、CNAME等)、生存时间(TTL,Time To Live)、记录类(通常是IN)和记录数据(如IP地址)
  • Authoritative nameservers:提供了权威名称服务器的信息,表明哪些服务器是对查询域名有最终解释权的
  • Additional records:提供权威名称服务器的IP地址或其他辅助信息

4

DNS客户端如何和DNS服务器协商是否使用递归查询?

DNS查询方式的协商主要通过DNS报文中的Flags字段中的Recursion Desired (RD)位来实现。客户端发送RD=1时意味着递归查询,返回时RA=1则说明进行了递归查询,反之则为迭代查询

对比DNS请求报文,DNS应答报文中多了哪些字段?这些字段传递什么信息?

DNS请求报文主要包含Header部分和Queries部分。而DNS应答报文相比请求报文,多了以下三个字段:Answers, Authoritative nameservers和Additional records。

  • Answers字段:这个字段包含了查询结果。每个查询结果包含了查询的域名,类型(例如A类型表示返回的是IPv4地址),类别一般是IN,表示Internet,生存时间(TTL),以及资源数据(例如IP地址)。
  • Authoritative nameservers字段:这个字段包含了对查询有权威的DNS服务器的信息。每个权威名称服务器记录包含服务器的域名,类型,类别,生存时间和服务器的资源记录。
  • Additional records字段:这个字段包含了一些额外的有用信息,例如权威名称服务器的IP地址。这样客户端在得到应答后可以直接联系权威名称服务器,而不用再进行额外的查询。

当一个DNS服务器可以直接提供查询结果时,响应报文中会有Answers字段;当它需要引导客户端到另一个DNS服务器时,会提供Authoritative nameservers字段;当它提供了一些额外的有用信息时,会提供Additional records字段

5

image-20240506214316903

6

DNS(Domain Name System)主要使用两种传输层协议:UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)。默认情况下,DNS主要使用UDP协议,端口号为53。然而,在某些情况下,DNS也会使用TCP协议,同样在端口53上。

  1. UDP是一种无连接的协议,它不需要像TCP那样在传送数据之前建立连接。这意味着使用UDP可以减少开销,加快数据的传输速度,这对于DNS这种需要快速解析的服务来说非常重要。

  2. DNS查询通常是小数据包(通常小于512字节)。UDP适合这种小数据包的传输,因为它不需要进行复杂的连接管理和错误处理,这在大多数情况下可以高效地处理DNS请求和应答。当DNS响应数据超过512字节,即超出了UDP单个数据包的标准大小限制时,就需要使用TCP进行传输。

7

m.root-servers.net 202.12.27.33, 2001:dc3::35 WIDE Project(日本,东京)

根域名服务器是DNS查询的起点,没有它们,互联网上的设备无法解析域名。它们存储了所有顶级域名服务器的信息,这些顶级域名服务器进一步指向负责所有二级域名的名称服务器。

如果ICANN决定终止某个国家的顶级域名,该国家内注册的所有域名将无法被全球解析,这意味着无法通过这些域名访问相关网站和服务。邮件等服务也将无法使用

8

雪人计划:主要测试和展示DNS根名称服务完全在IPv6网络上的可行性。共同对 IPv6 根服务器运营、域名系统安全扩展密钥签名和密钥轮转等方面进行测试验证。

必要性:

确保DNS根服务器系统完全兼容IPv6,对于未来的互联网成长和扩展至关重要。

  1. 增强的安全性:IPv6为网络通信提供了更先进的安全特性,例如IPsec(一种网络层安全协议)。在IPv6环境下运行根服务器可以利用这些特性,提升DNS根名称服务的整体安全性。
  2. 改进的性能和可靠性:通过增加根服务器的数量并分布在全球不同地区,可以提高DNS查询的响应速度和系统的整体可靠性,尤其是对于IPv6网络环境。
  3. 实验和研究:架设额外的IPv6根服务器为DNS研究社区提供了一个实验平台,可以用来测试新的技术和协议,以及评估DNS架构的新方向。

9

image-20240506215817703