设置套接字对象时,我使用:
socket.socket()
更详细地写(也是默认的)是:
socket.socket(socket.AF_INET, socket.SOCK_STREAM)
对此有一些疑问:
socket.AF_INET
允许我通过以传递主机/端口,即ipv4地址。为什么习惯将其命名为AF_INET
(而不是socket.IPV4
。这代表什么?
什么是SOCK_STREAM
?这是否仅表示将接受HTTP
请求或其他请求?另外,使用SOCK_STREAM
和SOCK_RAW
有什么区别?
答案 0 :(得分:0)
名称AF_INET
是从Unix复制而来的,它是“ InterNET”的缩写。该缩写是在设计IPv6之前多年创建的,当时只有一个Internet协议,因此设计者没有想到将其命名为IPV4
。
AF
代表“地址族”,表示该协议使用Internet地址。还有PF
,代表“协议族”。在设计该协议时,曾有一种想法,即可能有多个协议使用相同的寻址方式,因此它们将这些概念分开,但实际上它们是一对一的,因此区别逐渐消失了。 (所有AF_xxx常量与相应的PF_xxx常量具有相同的值)。
SOCK_STREAM
表示套接字传输字节流。另一种选择是SOCK_DGRAM
,它以称为“数据报”的不同单位传输消息。
答案 1 :(得分:0)
所有名称都是从[man7]: SOCKET(2)(man socket
)借来的。
不同的缩写代表什么?