网络协议恶补心得笔记(一)& Sniffer实现

本文介绍了网络协议基础知识,特别强调了在使用raw socket时绑定IP地址的注意事项,指出不能使用`Dns.GetHostAddresses("localhost")`获取IP,而应通过`Dns.GetHostname()`解析本机IP。此外,分享了关键的Sniffer实现步骤,利用`IOControl`设置socket接收所有数据包,启用SIO_RCVALL模式,并提醒此操作只适用于Win2k后的系统且需要管理员权限。
摘要由CSDN通过智能技术生成
前言
      年底事情比较少,加上家里已经把局域网组上了,算是一个比较理想的试验环境,因此决定抓紧年底的时间,边看资料边动手,恶补一下网络协议。文章纯属心得纪录,仅供探讨和参考,内容根据试验结果不定期更新,如有问题,欢迎指正。
     
      (1) Sniffer&IP协议
     
      Sniffer一般翻译为嗅探器,主要用于监视网络中传送的数据。Sniffer的用法很多,网管可以用Sniffer观察网络状态,玩家可以用它分析网络游戏的封包结构,黑客更可以用之进行网络攻击,可谓是居家旅游,杀人灭口必备佳品。不管如何,sniffer可以算是基础工具之一,因此非常适合作为我们的第一个试验品。
 
      试验产品名: Sniffer
      预期输出结果:可对网络传送中数据包进行监控
 
      确定了目标之后,我们来分析实现Sniffer的步骤。首先网络中应用程序主要使用TCP和UDP协议进行数据传输,只要能捕捉到这些数据就可以算是一个可用的Sniffer了。TCP和UDP都属于传输层协议,通过网络层的IP协议传送。IP协议提供无连接、不可靠的数据传输功能,IP协议将TCP以及UDP数据封装在自己包内,然后添上IP协议的包头进行发送。因此,要捕捉TCP以及UDP包内容,只要捕捉IP包即可。
      决定了捕捉内容,接着就要确定捕捉方式。使用Socket进行包侦听是没有疑问的,但是问题在于我们平时应用中使用的Socket都是基于TCP(listen/connect)或者UDP(send/receive),并且绑定端口。为了实现对IP包的捕捉,需要将Socket设置为接收原始IP数据包,这样我们可以接收IP包并进行解析。此外,由于在数据链路层上,数据是以广播的方式发送,因此我们在对socket做recevice不仅可以收到该网卡接收的包,还可以收到网卡发送出去的包(原本以为网卡会自己进行过滤地说...另外,关于网卡混杂模式,后面有说明)。
      现在,所有的条件都已经具备,以下为各步骤的实现。
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值