2010-12-05 175 views

回答

1

PART 1

好吧,让我们假设你在你的房子有一个路由器,你已经在你的房子几台电脑都通过路由器连接到互联网。

为了使路由器知道网络上的通信量,它将为家庭网络上的所有计算机分配唯一的IP地址(通常以192.168.x.x开头)。这些IP地址是本地IP地址,这意味着只有您的家中连接的路由器和计算机/设备才知道它们。如果您打开命令提示符并执行命令IPConfig,您将看到路由器为您的计算机分配的IP地址。

那么WhatIsMyIP.com向您展示的IP地址是什么?与您的路由器将地址分配给网络上的所有计算机的方式大致相同,您的互联网服务提供商将为其所有客户提供唯一的IP地址。现在,因为你有一个路由器,ISP可以在你的网络上看到的唯一东西是路由器和你的ISP给它分配一个IP地址。这就是为什么路由器也被称为硬件防火墙的原因,因为它的另一端的人不知道有多少台计算机或设备连接到它。

这意味着,当您访问互联网上的网站时,他们所看到的唯一IP地址就是您的路由器外部IP地址(由您的ISP分配的IP地址)。因此,无论您的家中使用哪台计算机,网站都不会知道其中的差异,因为它只能看到路由器的IP地址。继续尝试;在你家的几台不同的计算机上访问www.WhatIsMyIP.com。你会看到他们都显示相同的IP地址。但是,如果您在每台计算机的命令提示符处执行了IPConfig,则会显示您的路由器分配的本地地址,并且在您家中的每台计算机上都会有所不同。

因此,现在您已经了解了本地和外部IP地址之间的区别,您将如何检索在您的PC上运行的VB或C#.net代码中的外部IP地址?那么你的电脑实际上知道的唯一IP地址就是我们谈到的本地IP地址。你可以看到你的外部IP地址的唯一方法是进入一个网站,告诉你请求来自哪个地址(这将是你的路由器的IP地址)。

你需要做的是在你的VB.net程序中写出一些代码,导航到WhatIsMyIP.com(或其他可以给你你的IP地址的网站)并告诉代码抓取它。我写了一个位于http://www.u413.com/test/terminal/myip的Web服务,它只返回您的IP地址作为整个HTTP响应。为你的应用程序找到类似的东西,因为这个小样本不会永远留在那儿;我只把它放在那里作为我已经拥有的域名的临时示例。

请访问http://www.vbdotnetheaven.com/UploadFile/kbawala/WebRequestClass04182005054320AM/WebRequestClass.aspx,了解如何从计算机上运行的代码发出网络请求。

注意:如果您不知道IP地址的工作原理,您可能不知道DNS是什么。网上的所有东西都有一个IP地址,包括提供网站页面的服务器。但是,尝试记住所有您最喜爱的网站的最多12位IP地址会带来多大的痛苦。这就是DNS服务器的发明。 DNS服务器获取域名(例如www.facebook.com)并将其转换为正确的IP地址。这样你所需要记住的只是fac68.com而不是69.63.181.12(这是Facebook的IP地址,继续吧,试试吧!把IP放在浏览器的地址栏中,你会看到Facebook),域名更容易记住!

如果您想查看与网站关联的IP地址,请打开命令提示符。打开提示后,键入PING [websitedomain](例如PING Facebook.com),您的计算机将向您显示的地址发送4个测试请求。

PART 2

让我们假设你的IP地址就像是公寓栋的地址。送披萨的男孩需要知道公寓大楼的地址才能送你的比萨饼。但是当他到达那里时他会怎么做?有数百个门/公寓可供选择。他需要知道公寓号码(电脑上的端口号码)。

您的计算机拥有数千个端口,程序可以侦听其中任何一个端口以查找来自外部世界的请求。当您访问网站时,几乎所有网站都在端口80上提供。端口80是网页的默认端口。当你去facebook.com你实际上会去facebook.com:80,你只是看不到:80,因为它是默认的,因为它是隐含的。如果我建立一个网络服务器,我可以决定任何端口为网站提供服务。如果我在不同于80端口的端口上提供网页,则必须将其包含在您的URL中。 http://www.SomeDudesCustomWebServer.com:1337

传出的请求也使用端口,但那通常不重要,您的计算机只会选择一个可用的端口。所以当你去Facebook.com时,facebook网站服务器都通过端口80提供页面,但是你的计算机打开发送请求的端口不一定是端口80,因为它选择一个可用的端口,然后发送端口与请求。然后当facebook发送它的响应时,它将回复发送回发出请求的IP地址和端口。

传出端口仅用于请求的持续时间。必须监听连接的端口必须保持不变,否则发出请求的计算机将不知道将请求发送到哪个端口。

容易吧!

希望能帮助你更好地理解。

编辑:

端口转发

好吧,在你想使用/创建,如果你想让它过网沟通聊天应用的光,你必须了解端口转发。基本上,因为所有你能看到你的朋友的网络将是他的外部IP地址,你将不得不使用该地址连接到他的聊天服务器(反之亦然,如果他连接到你的聊天服务器,那么它将是你的外部IP )。正因为如此,连接请求只会达到具有外部IP的路由器,但它不知道网络上的哪台计算机将请求转发给该路由器。

您需要访问路由器的固件并设置端口转发,以便路由器知道将特定端口上的请求转发到网络上的特定计算机。有关如何设置端口转发的更多详细信息,请访问http://portforward.com/

编辑2:

防火墙

当设置的东西使用电脑与电脑进行通信时,你可能会开始感到沮丧,它只是将无法连接。什么可能阻止你是你的防火墙。默认情况下,PC上的大多数端口都被Windows防火墙完全阻止。对于您想要与之通信的每个端口,您都需要进入防火墙并创建一个打开端口的规则。有关如何使用Windows防火墙的视频,请点击此处http://www.top-windows-tutorials.com/windows-7-firewall.html。我没有看,但它是谷歌搜索的第一个。

不要简单地禁用防火墙。尽管这是一个打开所有端口的简单而快速的解决方案,但您仍然无法开始攻击。如果病毒能够在自己的计算机上安装并在开放端口上收听来自他们心爱的创建者的连接,那么他们就喜欢将自己安装在计算机上,以便他们可以访问您的计算机。只打开你需要的端口。

UDP VS TCP

当打开和转发可能会发现它要求UDP(用户数据报协议)或TCP(传输控制协议)端口。它们所代表的含义可能没有意义,但您需要知道的仅仅是:UDP用于单个数据包传输,这意味着PC发送的两个数据包可能彼此相关,也可能不相关。这些类型的数据包通常用于本地网络上的广播。我会使用的一个例子是局域网游戏。当您在局域网上主持游戏时,其他电脑/设备可以看到游戏名称并加入。这是因为托管游戏的计算机正在整个局域网上传输UDP广播,以便任何设备都能看到游戏。这些UDP传输通常包含游戏名称和连接游戏所需的连接信息。

TCP用于连续数据包传输。 TCP需要建立连接,在此连接上传输的任何数据包始终与该连接/请求相关。为了继续我最后一段的例子,一旦你点击局域网游戏上的连接,你的计算机就会与主机建立TCP连接,并在游戏或游戏期间使用该连接。 TCP是最常用的连接类型,您的聊天程序可能会通过TCP进行通信,尤其是当您通过网络连接时,因为UDP广播在互联网上毫无用处。 UDP只在局域网上非常有用。

您应该只安全地转发和解除阻塞TCP端口,但有时当我不确定时,我只是为了安全起见而使用UDP和TCP。事实上,许多路由器和防火墙都有3种选择:TCP,UDP或Both,这样可以避免为两种类型的端口创建两条规则。

如有疑问,打开/转发两者。

+0

+1好答案! – 2010-12-05 16:58:47

1

它们提供您面对IP的外部互联网。

此IP将取决于您如何连接到互联网。如果您直接从计算机连接到ISP,而无需使用任何类型的路由器或防火墙,则可能与您的内部IP相同,但在大多数情况下情况并非如此。 如果你在家里并且通过某种类型的路由器进行连接,那么你可以查询它的IP地址,但是没有这样做的标准方法。

没有从客户端自己获取外部IP的标准方法。如果您可以访问互联网上的服务器,您可以部署一些代码,则可以从客户端PC连接到该服务器,并询问您连接的是哪个IP。

IP Port Numbers

0

我还需要使用命令行的外部IP,但是因为我没有找到它,所以我用vb.net编写了一个小应用程序。您可以使用反射来获取源代码,或者通过应用程序home page询问它。基本上,应用程序打开提供您的IP并使用正则表达式解析它的网页,但是因为这个目的而使用了许多“技巧”(可以同时使用更多的网页,使用页面等)。检查来源的细节。