我爱Aspx >> Asp.Net >> 用C#的Raw Socket实现网络封包监视谈起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
Ҷƪл˵?
利用C#实现标准的 Dispose模式[05-20]
关于C#中属性及值类性引用类型的..[05-20]
c#.net常用函数列表[05-20]
深入理解C#编程中的组件-事件-委..[05-20]
在C#中利用DirectX实现声音播放[05-20]
C#实现文件下载[05-20]
Visual C# 3.0 新特性概览 (二)[05-20]
Visual C# 3.0 新特性概览(一)[05-20]
C#中调用Windows API的要点[05-20]
c#收取邮件[05-20]
利用C#实现标准的 Dispose模式[05-20]
关于C#中属性及值类性引用类型的..[05-20]
c#.net常用函数列表[05-20]
ASP.NET程序中常用的三十三种代码[05-20]
深入理解C#编程中的组件-事件-委..[05-20]
在C#中利用DirectX实现声音播放[05-20]
ASP.NET程序中常用编程代码(一)[05-20]
为ASP.NET 2.0菜单控件增加targe..[05-20]
JavaScript去除空格的三种方法 (..[05-20]
ASP.NET程序中常用编程代码(二)[05-20]