家里路由器如何共享同一个ip
曾經學過計算機網絡,也知道Mac地址,IP 地址,路由轉發,路由算法。 同時也理解IP是4個字節,分為A、 B 、C 類型網,還有D廣播 E保留,表示的網絡數量和機器是有限的。隨著計算機日益增加,需要越來越多的ip,已有的ip地址已經不足表示這么多網絡和機器。 書中也有各種方法去解決擴展子網, 比如 Classless And subnet Address Extension (CIDR) ---來自于Douglas E.Commer 經典書 Internetworking with TCP I ---中講的Subnet Addressing,這些都是擴展局域網地址,但是本質上沒有增加表示的機器數量。現實中 ,自己用的電信的ADSL,申請一個IP,接上一個Modem,連接一個路由,然后就可以接好4臺電腦,同時上網。? 換句話說,也就是這4臺電腦其實同時用一個ip 上網。怎么做的呢?
感覺,這個才是一個真正擴展IP,其路由器連接的若干臺機器所在的局域網,只有一個ip地址。 所有機器上網,所有的請求都是通過路由器轉發出去。 曾以為請求就是這樣,局域網中某一個機器,發送一個請求,該請求被封裝成為若干個ip包,對于每一個ip包路由器將其自己共有網的地址加在改ip包上,然后轉發出去在外網上層層轉發達到目的地址。
但是再想,好像不對。如果該請求被對方服務器接受,那么該服務器如何區分改共有IP(路由器的ip,從電信那分配過來的)還有其私有IP(局域網的ip)?對方服務器如何響應請求? 如果是基于socket 程序,如果得到對方那么多ip地址? 如果即使得到,那么客戶程序不是就得重新變化?? 更何況如果該包被以這種方式轉發多次,那么該ip包就有好多個ip,那問題不是復雜多。
感覺猜想不對。這種方式共享ip的局域網,肯定不是這樣組成一個ip鏈來轉發消息的。 那應該是什么?
回顧一個整個過程:不同機器發給ip包給了路由器, 路由器只是把ip包ip轉換一下,把私有ip轉換為共有ip,即路由器的ip。(可以通過tracert來查看第一個出去的ip,就是ISP分配過來的IP),再由路由器統一發出去。 那么該局域網中不同機器,發出去的請求都是經過路由器,那么其轉換后的IP都是一樣的。 那么對于路由器接受到的來自外面的相應,如何轉發到指定的局域網的某一臺機器?
可以看到路由器就是一個轉發站,將出去的請求轉發到外面,同時將外面的相應轉發回來。肯定需要這么一表,如何將來自局域網的請求轉發出去,同時將外面請求根據該表來轉發回來。 感覺是端口了。路由器就是用端口轉發的。
對于一個來自與于內部的請求包,路由器記下來來自于那個機器,并用指定端口發出去。 對于外面的回來的相應,根據端口號,查表,修改ip包,轉發到指定的機器上。 如此一般。
查一下資料好像就是NATP原理。
但是NATP 也有問題,比如說FTP協議,它有兩個連接,一個是控制連接,另外一個是數據連接。 先有FTP客戶端建立一個TCP連接去連接服務器,然后在有數據傳輸時,需要客戶端需申請一個新連接。 創建一個新的socket,??那么服務器怎么知道客戶端對方的端口號? 這需要客戶端已經建立的控制連接,將新生成的Socket的端口,轉換為ASCII 碼,然后由控制連接傳給對方,對方再根據端口建立數據連接,來傳送文件。 問題出來,如果一個用NATP方式,用戶的端口是本地的端口,路由器如果不解析該IP包并將其映射為本地端口,否則客戶端的port 對于?服務器來說是無效的。?
大膽假設,小心求證。
轉載于:https://www.cnblogs.com/zhyg6516/archive/2011/01/09/1931171.html
總結
以上是生活随笔為你收集整理的家里路由器如何共享同一个ip的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 47、Windows驱动程序模型笔记(五
- 下一篇: 白盒测试职位