首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据套接字统计,Apache只在IPv6上监听,但实际上也为IPv4服务。

根据套接字统计,Apache只在IPv6上监听,但实际上也为IPv4服务。
EN

Unix & Linux用户
提问于 2015-10-22 09:17:27
回答 1查看 2.2K关注 0票数 1

服务器中的ss -lnp显示以下信息:

代码语言:javascript
复制
# ss -lnp
Recv-Q Send-Q                                                                                                            Local Address:Port                                                                                                              Peer Address:Port 
0      128                                                                                                                          :::22                                                                                                                          :::*      users:(("sshd",3847,4))
0      128                                                                                                                           *:22                                                                                                                           *:*      users:(("sshd",3847,3))
0      10                                                                                                                    127.0.0.1:25                                                                                                                           *:*      users:(("sendmail",1605,4))
0      128                                                                                                                   127.0.0.1:199                                                                                                                          *:*      users:(("snmpd",22765,8))
0      128                                                                                                                          :::80                                                                                                                          :::*      users:(("httpd2-prefork",15058,4),("httpd2-prefork",2235,4),("httpd2-prefork",1209,4))
# 

根据ss的输出,人们可能认为Apache只监听所有IPv6地址上的TCP端口80。实际上,Apache还通过IPv4提供请求。为什么是这样?此外,如何使PID 15058、2235和1209都在同一个TCP端口上监听?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2015-10-22 10:05:36

1)如果您在ipv6端口上侦听连接,这就是Linux的工作方式(默认情况下)。

2)进程共享相同的“套接字”,该套接字被创建并“绑定”到端口80。

在这种情况下,它是共享的,因为进程在打开套接字后分叉(克隆)。这与继承打开的文件的分叉进程完全相同。与运行ls时一样,它从shell继承文件描述符,其中包括一个句柄,允许它将输出写入终端。Unix将许多事情作为文件对待:)。

但是,不可能绑定第二个套接字来侦听同一个端口(不管您是什么进程)。(迂腐:除非两个进程都使用所以_REUSEPORT)。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/237858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档