
如果您的 ISP 或防火牆阻止所有傳入連接,網路伺服器如何仍將資料傳送到您的瀏覽器?您發送請求(傳出),伺服器發送資料(傳入)。如果阻止所有傳入,Web 伺服器如何回應?
使用 UDP 的視訊串流和多人遊戲怎麼樣? UDP是無連接的,因此不需要建立連接,那麼防火牆或ISP將如何處理呢?
答案1
「傳入區塊」意味著傳入新的聯繫被封鎖,但是已確立的允許通行。所以如果出境新的聯繫被允許,那麼對話的傳入一半就可以了。
防火牆透過追蹤連線狀態來管理這一點(這樣的防火牆通常稱為「狀態防火牆」)。它看到傳出的 TCP SYN 並允許它。它看到傳入的 SYN/ACK,並可以驗證它是否與它看到的出站 SYN 匹配,並讓其通過,等等。如果它允許三向握手(例如,根據防火牆規則允許),它將允許該對話。當它看到會話結束(FIN 或 RST)時,它會將該連線從允許的資料包清單中刪除。
UDP 的處理方式類似,儘管它涉及防火牆記住足夠的資訊以假裝 UDP 有連接或會話(UDP 沒有)。
答案2
@gowenfawr 提供了高層圖片。然而,我想我應該添加一些關於如何執行連接追蹤的「匹配」的細節,因為對於外行人來說,這聽起來像是魔法。
每個 TCP 連線都有各自的連接埠號碼。大多數技術人員都知道,HTTP 伺服器在連接埠80 上運行。會被任何其他伺服器使用來自該電腦的 TCP 連線(作業系統可以執行此操作,因為它知道所有活動的 TCP 連線)。然後,初始TCP 設定封包將從您電腦的ip (IP_YOURS) 和連接埠號碼29672 傳送到Web 伺服器的ip (IP_WEBSERVER) 和連接埠號碼80。封包前往 IP_YOURS 連接埠 29672 的 80 不是新連接,它們是對現有連接的回應,並且是被允許的」。狀態防火牆維護一個表,如果長時間沒有看到任何資料包流向任一方向,則整個表最終會過期。
答案3
我猜防火牆只是為了阻止未經授權的收入連線。當您向 DNS 發送請求時,DNS 會回复,這不是未經授權的傳入連線。
答案4
我沒有運行伺服器,我訪問某些伺服器。我希望連接更加安全。我的想法是始終透過給定的一個連接埠來呼叫伺服器。永遠不要讓服務生打電話