#P10345. [THUSC 2019] 常见网络校验和计算

[THUSC 2019] 常见网络校验和计算

题目背景

芃芃发现,华清大学的玉兰学生公寓的网络质量似乎不是很好。由于网络线材质量的原因,也可能是有同学在进行一些奇怪的尝试,他总是会收到一些不太正常的内容。好在,网络协议的设计者们都考虑到了这一点,在协议中添加了校验和来检查一些明显的问题。作为鲁棒的路由器软件,必须只接收校验和检查通过的流量,而丢弃那些坏的。听说你已经能读到流量的内容了,下一步就是揪出这些不正常的流量。

题目描述

你需要根据《学习手册》中的相关知识,对给定的流量片段进行校验。请注意,由于所有片段类型都是以太网帧,所以你总是需要计算 CRC32;而对于承载了 IP 分组的流量,你还需要对 IP 分组头的检验和进行检查。作为简化,我们不考虑除了以太网和 IP 以外的校验字段。只有当所有的校验都通过时,才认为该流量片段是正确的。

输入格式

输入保证格式合法,并且每个流量片段都是以太网帧。其中包含不超过 nn 个流量片段,总大小不超过 mm 字节。部分子任务的数据中保证 IP 分组头的校验是正确的,即只需要计算以太网帧的 CRC32

输出格式

输出由 nn 行文本构成,依次对应每一个片段的校验结果。如果是正确的,输出 Yes,否则输出 No

提示

【子任务】

测试点 nn mm 仅需检查以太网帧
1 =102=10^2 =5×104=5\times 10^4
2 =1.5×105=1.5\times 10^5
3 =103=10^3 =1.5×106=1.5\times 10^6
4 =104=10^4 =1.5×107=1.5\times 10^7
5 =105=10^5 =1.5×108=1.5\times 10^8

【样例 1】

见题目附件 1.in/ans

【样例解释 1】

pcap 题一样,你可以用你电脑上安装的 Wireshark 软件打开样例数据的输入和输出。

样例输入文件应该包含四个以太网帧,其中第一个以太网帧中 FCS 和 IP 的校验都是错误的,第二个以太网帧是 FCS 校验正确的 ARP 帧,第三个以太网帧仅 FCS 校验错误,第四个以太网帧仅 IP 校验错误。在页面中部点开当前帧的解析可以看到更多细节,包括是哪个校验错误和正确值等等,这可能对你有一定的帮助。

Wireshark 默认情况下可能不会检查 FCS 的正确性。对于这种情况,你可以在页面中部找到并右键点击 Ethernet II 所在的一行,在弹出的菜单中选择 Protocol Preferences,勾上选项中的 Validate the Ethernet checksum if possibleAssume packets have FCS,此时你应该可以在页面上部看到 FCS 错误的帧都被明显地标记出来。

需要注意的是,Wireshark 还会计算并显示 UDP 的 Checksum 正确与否。在本题中,我们不考虑 UDP 的 Checksum,因此你可以忽略这些错误。