
如果這是一個非常愚蠢的問題,我很抱歉;我的網路知識非常匱乏。
因此,使用者向某個位址發出 HTTP 請求。該請求來自本地子網路上的位址,但路由器知道將該請求傳送到其預設網關,因為目標 IP 與其路由表中的其他任何內容都不符。該請求透過網路跳躍並最終被目標電腦(Web 伺服器)接收。這一切都是有道理的。
但是現在,Web 伺服器如何設法將請求發送回本地電腦?該請求不是來自本地子網路上的 IP 位址嗎?它從哪裡取得本機電腦路由器的 IP 位址?即使它有該路由器的 IP,封包到達路由器後如何路由到本機?
答案1
該資料包具有如前所述的來源位址,而且還具有分配的連接埠號碼。這在 NAT 環境中尤其需要(其中內部 IP 是私有的,外部 IP 是恆定的 - 就像共享互聯網連接)。路由器隨機分配一個未使用的連接埠號,並保存一個該連接埠號碼所指的表(使用者的電腦)。當路由器收到封包時,它會查看連接埠號碼並進行配對並將其發送到電腦/使用者。
如果發現錯誤,請隨時更新/更正,但這就是它的工作原理。希望這可以幫助。
答案2
Web 伺服器的回應就像客戶端的請求一樣被處理。它們只是 IP 資料封包。
Web 伺服器有一個向其發送回應的預設閘道。回應「透過網路跳躍並最終被發起請求的客戶端接收」。
Web 伺服器對請求客戶端的路由器「一無所知」。
編輯:
你的評論背叛了我所做的假設。
您正在談論這樣一種情況,其中請求客戶端電腦具有專用 IP 位址並連接到具有網路位址解讀(NAT) 位於用戶端網路邊界(此網路連接至 Internet 的地方)的路由器。
在這種情況下,用戶端電腦的 IP 位址將由 NAT 路由器轉換為指派給 NAT 路由器的「外部」介面的公用 IP 位址。 NAT 路由器會追蹤請求,以便在從 Internet 收到回應時將其路由回用戶端。
答案3
答案在於SPI - 狀態資料包檢查。這就是路由器追蹤在其子網路上向何處發送回應的方式。我自己並不知道所有的細節(我從來不需要知道),但是如果您跟踪該鏈接,您會發現您可能需要知道的所有內容。如果沒有,搜尋「狀態資料包檢查」將填補任何空白。