外網的資訊是怎麼傳到我的電腦上的?(已解決)

來源:互聯網
上載者:User

問題描敘:比如我的電腦,處於兩層路由下面,第一層路由本地IP:192.168.1.1,第二層路由對於第一層路由的IP:192.167.1.111,第二層路由對於路由下面的路由IP:192.168.7.1,我的電腦本地IP:192.168.7.101,那麼外網的資訊是怎麼傳到我電腦上的呢?比如我訪問一個網站,網站怎麼將返回的資訊準確的返回到我的電腦上呢?(這裡討論的不是底層,具體屬於哪一層我也不好說,才疏學淺,不好定位,還請見諒!)

已知:某網站外網IP:220.181.111.148,第一層路由的外網IP:60.177.33.204,當然這內網電腦對於外網都是這個IP。查得,本地電腦上的瀏覽器訪問外網,外網檢測到使用的連接埠號碼為:43403,使用軟體檢測到我的電腦使用的連接埠號碼為:1939。第一層路由本地IP:192.168.1.1,第二層路由本地IP:192.168.7.1。

求:外網怎麼將我電腦請求的網頁內容發送到我的電腦上呢?

解:做http網站,一般都使用80連接埠,那麼,我們訪問這個網站,則是給這個外網IP發送一個或一系列的特定命令。因網站的IP和連接埠都很明確,因此給網站發送訊息就很簡單了,IP+連接埠號碼。那麼網站又是怎麼給我電腦發送資訊的呢?

首先,我的電腦有給外網網站發送資訊,那麼,它就知道了我的電腦訪問它是使用的什麼IP,什麼連接埠。比如60.177.33.204:43403。

當然,最開始時,我還沒有使用軟體研究連接埠號碼。開始時我只知道,內網本地在外網上的外網IP都是相同的,資訊怎麼發送給特定的電腦呢?開始我有限的知識,只能想到:廣播。但很明顯,這種方法是不可行的,雖然能夠達到目的,但我們本地這麼多電腦,都在上網聊天什麼的,這樣廣播起來還怎麼上網?

開始時,在網上查,根本就沒查到我想要的,或許我沒有找對關鍵字吧,找到的都是怎麼串連二級路由什麼的。後來在詢問別人這個問題時,別人給我提到一個關鍵詞:NAT。我再上網一查,於是一切明了!

結果就是:網路位址轉譯(NAT)

答:先拿我的電腦給給外網網站發送一條命令舉例,我的電腦本地IP:192.168.7.101,使用的連接埠號碼為:1939,目的地:220.181.111.148:80。因為中間有路由,那麼,這條命令首先發送給第二級路由:192.168.7.1,二級路由收到這條資訊後,開啟一個連接埠A,並將連接埠A映射到我的電腦的1939連接埠上,即映射到192.168.7.101:1939上。那這條命令的發送地址就由原來的192.168.7.101:1939變成了:192.168.1.111:A。這條命令再由二級路由傳給一級路由,一級路由同樣開啟一個連接埠:B(43403),映射到192.168.1.111:A。

這時,第一層路由已處於外網,於是將IP地址轉為它所處外網的IP:60.177.33.204:43403(B),那麼,網站收到的資訊顯示的IP地址和連接埠就是:60.177.33.204:43403(B)。網站伺服器將收到的命令處理後,將返回的資訊(msg)發送給60.177.33.204:43403(B)。一級路由收到後,尋找到這個連接埠號碼對應192.168.1.111:A,於是將目的地址改為:192.168.1.111:A並發送出去,於是二級路由收到這條資訊,並查得這個連接埠號碼對應192.168.7.101:1939,並將目的地址改為192.168.7.101:1939並發送出去,於是,我的電腦就收到資訊了!

總結:

註:這裡,兩個路由開通的連接埠是有時限性的。比如,開通的連接埠號碼1分鐘(具體多長時間沒細研究)沒有資料轉送,則銷毀這個連接埠,重新分配,則如果這個時間之後,網站還給這個連接埠發送資訊,則網站所想發送到的電腦幾乎不肯能收到。

本部落格有TCP/IP和UDP的通訊常式,使用時,需要至少知道一方的IP地址,和能固定連接埠。具體使用方法如下:

假設條件也和我一樣,或者有更多層的路由,道理是一樣的,上層路由對於下層路由來說,上層路由的IP和連接埠號碼是知道的!

例如我的電腦作為下層(具體下到多少層?能用就行,多少層應該沒關係)路由上串連的一台電腦,IP地址為:192.168.7.101,我的上層(具體上到多少層?應該都可以)路由上的一台電腦IP地址為:192.168.1.103。那麼,是用上層路由上的電腦作為伺服器,使用某一連接埠號碼D通訊,可在程式中設定。下層電腦作為用戶端,用戶端設定好伺服器的IP和連接埠號碼,例如:192.168.1.103:D,並設定好用戶端本地的IP地址和使用的連接埠號碼,例如:192.168.7.101:E。

那麼,先開啟伺服器端,再開啟用戶端,伺服器端接收到小心,並且明確用戶端對於伺服器端是用的什麼IP,什麼連接埠號碼,並且使用此連接埠號碼和用戶端通訊。

常式代碼實測,我的電腦能和我上一層路由的電腦通訊!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.