2009-10-17 129 views
0

我刚开始编写套接字程序。知道单个UDP数据包有源端口目标端口和一些代表路由器的MAC地址..等等。我想知道为什么有人不能创建带有假信息的定制数据包并通过互联网发送。我想知道我们的电脑有多安全。应该采取什么措施来保护它?网络有多不安全?

回答

5

答案有几个不同的方面。

一个是网络依赖于TCP而不是UDP。这意味着它是面向连接的。你的软件包将被拒绝,除非它似乎是现有连接的一部分(这意味着,除其他外,它还必须具有正确的源IP和端口,并且它必须具有适合的序号接收窗口)。当然,这仍然可以没有太多的麻烦。但它确实需要您了解有关在原始连接上发送的数据包的一些信息。

另一部分是,无论何时我们需要确定数据包的发件人是他们自称的人,我们都使用加密。 :)

大多数数据包并不真的需要这个。如果有人向Google发送请求,其中出现来自我的IP,这并不是什么大问题。但是在进行信用卡交易时,它变得更加重要。

+0

你说网络依赖于TCP,但我认为一些多媒体内容在UDP上运行。它是否正确? – LJM 2009-10-17 17:31:53

+0

@fella HTTP是TCP,而UDP通常留给流媒体,以及如果由于正常的网络噪声导致一些数据包消失,那么这些数据并不重要。 – David 2009-10-17 17:44:04

+0

另外请注意,“网络”是HTTP,它与“互联网”不一样 – lfaraone 2009-10-17 18:05:07

3

大多数TCP/IP协议栈“泄漏信任”,正如我曾经说过的那样 - 而且作为一名软件开发人员(假设您正在寻找一种编程解决方案,并非如此,否则,stackoverflow的错误的论坛,去服务器故障或超级用户;-)可以做到这一点 - 超越选择和仔细实施的安全期望合理的协议。

HTTPS(具有强大的证书检查等)是一个合理的强大方法;为了提高安全性,请研究SSH和基于VPN的方法。当然,除非他们已经采取了特定的步骤,否则没有人应该承担隐私或强大的身份验证(如果他们采取了这样的步骤,他们可能仍然受到成功的攻击,这就是为什么使用现有的,或多或少的“证明” “诸如HTTPS,SSH,VPN等解决方案是可取的;-)。

1

是的,任何人都可以用他们想要的任何数据创建数据包并通过互联网发送出去。特别是对于UDP,你可以假装成任何你想要的人(除非你的ISP出口过滤)。对于UDP 的源地址不可信,因此不能。 TCP的源地址可以达到某种程度(您知道数据必须来自相关IP地址或路由中的某个人)。

欢迎上网:)

编辑:只是为了澄清过滤外出是后话了发送 ISP将不得不这样做。作为一个接收者,实际上没有任何事情可以通过UDP数据包来验证地址,而无需与发送者进行通信。您至少可以部分信任传入的TCP连接的唯一原因是TCP需要某些控制数据流回发送方(因此需要一个有效的IP地址/端口来设置连接并维护它)。

1

好吧,很多人创建无效数据包并通过Internet发送它们;例如,阅读Ping of death

完全安全的计算机是关闭的计算机。为了让您的跑步PC更安全,您应该依赖防火墙软件/硬件,它们可以检测出格式错误的数据包。

1

可以很容易地创建带有假信息的自定义数据包。因此你必须确保你不会受到他们的伤害。