用C#下的Raw Socket编程实现网络封包监视
日期:2007年4月28日 作者: 查看:[大字体 中字体 小字体]-
谈起socket编程,大家也许会想起QQ和IE,没错。还有许多网络工具如P2P、NetMeeting等在应用层实现的应用程序,也是用socket来实现的。Socket是一个网络编程接口,实现于网络应用层,Windows Socket包括了一套系统组件,充分利用了Microsoft Windows 消息驱动的特点。Socket规范1.1版是在1993年1月发行的,并广泛用于此后出现的Windows9x操作系统中。Socket规范2.2版(其在Windows平台上的版本是Winsock2.2,也叫Winsock2)在 1996 年 5 月发行,Windows NT 5.0及以后版本的Windows系统支持Winsock2,在Winsock2中,支持多个传输协议的原始套接字,重叠I/O模型、服务质量控制等。
本文向大家介绍Windows Sockets的一些关于用C#实现的原始套接字(Raw Socket)的编程,以及在此基础上实现的网络封包监视技术。同Winsock1相比,Winsock2最明显的就是支持了Raw Socket套接字类型,使用Raw Socket,可把网卡设置成混杂模式,在这种模式下,我们可以收到网络上的IP包,当然包括目的不是本机的IP包,通过原始套接字,我们也可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。
在本文例子中,我在nbyte.BasicClass命名空间实现了RawSocket类,它包含了我们实现数据包监视的核心技术。在实现这个类之前,需要先写一个IP头结构,来暂时存放一些有关网络封包的信息:
[StrUCtLayout(LayoutKind.EXPlicit)]
public struct IPHeader
{
[FieldOffset(0)] public byte ip_verlen; //I4位首部长度+4位IP版本号
[FieldOffset(1)] public byte ip_tos; //8位服务类型TOS
[FieldOffset(2)] public ushort ip_totallength; //16位数据包总长度(字节)
[FieldOffset(4)] public ushort ip_id; //16位标识
[FieldOffset(6)] public ushort ip_offset; //3位标志位 - [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页
-
- 用C#下的Raw Socket编程实现网络封包监视 相关文章:
- 用C#下的Raw Socket编程实现网络封包监视 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:如何利用C#创建和调用DLL
精品推荐
热点TOP10
- ·C#编写的windows计算器-源代码
- ·身份证号码15位升18位(C#)
- ·AspNetPager分页控件--使用方法
- ·asp.net开发wap程序必备:识别来访手机品牌型号
- ·客户端回调实现gridView无刷新分页
- ·C#设计的一个向导程序(Wizard)框架
- ·c#操作word表格
- ·C#導出Excel源碼
- ·ASP.Net2.0 GridView 多列排序 显示排序图标,分页
- ·.net操纵xml文件类(c#)
- ·六步使用ICallbackEventHandler实现无刷新回调
- ·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
- ·用ASP.NET建立一个在线RSS新闻聚合器
- ·为DataGrid创建自定义列控件
- ·日历函数单元
- ·动态修改.Net StreamReader Encoding编码
- ·ASP.NET 生成 RSS Feed
- ·ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!
- ·ASP.NET购物车的实现及结算处理
- ·asp.net关于文件在数据库的存入和读取
特别推荐
- ·ASP.NET程序中常用的三十三种代码
- ·ASP.Net中保护自定义的服务器控件
- ·C#设计的一个向导程序(Wizard)框架
- ·.net中即时消息发送的实现……
- ·ASP.NET动态创建控件之绝境求生
- ·.NET调用Oracle存储过程,使用数组类型的参数(如ArrayList)
- ·C#中水晶按钮的程序生成
- ·日历函数单元
- ·图片保存到数据库和从数据库读取图片并显示(c#)
- ·ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!
- ·C#中四种进程或线程同步互斥的控制方法
- ·[C#]解决读写包含汉字的txt文件时乱码的问题
- ·AspNetPager分页控件--使用方法
- ·六步使用ICallbackEventHandler实现无刷新回调
- ·从 ASP.NET 服务器控件插入客户端脚本
- ·C#導出Excel源碼
- ·Asp.net直接保存文件到客户端
- ·如何在上传的图片上写字
- ·Access 通用数据访问类(asp.net 2.0 c#)
- ·asp.net关于文件在数据库的存入和读取
