【发布时间】:2018-11-26 02:06:11
【问题描述】:
我最近一直在用 c 代码和密码学研究网络,在思考随机问题时,我偶然发现了一个用于数据包嗅探的代码块,我对函数 recvfrom() 中使用的实际套接字有疑问.通过以下 sock 函数 rawSock = socket(AF_INET, SOCK_RAW, 0) 初始化套接字。
我了解SOCK_STREAM 和SOCK_RAW 是代表整数的宏;但问题不在于价值观,而在于结果。
我什么时候可以使用SOCK_STREAM 而不是SOCK_RAW,反之亦然?
我了解使用 SOCK_STREAM 的基本客户端和服务器通信。我正在使用 C 和 Linux
【问题讨论】:
-
简化你可以说 SOCK_STREAM 使用 TCP/IP,即 TCP over IP。 SOCK_RAW 只是 IP,无论您使用/实现什么。
-
初级答案:你永远不会使用
SOCK_RAW。专家回答:……除了…… -
除非你想嗅探网络。
标签: c linux networking ip