我们可以使用IP五元组来识别网络连接:srcIP,srcPort,dstIP,dstPort,TCP / UDP。我希望将这些连接信息与哈希表保持一致,就像这个"scripts": {
"test": "npm run client:test && npm run api:test",
"knex": "babel-node node_modules/.bin/knex --cwd db",
"api:test": "mocha --opts api/__dev__/mocha.unit",
"api:cover": "api/__dev__/api-cover.sh",
"api:tdd": "npm run -s db:cycle && npm run -s api:test -- -w -R min",
"api:start": "babel-node api/server",
"api:watch": "nodemon --exec npm run -s api:start",
"client:test": "mocha --opts client/__dev__/mocha.unit",
"client:tdd": "npm run -s client:test -- -w -R min",
"client:cover": "client/__dev__/client-cover.sh",
"client:build": "babel-node scripts/client-build.js",
"client:watch": "npm run -s client:build -- --watch",
"db:make": "npm run knex migrate:make",
"db:latest": "npm run -s knex migrate:latest",
"db:rollback": "npm run -s knex migrate:rollback",
"db:cycle": "npm run -s db:rollback && npm run -s db:latest"
}
一样。
现在我使用字符串作为哈希表的键,如“srcIP_srcPort_dstIP_dstPort_TCP / UDP”,但我认为这不是一个好的选择,因为它的效率。
所以,如果我想使用结构作为关键,可能就像:
Hash<quintuple, list<packet_information> >
如何实现哈希函数?
答案 0 :(得分:1)
您可以使用任何哈希函数。 例如:
item = IP_QUINTUPLE。
hash1 = item.srcIP ^ item.srcPort ^ item.dstIP ^ item.dstPort ^ item.flag;
hash2 = item.srcIP ^ (123 * item.srcPort) ^ item.dstIP ^ (987 * item.dstPort) ^ (1234567 * item.flag);
其中^按位XOR运算和*乘法。