欢迎您访问北大青鸟昌平校区

400-870-7892

全国咨询热线

您现在所在位置: 北大青鸟 > 网络学院

.net教程:Asp.net的IP地址屏蔽功能设计

来源:北大青鸟 | 时间:2017-08-01 | 点击 :

  “IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。”

  由此我们了解到,IP地址实际上是一个32位正整数,在C#中可以使用uint类型来表示,但SQLServer数据库里好像没有对应的类型;转而使用数据库支持的int类型的话,则会出现溢出的情况;因此我们做出妥协:使用long(bigint)类型。

  TIP:

  int取值范围:-2,147,483,648 到 2,147,483,647

  uint取值范围:0 到 4,294,967,295

  long取值范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

  那么如何将IP地址转为整数呢?我们看到IPAddress类中有一个“[否决的]”实例属性Address,这个属性的确可以返回一个long值,但是测试一下,得到的数据确实这样的:

  “127.0.0.1” -> 16777343

  “127.0.0.2” –> 33554559

  的确该让它“否决”,这样的整数对我们来说毫无意义,我们是无法通过这样的方法比较传入的IP是否介于两个IP值之间的。

  那么只有自己动手了,我们将通过IPAddress类的GetAddressBytes()实例方法获取IP的4个段的值,然后将它们组合为一个整数,下面将提供这个扩展方法:

  ///

  /// 将IP地址转为整数形式

  ///

  /// 整数

  public static long 转换为整数(this IPAddress ip)

  {

  int x = 3;

  long o = 0;

  foreach (byte f in ip.GetAddressBytes())

  {

  o += (long)f << 8 * x--;

  }

  return o;

  }

  你可以这样使用这个扩展方法:

  IPAddress.Parse("127.0.0.1").转换为整数()

  这里还有一个用于逆转换的扩展方法,用于将long转回IPAddress:

  ///

  /// 将整数转为IP地址

  ///

  /// IP地址

  public static IPAddress 转换为IP地址(this long l)

  {

  var b = new byte[4];

  for (int i = 0; i < 4; i++)

  {

  b[3 - i] = (byte)(l >> 8 * i & 255);

  }

  return new IPAddress(b);

  }

  这样我们就可以通过计算得到正确并有意义的整数了:

  “127.0.0.1” -> 2130706433

  “127.0.0.2” –> 2130706434

  OK,确立了方案核心,下面开始设计SQLServer数据表:

  这样设计后,在添加时将起始和终止IP地址转为long类型并存入,并指定一个过期时间。

  在验证时只需要获取所有未过期的条目,比较传入的IP地址是否介于起始值和终止值之间即可。

  以往通过字符串存储和验证的方案中,屏蔽时要么屏蔽一个的IP地址,要么就屏蔽一段或两段IP,如“192.168.*.*”,要想屏蔽“192.168.1.200”到“192.168.4.64”之间的IP的话,将会非常麻烦;

  而我们这样设计就可以轻松实现:“192.168.1.200”在数据库里存储的是“3232235976”,“192.168.4.64”在数据库中是“3232236608”,即使使用肉眼也能快地判断传入的地址是否介于它们之间,更不要说计算机查询了。

  下面为数据表生成EDM模型:

  添加IP屏蔽记录的代码:

  ///

  /// 添加一个新的IP屏蔽区段

  ///

  /// 起始IP,如61.51.200.0

  /// 终止IP,如61.51.255.255

  /// 屏蔽截止时间

  /// ID号

  public static Guid 添加(string IP区段起始值, string IP区段终止值, DateTime 过期时间)

  {

  var id = Guid.NewGuid();

  var sip = IPAddress.Parse(IP区段起始值).转换为整数();

  var eip = IPAddress.Parse(IP区段终止值).转换为整数();

  using (var c = new SiteMainEntities())

  {

  //检测是否已存在相同的IP屏蔽记录

  var a = c.IP地址屏蔽.Where(f => f.区段起始值 == sip && f.区段终止值 == eip);

  //如果存在则更新其过期时间

  if (a.Count()>0)

  {

  var l = a.First();

  if (l.过期时间 < 过期时间) l.过期时间 = 过期时间;

  }

  //不存在则正常添加一个新的屏蔽记录

  else c.AddToIP地址屏蔽(new IP地址屏蔽 { ID = id, 过期时间 = 过期时间, 区段起始值 = sip, 区段终止值 = eip });

  c.SaveChanges();

  }

  return id;

  }

  检测指定IP地址是否被屏蔽的代码:

  ///

  /// 检测指定IP地址是否已受到屏蔽

  ///

  /// 要检测的IP地址

  /// 是否属于已屏蔽的IP

  public static bool 检测是否被屏蔽(string IP地址)

  {

  var ip = IPAddress.Parse(IP地址).转换为整数();

  using (var c = new SiteMainEntities())

  {

  return c.IP地址屏蔽.Count(f => f.过期时间 > DateTime.Now && ip >= f.区段起始值 && ip <= f.区段终止值) > 0;

  }

  }

  这种方案比起以往的字符串验证方案来说优雅了许多,并可以提高数据库查询的效率,建议各位在日后的网站开发中都采用此方案。

  • 北大青鸟电脑培训学校怎么样?

    北大青鸟电脑培训学校怎么样?针对这个问题,每个人都有自己的评判标准,也会众说纷纭。毕竟北大青鸟是中国最大的IT人才培训机构,是IT职业教育的领导品牌,在国内的IT培训市场的市场占有率连续七年第一。所谓树大招风,北大青鸟有这样傲人的成绩,自然也会遭到其他同行...详细

  • 北大青鸟电脑培训学校怎么样

    随着毕业高峰期的来临,最近很多同学都在我们官网咨询如何选择培训机构的问题,...详细

  • 为什么学习计算机技术?前景才是王道

    你为什么学IT因为工资高啊 大家应该都知道,近几年高校不断在扩招,毕业生的人数一年比一年多,再加上出国留学回来的以及没找到工作的往届生,还有社会职场转行或辞职或待业人士。就业形势非常严峻,竞争更是异常激烈。 其实现如今,众多企业在用人方面,除了看学历、...详细

  • 北大青鸟就业怎么样?昌平北大青鸟怎么样?

    北大青鸟教材与传统教材的编排方式不同,北大青鸟课程采用真实的项目贯穿每一门课程。理论课上老师会通过一个案例、项目的讲解引出技术内容,要求学员在上机课自己逐步完成一个类似的项目。...详细

  • 北大青鸟住宿条件怎么样?

    北大青鸟住宿环境 北大青鸟住宿怎么样? 北大青鸟校区位于北京市中心,往南700出,所处地理环境优越,周围2、4号地铁围绕,通行30多条公交线路,交通便利。学校四周有餐饮小吃一条街,味道可口,价格相对较为便宜,方便学生日常生活。...详细

  • 石家庄裕华区北大青鸟怎么样?

    苏同学问:老师您好,我去年大学毕业了,现在在一家公司上班,工作倒是不累,也没有加班的情况,我这人天生就喜欢忙碌,我想让每天的生活过得充实一些,所以我打算利用业余时间去学习计算机,上网查了一下,总体反映北大青鸟还不错,我想问一下老师您石家庄裕华区北大青...详细

  • 北大青鸟网络工程师课程怎么样?

    蒋晴晴同学问:老师您好,我现在想学习网络工程师课程,因为现在的待遇不是很好,网络工程师的待遇听说不错,但是不太了解北大青鸟网络工程师课程怎么样? 选择北大青鸟,北大青鸟是中国非常大计算机职业培育机构,主要培训互联网软件精英,旨在提升学员技术...详细

  • 北大青鸟就业怎么样呢

      北大青鸟作为一家职业技能培训学校,这是一个永恒的考验。北大青鸟就业怎么样呢?北大青鸟是国内第一家IT培训机构,我们的目标便是帮助学员实现高薪就业,通过深入企业,调查企业岗位员工所需的基本素质和职业技能,然后根据调查结果改变现有的教学方案,培养企业...详细

  • 北大青鸟怎么样? 北大青鸟好不好?

    北大青鸟APTECH是中国IT教育第一品牌,是北京大学的直属教育机构,蕴涵浓厚的文化底韵。2000年至今已培养了40多万合格的IT人才,覆盖面比较广,现已形成了较好的教学口碑。北大青鸟的创始人是北京大学教授、中科院院士杨芙清教授。我们的教材也是由北京大学的专家和印...详细

  • 辛集市北大青鸟怎么样?计算机基础差可以学会吗?

    张同学问:老师您好,我今年18岁,刚好高中毕业,我大学考得不理想,打算学习一门技术。都说学计算机挺好的,我在网上搜到了不少的计算机培训学校,对北大青鸟的整体评价还是很好的。我想问问老师辛集市北大青鸟怎么样?我只会一些简单的办公软件,像我计算机基础这么...详细

  • 北大青鸟怎么样? 北大青鸟好不好?

    北大青鸟APTECH是中国IT教育第一品牌,是北京大学的直属教育机构,蕴涵浓厚的文化底韵。2000年至今已培养了40多万合格的IT人才,覆盖面比较广,现已形成了较好的教学口碑。北大青鸟的创始人是北京大学教授、中科院院士杨芙清教授。我们的教材也是由北京大学的专家和印...详细

  • 目前网络工程师就业前景怎么样?好不好找工作?

    随着我国信息化建设的开展,以及国家各项相关政策的下达,使得全国各地的信息化建设如火如荼,出现了大量的信息化网络人才的缺口,而我国信息化人才培养还处于发展阶段,导致社会实际需求人才基数远远大于网络人才的培养基数,使得数以万计的中小企业急需全面系统掌握网络基...详细

  • 北大青鸟到底好不好?

    北大青鸟到底好不好?其实大家心中有这个疑问的原因也是很简单,就是想要弄清楚一些,对自己的未来负责。那么北大青鸟到底好在哪里呢?最主要的就是北大青鸟的教学方式和课程体系。信息时代的发展远远快于我们的思想,与时俱进的课程就成为了北大青鸟的优势,才能让学...详细

  • 2012高考结束,考生如何选择学校?北京昌平北大青鸟学校好不好?

    2012高考已经结束,即将公布成绩,又到了一年考生们选择学校的时候,如何更好的选择一所学校,对每个高考生都是重大转折,如何选择学校?选择什么样的专业?2010年有哪些热门就业的专业?有的同学理论知识不是很强,就会明智的选择学习技术,作为做火热 最好好就业的计...详细

  • 北大青鸟就业好不好

    考不上好的高中好的大学,很多人认为这人一定没有出息,然而现在并不是这样。我们可以选择技校来充实自己一样可以得到好的发展,好的未来。如今的技校越来越多,学生和家长也不知道哪所学校可靠,就业情况好不好。就业情况的好坏,最主要的应该要看选择的行业以及行业今...详细

  • 北大青鸟网络工程师培训好不好

    被那么多人耳熟能详的北大青鸟,所拥有的课程是面向全社会的系统化,职业化的it培训课程,北大青鸟的it培训课程为无数的拥有梦想的年轻人提供了梦想腾飞的助力,也为他们提供了一座跨越梦想的桥梁。 北大青鸟BENET网络工程师的培训课程是北大青鸟的老牌课程,经过十余...详细

  • 什么是网络工程师前景好不好

    网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员。网络工程师能够从事计算机信息系统的设计、建设、运行和维护工作。其实网络工程师是目前一个比较火热的职业,因为大大小小的公司,都需要用网络,就必须要有网络工程师。而且你想啊,如...详细

  • 北大青鸟好不好——一直下雨的星期天

    这是个一直下雨的星期天,我出门买菜,回家做一顿可口的饭菜吧,然后把同学也叫来,大家反正都是单身,周末聚聚也无防。 北大青鸟好不好|北京北大青鸟好不好...详细

  • 高中生学IT好学吗工资待遇如何就业好不好呢

    IT从业者来说,入行前的专业培训是不用少的。所以,每年都会有大批IT爱好者进入北京北大青鸟昌平校区充电。IT工作培训之所以如此受欢迎,一方面是因为其实用性,另一方面则是因为其相对宽松的入学条件。 关于我们遍及纠结的问题学历低学IT行业怎么样,学历低能去北大青...详细

  • 北大青鸟到底好不好——正确的答案

    北大青鸟到底好不好? 三个月前,这个问题一直是我的心头大事。可是现在,当我坐在宽敞明亮的教室,很幸福的听着老师为我们上课,这个问题,已经得到明确的答案。北大青鸟到底好不好|北京北大青鸟到底好不好...详细

  • 网络工程师技能学院学费要多少?

    北大青鸟昌平校区老师专业指导,希望从事网络工程师专业的同学们,先要明白什么是网络工程师。网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员。网络工程师能够从事计算机信息系统的设计、建设、运行和维护工作。...详细

  • 北大青鸟初中学历学三年需要多少学费?

    作为一名十五六岁的青年,初中刚刚毕业,你肯定会面临很多的人生选择:外出打工?参军入伍?待业在家?上中专学技术?你面临的不仅仅是就业的压力,同时还面临家庭的压力。...详细

  • 零基础短期电脑培训班要多少钱

    北大青鸟昌平校区具有良好的就业服务体制.详细可以咨询我们在线老师,我们用心承诺,保障每一位学员就业成功....详细

  • 北大青鸟计算机职业教育机构学费

    "一个人在职场中求职就像在雾霾天儿里找路,如果有了明确的目标,再加上正确的交通工具辅助,很快就能找到路.我也曾经迷茫过,看不到未来的方向,但是我来到北大青鸟之后,我的人生目标渐渐清晰,求职时过五关斩六将,下个月就要入职新公司开始我的奋斗之路."北大青鸟APTECH某...详细

  • 北大青鸟学费多少

    “北大青鸟学费多少?”刚到家,没还得急喝一口水,三婶就急急忙忙得跑来,我知道,就我那“爱慕虚荣”的老妈,一定没少在村里头宣传我的工作情况。 我赶紧喝了一口,忙不迭的让三婶坐下来。小弟不是刚考上大学吗?当时三叔在家摆的庆功宴我还出席了呢?这是怎么回事呢...详细

  • 北大青鸟学费一览表

    <u>北大青鸟</u>学费一览表非常详细的列出:每个专业有多少门课,每门课的课时数和课时费用;总课时,教材费用,认证费用,以及总学费。<u>北大青鸟学费</u>一览表在各位咨询师那里,当学员对北大青鸟已经了解过,自己也分析自己的情况,有了一个方向和目标,定了学习计...详细

  • 北大青鸟学费一览表

    北大青鸟学费一览表北大青鸟将会如何收取学员的费用呢?现在已经为你整理成了一个表格你只需要对比就知道北大青鸟的学费是多少了!...详细

  • 北大青鸟一年学费多少钱

    北大青鸟一年学费多少钱 啊?姐姐。 小弟从Q上发来了一个问题。我看这样子估么是浪子回头想学习了。这个弟弟,可真是让叔叔婶婶操碎了心。 从小就给惯的天不怕地不怕,也不好好读书,人倒是挺聪明的。高三毕业之后,怎么也不参加高考。说是自己要走另一条成材的道路。...详细

  • 北大青鸟学费多少钱?

    准备读或是没有读北大青鸟的人,提起北大青鸟,第一个反映就是北大青鸟学费多少钱? 其实这一点我很能理解,作为一名青鸟的老师,每次交学费时,我能感到家长对孩子的希望以及每一分钱的来之不易。说实话,对于我来讲,每一分钱,也是来之不易的。 而我在这里,要讲一...详细

  • 北大青鸟上短期的电脑培训学费多少钱?

    北大青鸟上短期的电脑培训学费多少钱? 随着电子产品的不断更新换代,如今这个电子化社会,绝大多数人都已经用上了智能手机,平板电脑。这表示着我国电子化产业的高速的发展,也表示未来人们对电子产品的需求会越来越大。那么为了顺应时代的发展,初中毕业学点什么技术有...详细

热门话题

在线客服

ONLINE SERVICE

联系电话

18210170187

返回顶部