这是监听端口80
的简单服务器localhost
:
nc -4 --listen 127.0.0.1 80
localhost
这是使用与服务器目标端口相同的源端口连接到服务器的客户端:
nc -4 --source-port 80 --source 127.0.0.1 127.0.0.1 80
我收到错误:
libnsock mksock_bind_addr(): Bind to 127.0.0.1:80 failed (IOD #1): Address already in use (98)
根据规定:{ SRC-IP, SRC-PORT, DST-IP, DST-PORT, PROTO }
必须是唯一的,应该允许创建此连接。在第一次尝试创建连接之前不存在这样的元组。为什么这是不允许的?我正在运行带有内核 4.4.6 的 Fedora 23。
答案1
你试图做的事情没有任何意义。您正在尝试使用相同的 5 元组创建两个 TCP 套接字,{ SRC-IP, SRC-PORT, DST-IP, DST-PORT, PROTO }
因此这两个套接字将无法区分。
可以这样想:如果允许这样做,那么当来自 127.0.0.1:80 且目的地为 127.0.0.1:80 的 TCP 数据包到达时,哪个套接字会接收它?两个都?