第二次寒假作业
这个作业属于哪个课程 | 2022面向对象程序设计 (福州大学) |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/2022OOP/homework/12442 |
额,第二次寒假作业真的好难。我看完作业要求,都还没反应过来,那玩意就是作业要求,还在想“所以作业在哪?”最后也是实在做不下去。
一.基本概念的认识
五元组:例:192.118.2.1 10000 TCP 121.14.68.79 80 就构成了一个五元组。
其意义是,一个IP地址为“192.118.2.1”的终端通过端口“10000”,利用“TCP”协议,和IP地址为“121.14.68.79”,端口为“80”的终端进行连接。
规则集:规则集是匹配规则的集合,以五元组的形式给出范围。好像就是我上面写的那个嘿。应该是吧。
数据集:数据集是数据包的集合,同样以五元组的形式给出数据包的精确五元组信息。
如:2335513845 263450117 1 0 255,其中 2335513845 263450117分别是源IP和目的IP,数据包IP是十进制表示,1 0是源、目的端口,255是协议号。
匹配规则:如果有一个数据包P,当它的源/目的IP,端口号,协议号都在规则集中的某条规则的范围内时就算匹配。
二.传输协议对ip地址宽度的影响(看同学的真心不知道是什么鬼啊啊啊啊)
1:IP地址 = 网络地址 + 主机地址,二进制为:
11000000 10101000 00001001 00000011
2:子网掩码的二进制表示为:
11111111 11111111 11111110 00000000 ,解析:前面1的就是网络地址部分,后面0就是主机地址,所以此处有9位主机地址。
3:网络地址 = 子网掩码 & IP地址,即:192.168.8.0
4:广播地址 = 3中求出的网络地址的主机地址部分置1,即:192.168.9.255
5:有效的IP段计算:
开始地址 = 网络地址+1,即192.168.8.1
结束地址 = 广播地址-1,即192.168.9.254
那么当前示例的有效IP段为:192.168.8.1~192.168.9.254
三.协议号规则
如:0x06后是0xFF则表示只有0x06可匹配,若0x06/0x00则表示任意协议都可匹配。
四.然后对于代码,本人水平有限,c语言和c++学得菜,真心不懂打,只能按照思路,打出一两个模块的代码,但是只能体现出一个思路,真正去实现还是好难,太痛苦了啊啊啊啊,我的假期啊!
(1)该部分是IP转化,我也是问了同学怎么转化,才懂得转化的,太菜了太菜了。
for (i = 7; i >= 0; i--) {
a1[i] = num1[len] % 2;
num1[len] /= 2;
}
for (i = 15; i >= 8; i--) {
a1[i] = num2[len] % 2;
num2[len] /= 2;
}
for (i = 23; i >= 16; i--) {
a1[i] = num3[len] % 2;
num3[len] /= 2;
}
for (i = 31; i >= 24; i--) {
a1[i] = num4[len] % 2;
num4[len] /= 2;
}
(2)然后是网址转化。
for (i = 0; i < num5[len]; i++) {
a2[i] = 1;
}
for (i = 0; i <= 31; i++) {
a3[i] = a1[i] & a2[i];
a4[i] = a3[i];
}
for (i = num5[len]; i < 32; i++) {
a4[i] = 1;
}
额,就是,我只会大概的思路,也就只会思路,就用代码展现思路了,而且还有好多好多不懂。。。。。。