是否可以使用 TUN/TAP 接口测试 TCP 堆栈?我正在考虑这样的机制:
+--------------------------------+
| TCP Client / Server |
| socket(AF_INET, SOCK_STREAM) |
| e.g. HTTP Server / Client |
+----------+---------------------+
|
| +---------------------+
| | TUN Device |
| | ( kernel does TCP ) |
| +---------------------+
|
+------------+----------------------+
| Linux Kernel + Forwarding Magic |
+-----------------------------------+
|
| +---------------------+
| |TAP Device |
| |Raw ethernet frames |
| +---------------------+
|
+----------+----------------------+
| Raw Socket API |
| socket(AF_PACKET, SOCK_RAW) |
| User mode TCP Stack over raw API|
| a HTTP client/server over it |
+---------------------------------+
顶盒是(比方说)一个标准的未修改的 HTTP 服务器,侦听已路由到 TUN 设备的 IP 地址。底部框是一个自定义 TCP/IP 堆栈,它适用于原始以太网帧。
问题:
- 是否可以像这样背靠背连接两个 TAP/TUN 设备?
- 这里需要“桥”吗?他们还怎么背靠背说话?
- 最后:有没有更好的方法来做到这一点?
提前谢谢。
PS:我将在同一台机器上运行所有这些。“盒子”更像是这里的过程或集合或过程。