luogu#P10345. [THUSC 2019] 常见网络校验和计算
[THUSC 2019] 常见网络校验和计算
题目背景
芃芃发现,华清大学的玉兰学生公寓的网络质量似乎不是很好。由于网络线材质量的原因,也可能是有同学在进行一些奇怪的尝试,他总是会收到一些不太正常的内容。好在,网络协议的设计者们都考虑到了这一点,在协议中添加了校验和来检查一些明显的问题。作为鲁棒的路由器软件,必须只接收校验和检查通过的流量,而丢弃那些坏的。听说你已经能读到流量的内容了,下一步就是揪出这些不正常的流量。
题目描述
你需要根据《学习手册》中的相关知识,对给定的流量片段进行校验。请注意,由于所有片段类型都是以太网帧,所以你总是需要计算 CRC32
;而对于承载了 IP 分组的流量,你还需要对 IP 分组头的检验和进行检查。作为简化,我们不考虑除了以太网和 IP 以外的校验字段。只有当所有的校验都通过时,才认为该流量片段是正确的。
输入格式
输入保证格式合法,并且每个流量片段都是以太网帧。其中包含不超过 个流量片段,总大小不超过 字节。部分子任务的数据中保证 IP 分组头的校验是正确的,即只需要计算以太网帧的 CRC32
。
输出格式
输出由 行文本构成,依次对应每一个片段的校验结果。如果是正确的,输出 Yes
,否则输出 No
。
提示
【子任务】
测试点 | 仅需检查以太网帧 | ||
---|---|---|---|
1 | 是 | ||
2 | 否 | ||
3 | |||
4 | |||
5 |
【样例 1】
见题目附件 1.in/ans
。
【样例解释 1】
和 pcap
题一样,你可以用你电脑上安装的 Wireshark 软件打开样例数据的输入和输出。
样例输入文件应该包含四个以太网帧,其中第一个以太网帧中 FCS 和 IP 的校验都是错误的,第二个以太网帧是 FCS 校验正确的 ARP 帧,第三个以太网帧仅 FCS 校验错误,第四个以太网帧仅 IP 校验错误。在页面中部点开当前帧的解析可以看到更多细节,包括是哪个校验错误和正确值等等,这可能对你有一定的帮助。
Wireshark 默认情况下可能不会检查 FCS 的正确性。对于这种情况,你可以在页面中部找到并右键点击 Ethernet II
所在的一行,在弹出的菜单中选择 Protocol Preferences
,勾上选项中的 Validate the Ethernet checksum if possible
和 Assume packets have FCS
,此时你应该可以在页面上部看到 FCS 错误的帧都被明显地标记出来。
需要注意的是,Wireshark 还会计算并显示 UDP 的 Checksum 正确与否。在本题中,我们不考虑 UDP 的 Checksum,因此你可以忽略这些错误。