Mr.*_*art 5 networking ssh operating-systems sockets
我对建立 SSH 隧道时发生的确切机制感兴趣。
假设我们有 3 台计算机:本地主机、中间主机和远程主机,具有以下拓扑:
Localhost --- INTERNET --- IntermediateHost --- LAN --- RemoteHost
Run Code Online (Sandbox Code Playgroud)
并且我们想建立一个通向在 RemoteHost 上运行的 Web 服务器的隧道。
中间和远程主机接受 SSH 连接。
当我在本地机器中执行以下命令时:
$ ssh -L 2022:remote:80 user@intermediate
Run Code Online (Sandbox Code Playgroud)
如果我假设以下,我是对的吗?
所以现在,在 Localhost 上运行的 Web 浏览器连接到 localhost:2022 并通过套接字发送“GET /”。SO 控制并将此信息封装在 TCP 数据包中,目标端口为 2022,然后将此信息封装在 IP 数据包中,目标地址为 LOCALHOST,操作系统的路由表确定该数据包是针对同一台机器的,所以它解开TCP数据包,读取目的地,然后解开它,将“GET /”返回给SSH客户端之前打开的serverSocket(在端口2022上)
这样对吗?因为据我所知,隧道通过SSH将TCP/IP数据包包裹起来,但是在这种情况下,SSH客户端无法访问TCP/IP数据包,它只能获取“应用程序级别”信息:“GET /”。
谢谢!
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |