2010-12-05 186 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並使用正則表達式解析它的網頁,但是因爲這個目的而使用了許多「技巧」(可以同時使用更多的網頁,使用頁面等)。檢查來源的細節。