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