套接字类型的区别

use*_*825 2 python sockets

是的,我确实已经尝试找到相关信息.

Python套接字文档列出了我认为的协议列表:

SO_*
socket.SOMAXCONN
MSG_*
SOL_*
IPPROTO_*
IPPORT_*
INADDR_*
IP_*
IPV6_*
EAI_*
AI_*
NI_*
TCP_*
Run Code Online (Sandbox Code Playgroud)

他们究竟做了什么?比方说我用过

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
Run Code Online (Sandbox Code Playgroud)

这是做什么的?我知道它是一个原始套接字,但IPPROTO_IP是否意味着我必须构建一切?(即IP头到TCP的数据?)

Python文档说我可以在套接字的Unix文档中找到有关上述内容的信息,但我找不到该文档.谁知道它在哪里?

nic*_*_zs 6

有许多Linux手册页描述套接字:

通常,我们使用以下参数socket:

  1. 地址族:AF_INET用于Internet域地址族,AF_UNIX用于UNIX域地址族.

  2. 套接字类型:SOCK_STREAM用于TCP,SOCK_DGRAM用于UDP.当然你可以SOCK_RAW用来直接访问IP协议.

  3. 协议:使用TCP或UDP时,将其保留为0就好了; 使用RAW时,可以将协议指定为0,将TCP套接字指定为IPPROTO_TCP,为UDP套接字指定IPPROTO_UDP.

并且,SO_表示"套接字选项",SOL_表示"套接字选项级别",用于设置套接字选项setsockopt(也在SOCKET中提到).

实际上,您可以在本SEE ALSO节的底部找到更多页面.请注意,2或3的页面是具体的系统调用或库函数,7页是您需要的.