目錄
一 NAT技術
二 內網穿透/內網打洞
三 代理服務器
一 NAT技術
跨網絡傳輸的時候,私網不能直接訪問公網,就引入了NAT能講私網轉換為公網進行訪問,主要解決IPv4(2^32)地址不足的問題。
1. NAT原理
當某個內網想訪問公網,就必須先找到處于同一個網段的出入口路由器,而內網又不能暴露在公網上,所以當IP地址到達路由器時,路由器會把源IP轉換成路由器的WAN口IP,并和源IP進行映射,這里他們互為 key <=> val,當服務器回顯時,填充目的服務器IP地址,也就是之前經過轉換后的IP地址,源地址填服務器的IP地址,在路由到目的IP所在的路由器,并由該路由器進行查映射表,查到轉換之前的私有IP,在進行轉發。
示例:
假設路由器的IP地址是202.244.174.37,源主機IP為10.0.0.10,目的IP地址為163.221.120.9
1. 經過路由器轉換進行映射:
源:? ? 10.0.0.10 <=> 路由器:202.244.174.37
目的:163.221.120.9 <=> 路由器:163.221.120.9
2. 經過服務器響應并路由回來:
服務器填充源IP:163.221.120.9,目的IP:202.244.174.37
路由器進行查表:202.244.174.37,查到得到:10.0.0.10,并交付給最初的主機。
3. 如果有2臺主機同時向同一個目標服務器,那么路由器進行替換的時候就是:
源:? ? 10.0.0.10 <=> 路由器:202.244.174.37
源:? ? 10.0.0.11?<=> 路由器:202.244.174.37
這時就有2對一樣的key了,后面的key會把前面的key覆蓋掉,導致一方的主機的請求響應給后一個主機了,針對這個問題,路由器不僅要保存IP地址還要保存端口號,并讓后來的端口號++,這樣后續響應回來的數據雖然IP地址重復了,但端口號不一樣,也就解決了多臺主機訪問同一資源映射導致的問題了,所以路由器不僅要緩存IP地址也要緩存端口號。
4. 這種把源IP地址/端口進行替換并建立映射就是NAT技術。
二 內網穿透/內網打洞
1. 前置
1. 正常主機A訪問服務器進行一系列的NAT轉換最終得到響應。
2. 那么一開始映射表沒有服務器能不能直接訪問主機A,不能,私網不能出現在公網上,同樣的不同子網的內網最開始也不能直接通信。
2. 內網穿透
當B訪問B自己的服務器建立映射表,并且服務器將來把收到的報文在轉發到B自己,此時A訪問這個服務器,服務器就會把A的報文轉發到B,之前已經建立了B到服務器的映射,現象就是A直接穿透到了B,也就是內網穿透。
2. 內網穿透
這種通過得到對方轉換后的IP地址,并且對方已經建立了映射表,后續就可以不通過公網服務器,直接路由到對方的路由器,因為對方已經和路由器建立了映射,發送方拿映射后的IP地址就能直接訪問到對方建立映射表的路由器,這種不通過公網,直接從一個路由器跳到另一個路由器的技術也就是內網打洞,類似對方的路由器打了個洞,讓發送方直接進去。
三 代理服務器
1. 正向代理
多個主機訪問外網首先會經過代理服務器,由該服務器部署的某些服務幫你訪問并響應回去,為什么要這么做?統一管理這些主機,比如訪問非法網站,陌生的IP地址就直接不做轉發,請求也就失敗了。如果有多臺主機訪問同一個靜態資源,代理服務器也能緩存,收到請求直接返回提高效率。當進行轉發的時候把主機的IP替換成代理服務器的IP地址,也能保護主機的身份。某個主機資源開銷高,就限制這臺主機的資源速率,比如控制下載速度等。
2. 反向代理
發送方主機請求打到代理服務器,由代理服務去分配給接收方主機,比如采用輪詢,隨機分配等策略,避免某一臺主機壓力爆滿,而其他的一直空閑,這種技術叫做負載均衡,當然也能保護客戶端的身份,緩存等。