使用相同的源端口和目标端口连接到本地主机上的服务器

使用相同的源端口和目标端口连接到本地主机上的服务器

这是监听端口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 数据包到达时,哪个套接字会接收它?两个都?

相关内容