参考如何分配源端口,我确实知道,本地端口是如何确定的。 (=> 随机免费临时端口)。
但是,为什么我的原始套接字使用分配的socket(AF_INET, SOCK_RAW, IPPROTO_TCP)
端口6
?
ss -lnp
显示:tcp UNCONN 0 0 0.0.0.0:6 0.0.0.0:* users:(("exe",pid=13164,fd=5))
我是否错误地创建了套接字(因为 IPPROTO_TCP 是用=6
in定义的linux/in.h
)?或者 RAW_SOCKETS 默认为端口6
(如果可用)?
如果这很重要的话,我正在使用 Ubuntu 4.15。
答案1
正如 @dirkt 所评论的,套接字不是端口绑定的,并且displays
协议位于本地 IP 而不是端口之后(显然不存在)。
使用socket(AF_INET, SOCK_RAW, 123)
, ss
输出??? UNCONN 0 0 0.0.0.0:123 0.0.0.0:* users:(("exe",pid=10039,fd=3))
此外,使用其他数字作为 的第三个参数进行测试表明socket()
,ss
作为本地port
.