從0實現 BT 下載 :3 P2P 網絡

經過前面2篇,已經實現:1,種子解析 2,Tracker 服務器的訪問 3,得到 peers 用戶ip 端口。

P2P 網絡:peer to peer  ,去中心化網絡,用戶和用戶之間建立連接,下載和 C/S 軟件不同,多人下載不會搶 server 速度,下載人越多速度越快。

內網穿透:一般來說普通的用戶,不管是光纖介紹還是手機4G,現在分配到的ip 地址都是一個 內網IP 10.x.x.x, 非公網 IP,但是我記得10年前,還是用 電話線 ADSL 上網的時代,登錄到路由器上查看 wlan ip 是公網ip ,這個時候只需要配置一個 DMZ 主機,就可以將 路由器下面的 NAT IP 全部暴露到 公網 IP 上。

在 電腦上裝個 IIS 6.0 ,把 wlan ip 的給其它的好友,就可以訪問自己電腦上發佈的網站,但是重新撥號 公網 IP 會變,那個時候又有 3322動態域名。

說的有點遠了,簡單介紹 NAT , 普通用戶通過 路由器上面,會分配一個內網ip 如 192.168.1.123 ,但是用來上網是根本沒問題的,訪問 www.baidu.com www.google.com 因爲他們都有公網IP。反過來,因爲現在你沒有了外網IP,你電腦上裝個 IIS 別人是訪問不了的。

NAT 分爲4種:

Full cone NAT
即著名的一對一(one-to-one)NAT一旦一個內部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有發自iAddr:port1的包都經由eAddr:port2向外發送。任意外部主機都能通過給eAddr:port2發包到達iAddr:port1

Address-Restricted cone NAT
限制地址,即只接收曾經發送到對端的IP地址來的數據包。一旦一個內部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有發自iAddr:port1的包都經由eAddr:port2向外發送。任意外部主機(hostAddr:any)都能通過給eAddr:port2發包到達iAddr:port1的前提是:iAddr:port1之前發送過包到hostAddr:any. "any"也就是說端口不受限制

Port-Restricted cone NAT
類似受限制錐形NAT(Restricted cone NAT),但是還有端口限制。
一旦一個內部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有發自iAddr:port1的包都經由eAddr:port2向外發送。一個外部主機(hostAddr:port3)能夠發包到達iAddr:port1的前提是:iAddr:port1之前發送過包到hostAddr:port3.

Symmetric NAT(對稱NAT)
每一個來自相同內部IP與port的請求到一個特定目的地的IP地址和端口,映射到一個獨特的外部來源的IP地址和端口。
同一個內部主機發出一個信息包到不同的目的端,不同的映射使用
外部主機收到了一封包從一個內部主機可以送一封包回來

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章