Concept
networking
概述
通过SSH和socat实现端口转发与Unix socket映射,可远程访问本地服务,如将本地8080端口映射到远程主机的1080端口,或转发MySQL服务到本地端口。
什么是 networking
Networking 是计算机之间通过协议和物理/逻辑连接进行数据交换的技术体系,涉及地址分配、路由、传输控制、安全策略等,是分布式系统和互联网服务的基础。
核心概念
- IP地址与端口
- IP地址标识设备网络位置,端口(0-65535)标识服务监听的通信入口。
- 传输协议
- TCP:可靠流式传输(三次握手、流量控制)。
- UDP:无连接、低延迟(如视频流、DNS)。
- 路由与NAT
- 路由决定数据包路径,NAT(网络地址转换)实现私有网络与公网的通信。
- Socket
- 网络通信的端点接口,支持TCP/UDP,Unix Domain Socket 用于本地进程间通信(IPC)。
- 防火墙与安全
- 规则过滤流量,防止未授权访问(如SSH端口22的访问控制)。
典型应用场景
- 远程端口转发(SSH)
- 将本地服务(如本地8080)通过SSH隧道映射到远程主机端口(如远程1080),实现远程访问:
1ssh -L 1080:localhost:8080 user@remote_host
- 将本地服务(如本地8080)通过SSH隧道映射到远程主机端口(如远程1080),实现远程访问:
- MySQL服务转发
- 通过SSH将远程MySQL服务(3306)转发到本地:
1ssh -L 3306:remote_db_host:3306 user@jump_host
- 通过SSH将远程MySQL服务(3306)转发到本地:
- Unix Socket映射(socat)
- 将TCP服务(如HTTP)绑定到Unix Socket,供本地进程使用:
1socat TCP-LISTEN:8080,fork UNIX-CONNECT:/tmp/mysocket.sock
- 将TCP服务(如HTTP)绑定到Unix Socket,供本地进程使用:
相关技术
- SSH(Secure Shell)
- 安全远程登录与隧道工具,支持端口转发、X11转发。
- socat
- 多协议数据转发工具,支持TCP/UDP/Unix Socket/文件等双向通信。
- iptables/netfilter
- Linux内核级防火墙,用于流量过滤、NAT转换(如端口映射)。
- Docker网络模型
- 容器间通信(bridge/host/overlay网络)、端口映射(
-p参数)。
- 容器间通信(bridge/host/overlay网络)、端口映射(
- VPN与SDN
- 虚拟私有网络(如OpenVPN)、软件定义网络(如Calico、Cilium)。
学习路径建议
- 基础
- 学习TCP/IP协议栈(OSI分层、IP/TCP/UDP原理)。
- 配置本地网络(
ifconfig,ip,route命令)。
- 实践
- 搭建SSH隧道,实验端口转发与反向代理。
- 使用socat实现Unix Socket与TCP/IP桥接。
- 深入
- 分析Wireshark抓包,理解数据包结构与协议交互。
- 阅读《TCP/IP Illustrated》《UNIX Network Programming》。
- 进阶
- 掌握iptables规则编写与NAT配置。
- 研究容器网络(CNI、Overlay网络)与SDN架构。
- 安全
- 学习防火墙策略设计、IPsec/SSL加密隧道。
- 实践DDoS防护与网络隔离(VLAN、网络策略)。