`

被忽悠:0号端口提供IIS的80端口Hello World服务?

    博客分类:
  • Java
阅读更多

被忽悠:0号端口提供IIS的80端口Hello World服务?

忽悠,完全被忽悠了一回,不仅是我,还包括老梁同志

下午在调试JmxLog4J的端口测试,我测试使用0号端口,程序运行是正常的,但是我输入
http://localhost:0/ 去访问却访问到一堆的从大到小的Hello World测试的页面出来,简直是怪事。
我换台机器访问,也是如此,于是叫老梁访问,他的访问也是这个页面。
我把程序里的端口配置为1,然后 http://localhost:1/ 这样就可以正常访问到我的应用了。

于是,我打开 netstat -a | find ":0" 看看是谁在用0号端口

  Proto  Local Address          Foreign Address        State
  TCP    HOST:http   HOST:0  LISTENING
  TCP    HOST:epmap  HOST:0  LISTENING
  TCP    HOST:371    HOST:0  LISTENING
  TCP    HOST:https  HOST:0  LISTENING
  TCP    HOST:microsoft-ds  HOST:0  LISTENING
  TCP    HOST:1088   HOST:0  LISTENING
  TCP    HOST:1062   HOST:0  LISTENING
  TCP    HOST:netbios-ssn  HOST:0  LISTENING
  TCP    HOST:netbios-ssn  HOST:0  LISTENING
  TCP    HOST:netbios-ssn  HOST:0  LISTENING

发现Foreign Address占用0号的这么多,值得怀疑的肯定是IIS了
打开管理端,发现果真IIS启动着,但是,注意了,IIS并没有占用0号端口,它是占用80端口
我把IIS停掉,然后访问 http://localhost:0/ ,这样就访问不了了,再启动,又可以访问了。
于是,才知道。。。原来是如此啊,晕了。。。你知道了吗?还是也象我一样被忽悠了一下?

分享到:
评论
12 楼 sutra 2007-01-12  
YuLimin 写道
说实话,我是完全被忽悠了。

但忽悠过后我知道

1、http://localhost:0/ 访问这个其实就是访问这个 http://localhost/http://locahost:80/

2、0号端口说是系统的无效端口,但是还是很不明白为何Java Socket的程序却可以无休止地创建使用0号端口,建立Socket,而且不报错。别的端口如果被占用后是会异常的。


Java socket 指定0端口就是不指定端口,而是采用系统分配一个端口。
11 楼 boin 2007-01-08  
感谢指出错误:P
并学习。
10 楼 YuLimin 2007-01-08  
kdedik说的对,我的netstat -a | find ":0" 这样找的结果0并不是我们想知道的0端口服务,而是在监听所有外来的连接。

总结一下:
1、http://localhost:0/ 访问这个其实就是访问这个 http://localhost/http://locahost:80/

2、new ServerSocket(0);此时并不是说真正用0号端口,而是系统随机启用一个空闲的端口给你用,一般端口是大于1024号的,因为小于1024号端口为系统保留端口,所以boin说是0-1024应当有误。我在Windows与Solaris上面测试过。

可以做个测试
for(;;)
{
    serverSocket = new ServerSocket(0);
    portIndeed = serverSocket.getLocalPort();
    System.out.println("portIndeed:" + portIndeed);
}

就可以得到真正的portIndeed的,而且可以一直new ServerSocket(0);

看了ServerSocket的源码,有如下:
	if (port < 0 || port > 0xFFFF)
	    throw new IllegalArgumentException(
		       "Port value out of range: " + port);


有效传入端口号范围为0 <= portIndeed <= 65535
9 楼 kdekid 2007-01-07  
YuLimin 写道
端口:0

服务:Reserved

说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描,使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。

你还是最好去温习一下 TCP/IP 协议栈。上边 netstat 的结果 listen 的是 foreign 端的 0 号端口,表示侦听来自所有端口的连接而已。一个 tcp socket 是一个四元数,listen 是半开的 connection,不指定远端地址则表明接受来自所有地址的连接。至于可以访问 localhost:0,这显然是 IE 把 0 作为默认端口判断了。 差点被你忽悠了。
8 楼 kdekid 2007-01-07  
I am absolutely sure Firefox does report connection failure when connect to localhost:0.
7 楼 YuLimin 2007-01-07  
dwangel 写道
大概0号端口意味着缺省端口而已。
端口:0

服务:Reserved

说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描,使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。
6 楼 dwangel 2007-01-07  
大概0号端口意味着缺省端口而已。
5 楼 YuLimin 2007-01-06  
FireFox与IE都是一样的。
4 楼 kdekid 2007-01-06  
你访问 http://localhost:0/ 是用 IE 的吧?你 telnet 一下就知道实际上 IE 不知道做了什么,导致能访问,至于这是 bug 还是功能,就只有 microsoft 才能解释清楚了。

一般来说 client 端的程序用 0 作端口,表示己方端口由系统分配。当然不会报错。
3 楼 YuLimin 2007-01-06  
说实话,我是完全被忽悠了。

但忽悠过后我知道

1、http://localhost:0/ 访问这个其实就是访问这个 http://localhost/http://locahost:80/

2、0号端口说是系统的无效端口,但是还是很不明白为何Java Socket的程序却可以无休止地创建使用0号端口,建立Socket,而且不报错。别的端口如果被占用后是会异常的。
2 楼 ray_linn 2007-01-06  
露怯了。
1 楼 boin 2007-01-06  
0.0.0.0:0 是监听全网的全端口。。。最先属于Bell实验室。。现在0号段口是随机端口,在0-1024里面随机使用正在监听的端口

相关推荐

    简易iis netbox 源码 带固定端口88和随机端口80

    例如,某些情况下,IT管理员可能会希望将IIS的服务端口从默认的80端口更换为其他端口,以减少潜在的安全风险。【简易IIS NetBox源码】正是为满足这类需求而设计的工具。 【简易IIS NetBox源码】支持配置固定端口和...

    IIS和tomcat 公用80端口

    在IT行业中,Web服务器是构建和提供Web...总的来说,IIS和Tomcat共享80端口需要巧妙的配置和规划,以确保两者的协同工作并提供无缝的用户体验。通过以上介绍,你应该能更好地理解如何处理这种常见的Web服务器集成挑战。

    IIS下FTP服务器的PASV端口范围修改方法

    ### IIS下FTP服务器的PASV端口范围修改方法详解 #### 一、引言 在企业级网络环境中,FTP服务器是常见的文件传输服务之一。Microsoft Internet Information Services (IIS) 提供了一种集成式的解决方案来搭建FTP...

    让iis和tomcat共用80端口

    ### 让IIS和Tomcat共用80端口:详细配置步骤与注意事项 在企业级应用环境中,经常需要在一台服务器上同时...通过以上步骤,即可实现在同一台服务器上,IIS和Tomcat共用80端口,为用户提供统一且高效的Web服务体验。

    HP服务器资料:怎样关闭端口.doc

    - 端口是网络通信的基础,每个服务或进程通常绑定到特定的端口号。例如,HTTP服务使用80端口,SMTP(简单邮件传输协议)使用25端口,FTP(文件传输协议)使用21端口。 2. **关闭端口的步骤**: - 在Windows系统中...

    iis与apache公用80端口方法

    文档全面阐述了IIS与APACHE公用80端口的方法,实现了在一台服务器上同时发布PHP与ASP.NET程序的功能

    IIS和apache共用80端口(共存).mht

    IIS和apache共用80端口(共存) Windows server 2003服务器上安装有默认 IIS 6,IIS运行asp程序,现需要安装apache运行php程序,想让它们同时都能通过80端口访问,设置如下:

    Windows下80端口被进程System占用的解决方法亲测可用.docx

    在Windows系统中,如果启动IIS或者Apache时,可能会出现80端口被占用的情况。本文将详细介绍如何解决这种问题。 首先,我们需要了解什么是80端口。80端口是HTTP协议的默认端口,也是Apache和IIS等Web服务器的默认...

    停止IIS命令(APMServ_80端口被占用_导致Apache启动失败的原因)).doc

    标题和描述中提到的问题主要涉及IIS(Internet Information Services)与Apache服务器之间的冲突,特别是当80端口被IIS占用时,导致Apache无法启动。80端口是HTTP服务的标准端口,通常用于Web服务器,因此两个服务...

    80端口被占用的解决方案

    然而,当80端口被占用时,这将直接影响到HTTP服务的正常运行,例如,当你试图启动Apache或Nginx等Web服务器时,如果发现无法绑定到80端口,那么很可能是该端口已经被其他服务占用,如IIS、Tomcat或其他Web服务器。...

    检测80端口是否被占用及如何释放80端口的方法

    "检测80端口是否被占用及如何释放80端口的方法" 在本篇文章中,我们将讨论如何检测80端口是否被占用,以及如何释放80端口的方法。这个问题非常重要,因为在安装客户软件时,经常会遇到“web服务器端口已被其他程序...

    iis7整合tomcat7共用80端口

    本文将详细介绍如何在IIS7中通过JK模块来整合Tomcat7,实现两者共用80端口,提高服务器资源利用率。 首先,我们需要了解整合的目的。通常,IIS7主要处理静态内容,如HTML、CSS、JavaScript等,而动态内容如JSP、...

    IIS发布两个80端口!

    经常发布网站的朋友都清楚在实际使用过程中我们并不必须在每台服务器上...但是可能在实际使用过程中不希望通过虚拟目录或端口号的形式来访问站点,那么两个网站能否都用80端口在IIS中启动呢?今天我们就来解决此问题。

    计算机网络资料:如何开题端口

    端口是计算机网络中用于通信的逻辑通道,每个端口都有一个唯一的数字标识,范围从0到65535。在Windows操作系统中,管理端口通常涉及到查看当前开放的端口、关闭不必要的端口以及开启特定服务所需的端口。 首先,...

    如何查看80端口是否被占用_端口被占用解决办法.docx

    "如何查看80端口是否被占用_端口被占用解决办法" 在计算机网络中,端口(Port)是一种逻辑上的概念,用于标识不同的网络服务或应用程序。常见的端口有80端口(HTTP)、21端口(FTP)、22端口(SSH)等。然而,在...

    80与8080端口入侵实

    - 限制不必要的端口访问,只开放必要的服务端口。 - 使用HTTPS(端口443)提供加密的Web服务,增强数据安全性。 - 进行定期的安全审计和渗透测试,发现并修复潜在问题。 6. 网络安全意识:除了技术措施,提高...

    计算机三大端口:公认端口、注册端口、动态和私有端口

    计算机端口可分为3大类: 1) 公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服 务的协议。例如:80端口实际上总是HTTP通讯。  2) 注册端口(Registered Ports):...

Global site tag (gtag.js) - Google Analytics