问:
请问为什么下面看到的tomcat地址是0.0.0.0:8080
C:\WINDOWS\system32>netstat -ano Active Connections Proto Local Address Foreign Address State PID TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 232 不是127.0.0.1吗
答:
127.0.0.1是保留IP,无论你的外部IP是什么系统都保留这Ip识别, 0.0.0.0应该是做为动态IP用,因为我发现上网后它会被外部ip替换 INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。 例如MontiVista Linux中在/usr/include/netinet/in.h定义为: /* Address to accept any incoming messages. */ #define INADDR_ANY ((in_addr_t) 0x00000000) 一般情况下,如果你要建立网络服务器应用程序,则你要通知服务器操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的数据包发送给我。这个过程,你是通过bind()系统调用完成的。——也就是说,你的程序要绑定服务器的某地址,或者说:把服务器的某地址上的某端口占为已用。服务器操作系统可以给你这个指定的地址,也可以不给你。 如果你的服务器有多个网卡(每个网卡上有不同的IP地址),而你的服务(不管是在udp端口上侦听,还是在tcp端口上侦听),出于某种原因:可能是你的服务器操作系统可能随时增减IP地址,也有可能是为了省去确定服务器上有什么网络端口(网卡)的麻烦 —— 可以要在调用bind()的时候,告诉操作系统:“我需要在 yyyy 端口上侦听,所以发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都是我处理的。”这时候,服务器程序则在0.0.0.0这个地址上进行侦听。例如: Proto Recv-Q Send-Q Local Address Foreign Address (state) …… udp4 0 0 *.7913 *.* udp4 0 0 *.7911 *.* tcp4 0 0 *.ftp *.* LISTEN …… …… 以上这些是网络侦听的情况,其中Local Address 为 “*.ftp”、“*.7911”等,代表了服务程序绑定了服务器的所有网卡。 好了,你明白了侦听INADDR_ANY是什么意思了,那么,我的服务器有N个IP地址,会不会收到重复的数据包?收到数据包后,是不是会重复回复客户端呢? 答案是:不会收到重复的数据包,也不会重复发送数据。 为什么呢?因为路由的关系,从客户端来的IP包只可能到达其中一个网卡。同时在服务器进程发送数据时,操作系统根据自身维护着的路由表,决定IP数据包应该c从哪一个outbound的gateway向目标端发送。根据gateway选择的不同,也就决定了从哪一个网卡/哪个IP地址发送。 为什么不会接收到重复的数据包呢? 答:因为客户端只向你的服务器上的唯一一个IP地址发送数据了。 为什么不会重复发送数据包呢? 答:因为发送数据包的路由(路径)是唯一的。如果服务器不知道在发送数据的时候应该向哪个地址发送数据,那么数据就会被发送到“默认网关”上。 如何选择发送数据的路径呢? 答:依照路由表的要求发送。 如果路由表的记录有重复/有冲突呢,这时候如何选择路径呢? 答:路由表记录有优先级别。一般来说,Windows操作系统的路由表记录,如果是重复的话,以后来加入的记录为准,而某些操作系统,象linux/FreeBSD是不允许加入重复的路由表记录的; 如果是专用的路由器,有路由选择算法,一般来说,到达网络上的某一点的路径是可以有很多条的。路由选择算法可以确定“最好的一条路径”,这条路径要么是延时最小的,要么是通讯费用最低的,要么是带宽最高的,要么是跳点最小的——究竟是如何选择,就看路由器的管理员如何配置了。 对于客户端如果绑定INADDR_ANY,情况类似。对于TCP而言,在connect()系统调用时将其绑顶到一具体的IP地址。选择的依据是该地址所在子网到目标地址是可达的(reachable). 这时通过getsockname()系统调用就能得知具体使用哪一个地址。对于UDP而言, 情况比较特殊。即使使用connect()系统调用也不会绑定到一具体地址。这是因为对UDP使用connect()并不会真正向目标地址发送任何建立连接的数据,也不会验证到目标地址的可达性。它只是将目标地址的信息记录在内部的socket数据结构之中,共以后使用。只有当调用sendto()/send()时,由系统内核根据路由表决定由哪一个地址(网卡)发送UDP packet. P.S. ----------------------------------------------------------------------------- 在IP层中有一个路由表: 在MSDOS窗口可以运行命令:netstat -r 来显示路由表。根据路由表的条目从指定的网卡发送数据。 ARP缓存用:arp -a 来显示。 通常以太网帧的目的MAC地址,是下一跳的MAC地址。
相关推荐
0.0.0.0这个特殊的IP地址在TCP/IP协议栈中扮演着重要角色。本文将深入探讨0.0.0.0的含义及其在socket编程中的应用。 首先,让我们明确IP地址的基本概念。IP地址是一个32位的数字,通常用点分十进制表示法(例如192....
首先,我们来看0.0.0.0这个特殊的IP地址。在IPv4中,0.0.0.0通常表示一个未指定的或任意的IP地址。当一个服务器或应用配置为0.0.0.0时,它意味着该服务监听所有可用的网络接口,即任何公网或私网IP地址。这意味着...
文件版本 : 0.0.0001 beta1 说明 : NetViewG 版权 : PurpleEndurer 备注 : 产品版本 : 0.0.0001 beta1 产品名称 : NetVewG 公司名称 : PurpleEndurer 合法商标 : PurpleEndurer 内部名称 : NetViewG 源文件名 : ...
PuTTY,这款名为"putty_V0.63.0.0.43510830.exe"的软件,是网络管理员和IT专业人士不可或缺的工具之一。它是一款免费且开源的终端模拟器,支持多种网络协议,包括最常用的SSH(Secure Shell)和Telnet,使得用户能够...
"redis-desktop-manager-2020.0.0.0.rar" 是一个压缩包,包含了2020年最新版本的Redis Desktop Manager,即2020.0.0.0版本。这个版本可能是针对Windows 64位系统的,确保了在最新的Windows操作系统上能够高效运行。...
解压下载的zip文件,运行 PuTTY_0.67.0.0.exe 安装程序。 2. **配置连接参数**:启动PuTTY,输入主机名或IP地址,选择连接类型(通常为SSH)。还可以设置端口、用户名、默认的终端类型等高级选项。 3. **建立连接*...
标题中的“PyPI 官网下载 | dlna-0.0.9.1.tar.gz”指的是一个在Python Package Index(PyPI)上发布的软件包,名为“dlna”,版本号为0.0.9.1,其分发形式是经过tar.gz压缩的文件。PyPI是Python开发者用来分享和发现...
修改 `/etc/default/tftpd-hpa` 文件中的 `TFTP_ADDRESS` 参数值,将 `TFTP_ADDRESS="0.0.0.0:69"` 更改为具体的 IP 地址,例如 `TFTP_ADDRESS="192.168.0.71:69"`。这样可以确保 tftpd-hpa 使用正确的 IP 地址绑定...
58.30.0.0 58.31.255.255 58.83.128.0 58.83.255.255 58.116.0.0 58.119.255.255 58.128.0.0 58.135.255.255 58.194.224.0 58.195.15.255 58.206.224.0 58.207.15.255 59.64.16.0 59.65.255.255 59.108.0.0 59.109....
版本号为V0.63.0.0.43510830的PuTTY,是telnet和超级终端的利器,经过实际测试,其性能表现优异,无疑是进行远程操作的首选工具。 PuTTY是一个免费的开源软件,最初设计用于Windows系统,但现在已经发展到支持多种...
+ A 类:0.0.0.0 - 127.255.255.255,127 个网络,16777214 个节点 + B 类:128.0.0.0 - 191.255.255.255,16384 个网络,65534 个节点 + C 类:192.0.0.0 - 223.255.255.255,2097152 个网络,254 个节点 + D ...
《PyPI官网下载:opensitua_http-0.0.35.tar.gz——网络与Python库的探索》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的第三方Python库,使得开发工作更加便捷高效。在本文中,我们将...
"super-ec2-0.0.65.tar.gz" 是一个Python库的压缩包,版本号为0.0.65。这个库是专门为处理Amazon Web Services (AWS) 的 Elastic Compute Cloud (EC2) 服务而设计的。EC2是AWS的核心产品,允许用户在云端启动和管理...
ESP8266-IDF-AT_V2.1.0.0.zip 是一款针对 ESP8266 芯片的官方 AT 固件,它提供了2021年最新的WiFi功能支持。这款固件是基于 ESP-IDF(Espressif IoT Development Framework)构建的,ESP-IDF 是 Espressif Systems ...
《PyPI官网下载 | instauto-0.0.15.tar.gz:深入了解Python自动化工具instauto》 在Python的世界里,PyPI(Python Package Index)是开发者发布和分享自己创建的Python库的主要平台。今天我们要关注的是一个名为...
NetViewG.exe v0.0.0001 beta1 http://download.csdn.net/source/361970 用 MASM32 写的 4.5KB 的 netstat--NetView.exe NetView.exe功能与Windows自带的 netstat 命令相似,用于显示协议统计信息和当前 TCP/IP ...
《PyPI官网下载:深入解析cdktf-cdktf-provider-external-0.0.15.tar.gz》 PyPI(Python Package Index)是Python社区的重要资源库,它为全球Python开发者提供了一个集中下载和分享Python软件包的平台。在PyPI中,...