EduCoder 计算机网络实验 IP协议分析
第1关:跟踪抓包
任务描述
本次任务要求完成以下操作:通过发送 ICMP 包完成数据包的发送,并借助 Wireshark 工具捕获数据包;深入解析 IPv4 数据包结构;探讨 IPv4 地址赋予权机机制;进一步强化对 IP 协议机制的认识。
相关知识
为了完成本关任务,你需要掌握:
- 截获数据报;
- 简单分析数据包格式。
IPV4数据包
第4代互联网协议(IPv4)作为TCP/IP体系中的传输介质,在网络中采用分组方式传递数字信号。每个数据单元构成可变长度的组合体,分为头部分和正文部分。其长度范围限定在20至60个字节之间,并记录了关键的路由选择与传输管理参数。各字段功能循序排列:
(1)版本( 4 位):该字段定义 IP 协议版本,负责向处理机所运行的 IP 软件指明此 IP 数据报是哪个版本,所有字段都要按照此版本的协议来解释。如果计算机使用其他版本,则丢弃数据报; (2)头部长度( 4 位):该字段定义数据报协议头长度,表示协议头部具有 32 位字长的数量。协议头最小值为 5 ,最大值为 15; (3)服务( 8 位):该字段定义上层协议对处理当前数据报所期望的服务质量,并对数据报按照重要性级别进行分配。前 3 位成为优先位,后面 4 位成为服务类型,最后 1 位没有定义。这些 8 位字段用于分配优先级、延迟、吞吐量以及可靠性; (4)总长度( 16 位):该字段定义整个 IP 数据报的字节长度,包括协议头部和数据。其最大值为 65535 字节。以太网协议对能够封装在一个帧中的数据有最小值和最大值的限制( 46~1500 个字节); (5)标识( 16 位):该字段包含一个整数,用于识别当前数据报。当数据报分段时,标识字段的值被复制到所有的分段之中。该字段由发送端分配,帮助接收端集中数据报分段; (6)标记( 3 位):该字段由 3 位字段构成,其中最低位( MF )控制分段,存在下一个分段置为 1 ,否则置 0 代表该分段是最后一个分段。中间位( DF )指出数据报是否可进行分段,如果为 1 则机器不能将该数据报进行分段。第三位即最高位保留不使用,值为 0; (7)分段偏移( 13 位):该字段指出分段数据在源数据报中的相对位置,支持目标 IP 适当重建源数据; (8)生存时间( 8 位):该字段是一种计数器,在丢弃数据报的每个点值依次减 1 直至减少为 0 。这样确保数据报拥有有限的环路过程(即 TTL ),限制了数据报的寿命; (9)协议( 8 位):该字段指出在 IP 处理过程完成之后,有哪种上层协议接收导入数据报。这个字段的值对接收方的网络层了解数据属于哪个协议很有帮助; (10)头部校验和( 16 位):该字段帮助确保 IP 协议头的完整性。由于某些协议头字段的改变,这就需要对每个点重新计算和检验。计算过程是先将校验和字段置为 0 ,然后将整个头部每 16 位划分为一部分,将个部分相加,再将计算结果取反码,插入到校验和字段中; (11)源地址( 32 位):源主机 IP 地址,该字段在 IPv4 数据报从源主机到目的主机传输期间必须保持不变; (12)目的地址( 32 位):目标主机 IP 地址,该字段在 IPv4 数据报从源主机到目的主机传输期间同样必须保持不变。
截获数据报
启动 Wireshark 软件后进行捕获,在实验中我们只需要捕获与本实验相关联的报文,并将 Wireshark 的 Captrue Filter 设置为No Broadcast and no Multicast以实现对该类报文的精准过滤

启动终端并执行命令ping www.sina.com.cn。关闭捕获报文,并在过滤窗口中输入对应的IP地址信息后进行分析。

分析截获结果
根据截获的结果简单分析内容:

使用git将本地文件推送到远程仓库永久保存
评测通关后,需要推送文件到远程仓库,请在评测通关后,执行以下操作:
在桌面的任意空白处单击鼠标右键,在弹出的菜单中选择“此处启动终端”。随后,在命令提示符下输入运行命令cd /data/workspace/myshixun/后切换至实训项目存储位置。
执行 git 命令:
1.
2.
3.
代码解读
- 执行深度拉取操作以实现代码库的本地化部署
- 将当前目录下的所有文件添加到版本控制系统中进行管理
- 通过提交第一份代码变更完成首次功能实现
- 将本地修改内容推送至远程主分支供他人查看
First commit
注意:密码输入过程中并不会显示任何用户的账户信息
操作要求
双击桌面上的工作区命名栏"workspace"后启动该程序,在主界面切换至"myshixun"目录下的工作空间环境配置选项卡下初始化参数设置界面进行操作。
接着在系统资源管理器窗口切换至"myshixun"目录下的相关资源管理选项卡下执行配置操作。
随后启动Wireshark软件,在捕获框内输入捕获条件选择其所在网络接口下的所有流量信息后点击捕获按钮开始抓包。
随后通过捕获结果列表框找到对应的日志信息内容进行详细分析研究。
完成以上步骤后将最终分析结果整理成电子版报告存档备用。

第2关:ICMP响应中IP包分析
- 请完成以下任务:抓取ICMP响应数据并进行简单分析。
- 相关知识:
- 操作要求:
请按照以下步骤操作:
1)获取目标服务器的IP地址;
2)使用git工具将本地文件提交到远程仓库;
3)配置权限设置;
4)执行服务器启动脚本 - 测试说明:
在测试过程中,请确保您的本地设备已安装所需软件包,并且网络连接保持正常。
任务描述
本关任务:简单的 ICMP 响应中 IP 包分析。
相关知识
为了完成本关任务,你需要掌握:
- 抓取 ICMP ;
- 简单分析。
抓取 ICMP
启动 Wireshark 软件后进行数据包捕获;通过虚拟终端界面执行 traceroute 命令,并输入 www.baidu.com。

待指令完成,暂停抓包,截图如下:

简单分析
展开 ICMP 报头,消息截图如下:

当第一个路由返回超时时会触发该路由返回给我们的IP报信息(考虑到IP报才具备生存时间)我们能够观察到存活时间为63秒其中ID字段值为15173:
当第一个路由返回超时时会触发该路由返回给我们的IP报信息(考虑到IP报才具备生存时间)我们能够观察到存活时间为63秒其中ID字段值为15173:

使用git将本地文件推送到远程仓库永久保存
评测通关后,需要推送文件到远程仓库,请在评测通关后,执行以下操作:
在桌面空白处双击鼠标右键,在启动终端窗口。运行以下命令:$ cd /data/workspace/myshixun/ ,成功切换至实训代码仓库目录。
执行 git 命令:
git add .
2. git commit -m "Fisrt commit"
3. git push origin master
在提交流程中,请注意以下几点:首先,“First commit”相当于备注信息,在提交前可以选择性地修改内容;其次,在登录页面中,请按照以下方式填写必要的信息:请在用户名框中输入您的教育者账号(支持手机号码或邮箱地址),随后在密码部分同样如此。具体操作步骤请参考系统指引。
在密码输入过程中,默认情况下 shell 窗口不会实时显示用户的输入内容;
通常只需按回车键确认即可完成操作;
特别提示:在操作过程中请避免使用 Backspace 键。
操作要求
请完成以下实验操作:首先启动桌面上的工作区程序并双击打开工作区文件夹workspace;接着打开其中的myshixun实训文件夹,并从该文件夹中启动Wireshark应用程序;随后打开并分析其中名为ip-ethereal-trace-1的IP ethereal trace文件中提取所有ICMP报文;请记录该ICMP报文中的ID字段值及TTL字段值,并将其保存至本地message-2.txt文档中;最后通过git命令将修改后的message-2.txt提交至远程代码仓库服务器...

第3关:IP的分片组织
任务要求
测试说明
任务描述
本关任务:ICMP 响应包中 IP 的分片分析。
相关知识
为了完成本关任务,你需要掌握:
- IP 包分片;
- 分片组织。
IP分片产生
链路层具有最大传输单元(MTU)这一特性,在此架构下决定了数据帧的最大传输长度。不同网络类型均有一个最大值,在以太网中(或:The Maximum Transmission Unit in Ethernet)MTU设定为1500字节。你可以通过执行命令netstat -i来获取这一信息。当IP层需要发送的数据包大小超过MTU容量,则IP层会将其分割成多个小分段(fragmentation)。确保每个分片的数据量都不超过MTU的最大容量。
在进行 UDP 数据包的传输时,在以太网网络环境中,默认情况下 Maximum Transmission Unit(MTU)被设定为 1536 字节。标准的 IP 头部字段占用了 20 字节的空间,而 UDP 头部字段占用了 8 字节的空间。为了确保数据能够完整传输而不被分割,在发送端预留了 1536 - 20 - 8 = 1508 的可用空间用于实际的信息载体(payload)。当实际的数据量超过这一预留空间时(即 payload 超过 1536 - IP Header (20) - UDP Header (8) = 1472+字节数),就必须将这些过长的数据分成若干小段进行传输操作。这种分段传输的过程被称为分片(fragmentation),而接收端则会通过重组机制将各片段拼接成完整的数据报送回给发送方。

IP 报文的首部包含了分片和重组所需的信息:
- Identification: 源端发送的 IP 数据包各具独一无二的标识字段。
- R: 标记未分片。
- DF: 不分片位。
- MF: 多余分片标记。
- Fragment Offset: 表示当前片段起始位置相对于原始数据包起始位置的偏移量。
注意:当数据报被分片后,每个片的总长度值要改为该片的长度值。
IP数据报分片分析
启动 Wireshark 软件后,在过滤窗口中将捕获条件设置为 ICMP ,然后发送命令 ping www.sina.com.cn;

命令结束后执行截获报文操作后停止处理接收到的报文信息以下为接收到的报文信息根据捕获到的Fragment偏移量(Fragment偏移量=0)确定为首段数据其长度为1,500字节由于同时捕获了额外的以太网头部信息段落(每段8位)导致总数据量增加到1,514字节

以太网头:

报文排序筛选
点击NO.,Time...可实现按照No.,Time字段对报文排序。

按 Time 顺序排序:

点击 Time ,按 Time 逆序排序:

ICMP 报文分片查看
通过识别ICMP报文并定位到request/reply数据包,在对应的IPV4记录中解析Fragment字段以确定分片数量及其各份分片的具体大小

ICMP 报文分片数的判断
根据上述分析可知,
每个分片的最大承载能力为一千四百八十分位的数据量;
当待处理的数据总量超过这一限制时,则必须进行分片处理。
假设待处理的数据总量为S,
则分片数k=⌈S/1480⌉。
使用git将本地文件推送到远程仓库永久保存
评测通关后,需要推送文件到远程仓库,请在评测通关后,执行以下操作:
在桌面上的空白区域双击鼠标,在弹出的菜单中选择"此处打开终端"选项,在控制台窗口输入命令cd /data/workspace/myshixun/后回车,在线框界面中输入相应的路径信息以进入实训代码仓库
执行 git 命令:
git add .
2. git commit -m "Fisrt commit"
3. git push origin master
First commit类似于备注,并非固定用途,请根据实际需求选择具体内容。用户直接输入educoder平台提供的登录信息:用户名部分应填写平台指定的账号名(可选用手机号或邮箱),而密码则为educoder平台设定的安全密保码,在系统提示下完成填写操作即可完成账号登录
请在密码输入时请注意以下事项:当在 Shell 窗口中进行密码输入时,默认情况下不会显示所输入的字符。只有在按下回车键后才会显示出输入的内容。建议不要误操作,并确保不使用退格键。
操作要求
请依次点击桌面左下角的文件夹图标"workspace"并打开实训文件夹"myshixun";随后进入桌面上另一个名为message-3.txt的文件目录进行编辑操作;具体操作如下:启动Wireshark程序并加载实训文件夹中的ip-ethereal-trace-1日志文件;通过观察该日志中各项数据字段的内容来完成后续分析任务;请详细记录以下关键数据点:第一段ICMP请求包中的Fragment offset字段值是多少?以及最后一段ICMP响应包被分割成多少个分片?根据上述测试结果,请计算当主机发送的数据被分割成四个分片时所对应的最小和最大Round Trip Time(RTT)值,并将相关参数记录于指定位置;最后完成上述所有操作后利用git协议将修改后的message-3.txt提交至远程服务器进行版本管理;

