网络编程和数据包交互

时间:2010-05-03 05:14:41

标签: c# java c++ network-programming packet

问候语,

本月我将开始研究硕士论文。我的论文主题是网络安全。

我需要处理网络接口和数据包。

我之前使用过shappcap与数据包进行交互,但我不确定C#是否是处理网络编程和数据包的最强大的语言。

我使用wireshark工作了一下,我看到它有多强大,而且你知道winsharp是使用C ++开发的开源。

我不确定是否应该使用C#或C ++进行网络安全编程,我希望您能够了解网络编程和数据包交互的最佳语言。

我应该使用C#,C ++,java还是其他东西?

请给我你的意见。

谢谢,

UPDATE ..........................

我将通过获取每个数据包并读取其上的每个字段然后使用这些值进行不同的数据包挖掘,并在相同的阶段中修改一些数据包值然后重新发送回来。

我希望控制数据包,因为它是由网络接口​​接收的,直到它传递到应用层。

5 个答案:

答案 0 :(得分:3)

您可以使用几乎任何您想要的语言进行网络编程。如果您对所提到的所有语言同样感到满意,则应确定要与哪些系统库或API进行交互。例如,如果您要在Unix系统上进行数据包级网络编程,那么C可能是您最好的。如果您想与Wireshark集成,请使用C ++。如果要使用Apache Commons组件,请使用Java。在尝试决定使用哪种语言之前,我建议您为实际程序提出一组更具体的要求。

答案 1 :(得分:3)

WireShark使用WinPCap,因此您也可以使用WinPCap。

对于安全应用程序,是一个入侵检测系统还是你真的想丢弃有问题的数据包? WinPCap,SharpPCap等不允许你丢弃数据包,为此你需要查看某种中间驱动程序或者查看Windows过滤平台(WFP)
http://www.microsoft.com/whdc/device/network/WFP.mspx

恕我直言,如果你能找到一个回调用户模式的回调驱动程序,并允许你过滤来自C#或C ++的数据包,这对于实验目的来说可能没什么用。但对于生产解决方案,我想想你需要坚持内核级别,以确保能够跟上窥视量。

答案 2 :(得分:0)

使用C ++,Boost和Poco,你可以做你想做的事。 Boost asio是:便携式网络,包括套接字,定时器,主机名解析和套接字iostream。 Poco库还提供网络,cryprography NetSSL等解决方案。欲了解更多信息,请访问www.boost.org和www.pocoproject.org

答案 3 :(得分:0)

如果你愿意,可以使用java - jpcap效果很好。

答案 4 :(得分:0)

我建议使用C#,因为有一个非常强大的库Pcap.Net,它使用.NET代码包装WinPcap。这样可以让您轻松接收,发送和解释不同协议的不同数据包。