注意:我的術語和理解很可能是不正確的,請教育我!
TL;博士
為什么我不能在沒有埠轉發的情況下通過 Internet 從一個客戶端連接到另一個客戶端?
這與將兩個客戶端連接在一起的任何基于網站/互聯網的軟體有何不同?
我讀過的
- 沒有埠轉發就無法連接到已知 IP
兩種解決方案 - 最簡單的是他的防火墻上的埠轉發規則,第二種是您建議兩個客戶端都連接到的外部服務器。
- 在 Python 中連接計算機
可以從本地網路外部訪問計算機,但這通常取決于您作業所在機構的政策。最簡單的方法是進行埠轉發...
我的理解
路由器保護所有客戶端計算機不受外部連接(例如防火墻)的影響。這可以防止兩個客戶端通過 Internet 連接,即使它們知道彼此的 IP 地址,除非您明確告訴路由器讓它們通過埠轉發之類的方式進行通信。
我一直認為網站只是在某處計算機上運行的服務器。但顯然這是不正確的,因為我們剛剛確定在計算機上運行的服務器無法通過 Internet 連接到另一臺計算機,因為防火墻。
- 我(客戶端)可以打開一個瀏覽器,進入一個網路域(外部IP服務器),然后下載一張圖片。
- 但是我(服務器)無法撰寫程式將圖片發送到外部 IP(客戶端)。
- 我也(客戶端)無法撰寫程式來連接到外部 IP(服務器)并從中下載圖片。
Questions (looks like a lot but it's repetitive)
How is an external server that a client connects to (which has an external IP and is accepted through the router's firewall) any different from an external server that a client connects to (which has an external IP but is not accepted through the router's firewall)?
Essentially what is the difference between my computer running a server and a web domain server (computer).
What is different about the ISP, router, firewall of a web domain server from my own computer.
What is the difference between a computer I rent online running my server program which anybody in the world can connect to and my own computer running my server program which nobody can connect to (outside my LAN).
Why is it impossible for my own computer to run a server which anybody can connect to. What is the difference between a central server and a server on a computer in my LAN?
uj5u.com熱心網友回復:
總的來說,我認為您的困惑是基于我們可以在互聯網上做vs什么,典型的互聯網用戶的配置和包是什么。
在進一步討論之前,我不會假設典型的IPv4 選項而不是 IPv6 來回答您的問題。
當我們談論公共服務器 IP 時,我們真正的意思是 靜態的、擁有的外部 IP 地址。這些 IP 地址不會更改并由組織控制。這就是為什么他們經常有一個通過 DNS 與他們關聯的域名。在互聯網上發送到該地址的所有流量都進入他們的設備(租用或其他方式)。因此,他們可以選擇允許/禁止流量到達實際上會對資料執行某些操作的服務器。
Web域服務器的ISP,路由器,防火墻與我自己的計算機有什么不同。
您的互聯網是通過一個動態的、經過 NAT 的(可能是CG-NAT的)公共 IP 地址。您的公共地址會定期更改。這實施起來更便宜,并且假設您只想建立出站連接(獲取網站,而不是托管網站)。當您希望它在埠上偵聽時,您必須明確告訴它改變其行為。
我在線租用的計算機運行我的服務器程式,世界上任何人都可以連接到我自己的計算機運行我的服務器程式,沒有人可以連接到(我的局域網之外)有什么區別。
它有一個靜態公共 IP。
為什么我自己的電腦無法運行任何人都可以連接的服務器
這不是真的。正如您所提到的,如果您的運營商允許埠轉發,您可以打開一個連接到 Internet 的埠。您還可以使用更高級的策略,例如Nat-punching。
結束語 向您的互聯網提供商詢問靜態 IP 計劃的費用(不需要購買)是了解他們如何提供真正的服務器外部 IP 的好方法。
IPv6 也試圖做到這一點,因此 NAT 是可選的,任何人都可以托管任何東西。運營商采用它的速度非常緩慢。
uj5u.com熱心網友回復:
在您的家庭網路上,您有一個家庭路由器。這個家用路由器使用一種稱為 NAT 的技術,它會破壞您的 Internet 連接,然后用膠帶將其大部分重新組合在一起。這樣做是因為否則沒有足夠的 IP 地址讓每個人都擁有一個。
NAT 攔截來自您的計算機、電話等的連接,并使它們看起來像是來自家庭路由器。網路之外的一切都認為您的網路是一臺具有一個 IP 地址(路由器的 IP 地址)的計算機(即路由器)。就互聯網而言,您的計算機不存在,您的手機、筆記本電腦或平板電腦也不存在。
您無法從 Internet 連接到您的計算機,因為您的計算機實際上在 Internet 上沒有 IP 地址。哦,當然,您的計算機認為它確實如此 - 那些 192.168 事物之一 - 但這基本上只是 NAT 路由器和您的計算機之間的假裝游戲。
網路外的人只能連接到路由器,因為那是互聯網上真正存在的唯一 IP 地址。因此,如果您想運行服務器,它們必須連接到路由器,并且您必須告訴路由器如何處理該連接。這是埠轉發。否則,路由器無法知道如何處理連接請求。
在理想情況下,您的臺式計算機將只有一個 IP 地址,如果您想連接到臺式計算機,您將連接到臺式計算機的 IP 地址,就是這樣。這是IP地址短缺之前的情況。這也是今天的 IPv6 的情況,那里不缺。如果您沒有 IPv6,請咨詢您的 ISP。如果您的 ISP 不支持 IPv6,那么他們的服務很糟糕,您應該使用不同的服務。
當您租用服務器時,他們不會將租用的服務器放在 NAT 路由器后面,因為它們毫無用處。您可以租用的每臺服務器都有自己的 IP 地址。
您的 ISP 可能也有一個 NAT 路由器,因為甚至沒有足夠的 IP 地址讓每個家庭都獲得一個。NAT翻倍,破損翻倍。而且您的 ISP不會在他們的上設定埠轉發。在這種情況下,如果你問得好并付給他們一大筆錢,他們可能會給你你自己的 IP 地址(將你的路由器連接到 Internet)。你仍然想在你的路由器上使用 NAT,否則你會為更多的 IP 地址支付更多的錢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/457318.html
標籤:python sockets networking tcp
