linux - 各个本地端口的差异
问题描述
当我运行时,$ netstat -ntlp
我得到以下输出:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::443 :::* LISTEN -
为了理解输出,我有几个问题:
0.0.0.0:*
"Foreign Address"和有什么区别:::*
?为什么有些端口,比如
22
在 tcp 和 tcp6 中都有一个入口?:::
对于本地地址, and127.0.0.1
和0.0.0.0
(and ) 有什么区别localhost
?
解决方案
0.0.0.0:* 和 :::* 之间的“外国地址”有什么区别?
第一种情况是 IPv4,第二种情况是 IPv6。
为什么有些端口,比如 22 在 tcp 和 tcp6 中都有一个条目?
因为服务器在 IPv4 和 IPv6 上使用两个不同的套接字进行侦听。一些服务器尝试为两者使用一个套接字(并非所有操作系统都支持),一些服务器使用不同的套接字。在 OpenSSH 的情况下:无论如何它都支持侦听多个 IP:端口,并且它也源自 OpenBSD,其中不支持使用单个套接字侦听 IPv4 和 IPv6(为了安全起见,明确决定)。
对于本地地址, ::: 和 127.0.0.1 和 0.0.0.0(和 localhost)有什么区别?这些都是一样的吗,或者为什么它们的引用方式不同?
:::
是 IPv6 的 ANY 地址,而0.0.0.0
IPv4 是任何地址 - 使用这些侦听器地址,服务器将接受它拥有的所有 IP 地址上的流量(即所有接口:本地、以太网、wifi、VPN ......)。127.0.0.1
是 IPv4 的 localhost,即只能从本地计算机连接。IPv6 本地主机将是::1
. 什么localhost
意思取决于 中的条目/etc/hosts
,通常与 相同127.0.0.1
。
推荐阅读
- java - 操作系统如何决定如何运行 .exe
- python - 在 24 小时内传播 Celery Django 任务
- forms - 如何将字典绑定到 Listview itemsource
- reactjs - 材质 ui 文本字段无法编辑
- django - 带有自定义错误消息的 Django 重定向
- postgresql - Dockerized Postgresql 无法访问自定义映像上的 postgresql.conf
- javascript - 猫头鹰旋转木马的背景图像不起作用
- c# - 删除旧关系并在 c# 上的同一查询中创建具有相同标签的新关系,使用 cypher for neo4j DB
- java - 在 Google 日历上更新事件会自动将 EventAtendee 设置为 self
- wpf - 如何在 Prism WPF 应用程序中实现 Serilog?