4 tcpcopy
4.1 原理
TCP/IP四層網絡模型
| 應用層 | HTTP, FTP, ... |
| 傳輸層 | TCP,UDP |
| 網絡層 | IP, IMCP, ... |
| 網絡接口層 | ethernet, ... |
簡單地說,tcpcopy是在OS(online server)從IP層復制請求包,修改其中的源地址,發(fā)給TS(target server)。TS處理之后的響應包會被AS(assistant server)攔截丟棄掉,避免將不真實的包發(fā)給用戶。
詳情請見tcpcopy手冊
4.2 核心概念
- online server: 部署并執(zhí)行tcpcopy命令,拷貝數據包,修改,并發(fā)送給target server
- target server: 增加路由規(guī)則,將響應包發(fā)送到assistant server
- assistant server: 部署并執(zhí)行intercept命令,攔截并丟棄target server響應包
流程圖
4.3 具體操作
- online server:
tcpcopy -x $onlineServerPort-$targetServerIp:$targetServerPort -s $assistantServerIp -c 62.135.200.10 -d
其中-c參數是比較關鍵的,表示把原來的數據包中的client ip改成特定ip,這個主要是為了方便在target server上添加路由規(guī)則。后面的這個62.135.200.10
是我隨便寫的。更多的參數可以查看tcpcopy -h
assistant server:
intercept -i eth0 -F "tcp and src port $targetServerPort" -d
target server:
route add -net 62.135.200.0 netmask 255.255.255.0 gw $assistantServerIp
4.4 高并發(fā)流量
- 單臺online server執(zhí)行tcpcopy指定-n 流量倍數
- 多臺online server執(zhí)行tcpcopy
其中方案1,對于有寫請求的場景不適用,可能會有臟數據或其他的問題出現,推薦方案2。