路由器如何追蹤連線?當您發送 http 請求時,它會傳送到路由器,然後透過網路傳送到另一個路由器等;但是它如何知道要存取伺服器,連接埠是否轉送到負載平衡器?最後,當資料包返回時,它如何知道返回電腦,因為資料包被發送迴路由器而不是電腦?是否可以從路由器外部建立到由路由器控制的電腦的連接,即您可以將資料包定向到未直接連接到互聯網的電腦嗎?
答案1
我試著回答這個老問題,希望能幫助那些正在尋找這樣的東西的人。另外,如果我犯了任何錯誤,請告訴我。
為了使資訊從您的電腦流向互聯網上的網路伺服器,有許多不同的組件、設備和演算法在起作用,但我們將重點關注使這成為可能的網路演算法。
我相信主要有兩種互聯網技術在使電腦和互聯網網路伺服器之間的資訊流成為可能方面發揮著最大的作用。路由協定和NAT。
我們將重點放在 IP 封包,因為它是路由協定和 NAT 所處理的資料單元。
- 當從瀏覽器發送到互聯網伺服器的 IP 封包到達家庭路由器時,它會被檢查,並將其來源 IP 從原始發送者的本地 LAN IP 更改為家庭路由器的公共 IP,然後路由到目的地智慧財產權。該翻譯記錄在連接表。這是 NAT 的工作。
- 如果目的地是路由器公用 IP 網路的一部分,則將其傳送至該 IP,否則將根據路由表進行評估以進行比對。如果路由器找不到,它會將封包轉送到自己的預設閘道。這個過程一直持續到路由器最終找到匹配項為止。這就是路由協定發揮作用的地方。
- 如果未找到路由,則向來源主機發送 ICMP Destination Unreachable-Host Unreachable 訊息。
- 一旦找到最終主機,它就會接受解封裝的 IP 封包,處理其中包含的請求,然後發迴回應。在回應的目標 IP 中將包含來源路由器的 IP。
- 回應將遵循與請求相同的過程,直到到達發起者。請注意,當資料包採用特定路由到達目的地時,它們不一定需要採用相同的路由返回。
- 一旦到達目標互聯網 IP,路由器就會將傳入流量與其連接表進行匹配,執行反向轉換,然後將封包轉送到適當的機器。
這就是 IP 封包從瀏覽器流向目標 Web 伺服器的方式。
- 有 4 個連接,因為我認為我打開的頁面使用了 4 個不同的請求來建立頁面。
- 發起連線的用戶端可以使用任何可用的來源連接埠。該連接埠將保留為臨時使用,直到兩台電腦同意關閉連線。 IANA 建議對這些所謂的「臨時連接埠」使用範圍 49152 到 65535。 Web 伺服器通常在端口 80 上運行,這是 HTTP 流量的預設端口,因此客戶端會將查看網頁的請求發送到該端口。
- 在家庭路由器中,泳道是路由器連接表的快照。
- 在超級用戶伺服器中,泳道是與伺服器建立的連線的快照。
連接表主要透過來源IP、來源連接埠、目的IP、目的連接埠的組合來保證唯一性。顯然,確定唯一性的最重要因素是來源端口,因此如果不同的內部主機嘗試使用現有的來源端口,則路由器會更改該端口並在連接表中記錄更改
這應該可以回答除這個問題之外的所有問題,是否可以從路由器外部建立到由路由器控制的電腦的連接,即您可以將資料包定向到未直接連接到互聯網的電腦嗎?
如果您知道路由器上用於特定 Internet IP 的 NAT 端口,並且您能夠欺騙 IP 封包並將其發送到路由器,同時路由器打開其 NAT 端口,那麼理論上這應該是可能的,但我確信大多數的路由器使用更多的參數來識別IP封包的唯一性和真實性。
我使用以下參考文獻來建立我的答案:
答案2
路由器透過網關或介面連接網絡,簡單來說:
Do I know where this packet should go?
yes - is it one of mine?
yes - send to appropriate interface.
no - send on to next gateway
no - return a packet saying unreachable
您的家庭路由器將運行連接追蹤軟體 - 它將保留您網路上的電腦在互聯網上與之通訊的連接清單。因此它將知道返回回應的位址和連接埠。
TCP封包有一個特殊字段,可以包含原始機器的位址。路由器使用一種稱為偽裝的方法來插入其回傳位址,目標電腦也包含它。這可以節省連接追蹤器的一些工作,但也可以向遠端伺服器顯示內部 IP 位址。
另一方面,傳回 UDP 封包依賴路由器的連接追蹤器模組將回應傳回原始電腦。直到幾年前,這還是一個很難解決的問題。
新的傳入連接在連接追蹤器中不會有任何條目,因此路由器將不知道將其發送到哪裡,除非為該類型的封包提供特定的轉發指令,並且您會在所有路由器中找到一種能夠例如,指定網路上的哪台電腦將接收連接埠 80 的新請求。
TCP 是一種複雜且令人驚奇的狀態驅動協議,資料包不必採用相同的路線,可以分解成更小的部分,無序到達,並透過糾錯請求重新傳送各個資料包,並且資料流可以重新組裝兩端的應用程式時不會發現任何困難,除非它們太大而無法影響效能。許多博士都是透過它獲得的!
答案3
要了解路由,首先應該了解開放系統互連模型你還應該了解CIDR。
這將是相當基本的:
當封包離開標準家庭網路上的電腦時,電腦知道這是一個專用網絡,並且由於 CIDR 的原因了解最終目的地位於網絡外部,因此會將封包傳送到預設網關。預設閘道查看 IP 並將其沿著路由器鏈向上發送,直到到達目標網路(基於封包標頭中的 IP 資訊),然後該閘道會將其轉送到網路上的正確 IP(有時這是基於封包詳細資訊中的端口,有時只是IP,取決於遠端伺服器/網路)。當要求的資訊被傳回時,您的路由器會因為選擇標記會話的連接埠而知道它前往哪台計算機,並且它知道該會話屬於哪個私人 IP。還有很多內容,但這是獲取路由概念的相當高層次的解釋。我相信其他人會糾正我或補充這一點。
對於你的問題的答案,是的,這是可能的,你只需要知道端點的公共IP和需要建立連線的連接埠。路由器將負責了解將該連接埠轉送到哪台電腦以到達專用網路上的伺服器(基於 NAT 規則)。
答案4
我不確定我是否理解正確,但我會給出我最好的猜測。我假設您指的是遠端存取。您可以使用 vnc 或遠端桌面之類的東西。如果您正在談論透過網路連線的兩台電腦,請查看 VPN。如果你的意思是一個人從另一個人那裡分配一個IP,那麼這將是一個伺服器/客戶端連接,並且透過WAN它必須是類似於VPN的東西。
TCP 封包包含封包內 LAN 目的地的資訊。