luogu#P10346. [THUSC 2019] 数据链路层协议数据处理

[THUSC 2019] 数据链路层协议数据处理

题目背景

路由器软件需要处理的最底层是数据链路层,这上面运行着一系列复杂的协议,比如各种神秘的滑动窗口协议。虽然芃芃对它们始终摸不着头脑,但他知道这一层最重要的协议就属 ARP 了。它起到了跨上下两层的桥梁作用,只有通过 ARP 查询,路由器才能知道究竟应该把 IP 分组发给哪一个邻居。你的路由器软件需要热情地回应每一个询问,才能正确地收到接下来的流量。

题目描述

你需要根据《学习手册》中的相关知识,处理数据链路层的协议数据:在给定的流量片段中,有一些是对你的 ARP 询问(也就是说,询问的 IP(TPA 字段)是你拥有的,请在 pcap 题面中找到你拥有的 IP 地址和与其对应的 MAC 地址),请你正确地回复它们。数据保证 FCS 校验正确的 ARP 请求中发送端的 MAC 地址(SHA 字段)与以太网帧中的发送端 MAC 地址一致。注意,ARP 请求中以太网帧的目标地址可能与你拥有的 MAC 地址不同(如 FF:FF:FF:FF:FF:FF 广播地址),这种情况下依然需要回应 ARP 请求。你需要构造正确的 ARP 协议数据,以及外层的以太网帧格式(包括头部和校验和,并注意以太网帧的长度要求),并将这些以太网帧帧按照应答顺序按照《学习手册》的要求依次写入 PCAP 格式的输出文件中。

在**下列所有题目(包括本题)**中,如果某个流量片段发生校验错误,则应当直接丢弃,片段的数据可能会出现不符合《学习手册》中的叙述的情况,所以不能有任何假设,不进行任何处理。

输入格式

输入保证格式合法,其中包含不超过 nn 个流量片段,总大小不超过 mm 字节。你需要回复 n1n_1 个流量片段。

输出格式

其将与答案文件进行逐字节对比。

提示

【子任务】

测试点 nn mm n1=nn_1=n
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】

由于提供样例会大幅降低本题难度,故不提供样例。