我对 TCP 连接的理解是,无论目的地是什么,源端口都只用于一个连接,因此来自本地端口 12345 的连接数永远不会超过 1。
我最近读到,TCP 连接由 <源 IP,源 PORT,目标 IP,目标 PORT> 标识
TCP 允许多个进程之间共享源端口,但每个进程都需要一个空闲端口来绑定以进行连接
所以我去验证了“跨进程的端口共享”:这一定意味着可以使用相同的源端口来连接不同的目的地。
但是,在进行实验时,我尝试了这两个命令:
nc -v -p 12345 google.com 80
效果很好(-v 表示详细,-p 表示将源端口指定为 12345,这是为了我的学习目的)
现在,在不同的 shell 上同时运行此命令
nc -v -p 12345 github.com 80
失败并显示以下错误消息:
nc:connectx 到 github.com 端口 80 (tcp) 失败:地址已被使用
我使用 -p 指定相同源端口的原因是为了验证源端口是否可以共享。实际上没有必要这样做,在实际情况下我甚至不会担心源端口。据此,源端口只会使用一次是真的吗?