如何理解netstat的本地地址和外部地址?
我在服务器上执行如下命令:netstat -anp | grep 6379
查看redis的6379端口情况,结果如下所示:
[root@test001 ~]# netstat -anp | grep 6379
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 949/redis-server 0.
tcp 0 0 192.168.0.11:55160 41.92.250.40:6379 ESTABLISHED 3184/php7.4
tcp 0 100 127.0.0.1:6379 127.0.0.1:42116 ESTABLISHED -
tcp 0 0 192.168.0.11:55164 41.92.250.40:6379 ESTABLISHED 3216/php7.4
tcp 0 0 127.0.0.1:41684 127.0.0.1:6379 TIME_WAIT -
tcp 0 0 127.0.0.1:41688 127.0.0.1:6379 TIME_WAIT -
tcp 0 0 127.0.0.1:37384 127.0.0.1:6379 ESTABLISHED 29046/php
tcp 0 0 127.0.0.1:42116 127.0.0.1:6379 ESTABLISHED 30970/php-fpm: pool
tcp 0 0 192.168.0.11:6379 41.92.250.40:55164 ESTABLISHED 949/redis-server 0.
tcp 0 0 192.168.0.11:55156 41.92.250.40:6379 ESTABLISHED 3182/php7.4
tcp 0 0 192.168.0.11:6379 41.92.250.40:55156 ESTABLISHED 949/redis-server 0.
tcp 0 0 127.0.0.1:6379 127.0.0.1:37384 ESTABLISHED 949/redis-server 0.
tcp 0 0 127.0.0.1:41682 127.0.0.1:6379 TIME_WAIT -
tcp 0 0 192.168.0.11:6379 41.92.250.40:55160 ESTABLISHED 949/redis-server 0.
上面的192.168.0.11是内网地址,41.92.250.40是公网地址(当然为了安全我这边是随便改了不是真实的地址),两个都是本台服务器地址
阿某云买的服务器,上面有两个ip
41.92.250.40(公)
192.168.0.11(私有)
不是弹性ip
现在我对Local Address 本地地址还有Foreign Address 外部地址不懂,比如以第二条数据为例:
tcp 0 0 192.168.0.11:55160 41.92.250.40:6379 ESTABLISHED 3184/php7.4
这里的55160端口是什么?还有和他配对的是不是最后一条
tcp 0 0 192.168.0.11:6379 41.92.250.40:55160 ESTABLISHED 949/redis-server 0.
感觉正好反过来似的,如何理解这两对的地址加端口?
我的问题是:
- 如何理解本地地址和外部地址?
- 上面样例的55160端口是什么意思?以及55160对应的ip地址一下192.168.0.11一下41.92.250.40,不太懂
问:
本地地址可以通过
ip addr show
查看, 本地地址是有几个网段的, 10.0.0.0/8, 172.x.0.0/16, 192.168.1.0/24 等都可以是本地地址问:
那些端口没有关系, 一个是php7.4, 一个 是 redis, 两者没有关联
建议学习下计算机网络以及网络套接字相关知识。
简单说下网络套接字,以传统的CS架构软件Redis(端口为6379)举例,假设CS在同一局域网内。
S启动Redis服务时,监听*:6379(即所有IP可访问)
当C内网访问S的redis服务时,C会在本机1024~65535随机一个端口发起请求(假设端口为13057),S接收到了C的请求,这时对C来说,客户端IP+端口就组成了客户端连接套接字,即192.168.0.22:13057,服务端连接套接字为192.168.0.188:6379,由客户端与服务端连接套接字合并称为连接套接字对.
S启动Redis服务时,监听41.92.250.88:6379(即只提供公网IP访问)
同上,C在本机1024~65535随机一个端口发起请求(假设端口为13057),套接字地址如下。