寒假作业2汇总
这个作业属于哪个课程 | 班级链接 |
---|---|
这个作业的要求在哪里 | 作业要求 |
这个作业的目标 | 给出规则集及输入数据包,输出相应数据包最佳匹配的规则 |
作业正文 | 如下 |
其他参考文献 | 无 |
第二次作业
1.代码:我的Github仓库
2.需要学习哪些内容
- 复习git操作
- C语言文件知识
- IP地址,进制转换,CIDR
- 计算机网络知识:五元组,规则集,数据集,规则匹配
3.困难
几乎没了解过计算机网络知识,看了很多遍作业内容才勉强理解一点意思,对作业感到无从下手。
本来想先学c++再做作业,后来感觉还是用c写方便一些。
在写代码的时候,每写一小部分就要运行一下试试,找找错误,规则集里端口的冒号两边有空格,没注意到且没有运行试试,到后面运行协议部分时出错才发现之前有问题。
在转换成二进制时,一开始想直接转换成一个二进制数,没把二进制以八位为一组分开,导致运行时溢出,才意识到问题并作修改。
4.步骤
(一)读取文件
用git把数据集和规则集弄到本地库,定义三个文件指针,用c读取文件,先分别用2个结构体存起来(源、目端口,源、目IP,协议)
数据集的IP十进制转成二进制,规则集的CIDR转成二进制的最小地址和最大地址,再存到结构体
(二)数据包匹配
暴力求解
(三)输出文件
结果写在另一文件res.txt
格式为 数据序号 : 匹配规则位置,如下图,以第一个规则集和第一个数据包为例