关于80端口号冲突的问题总结(全)

Posted itzine

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于80端口号冲突的问题总结(全)相关的知识,希望对你有一定的参考价值。

I.Port80简介:

        80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的,此为上网冲浪使用次数最多的协议,主要用于WWW(World Wide Web)即万维网传输信息的协议。可以通过HTTP地址(即常说的“网址”)加“: 80”来访问网站,因为浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“: 80”了。

II.问题描述:

  80端口是一个最为频繁访问的端口号,甚为程序员开发更是经常遇到,比如我们最熟悉的数据库系统服务进程就是默认访问该端口的,还有比如Ngnix服务器默认端口也是80,所以当使用ngnix时发生端口号冲突了,应该怎么办呢?以下见析。

III.原因:

  主要是与http协议有关的进程,进行网上访问的系统级别的进程最频繁占用80端口。比如Http.sys。它是http API的驱动组件,Http栈服务器。如果该端口被Http.sys占用,说明一些正在使用http.sys的应用程序在运行。

IV.解决办法:

  1)使用命令查看哪个线程占用80端口

    win+R调出doc窗口,输入cmd,继续输入"netstat -ano | more"或者“netstat -aon”

    2)寻找端口号

    找到“本地地址”栏为0.0.0.0:80的一行,在行的末尾有pid(进程id)为“4”。

  3)打开任务管理器(ctrl+alt+del)

    查看pid为4的线程,一般会显示system占用;自然system是无法直接kill的。

    使用netsh命令查看端口使用状态:”netsh http show servicetstate“。

    可以看到有两个进程正在使用http功能。分别为 3164和3196。

    其中3196是sql server的report服务;进程3164对应的是一个svchost服务。

    两者都可以关闭,数据库服务的见下述解决方式。

   【扩展】:

    但是,50秒之后端口又会自动被占用了。【重新占用】

    从procmonitor中可以看到,每次关闭服务 BranchCache 每50s后就会继续被svchost给调用起来。

    通过services表(服务表)中,我们发现这里的BranchCache 依赖了HTTP.SYS这个内核驱动。

    手动禁用即可。

  4)多版本解决方案:

    【分析】:

     1)SQL Server导致。其中很有可能是SQL Server Reporting Services (MSSQLSERVER),它是 SQL Server 的日志系统。

     2)IIS 服务。如果你电脑安装了这个,很有可能它在运行着,那么它就占用着80端口。(打开IIS的方法:打开控制面板,点“卸载”,

      弹窗里左侧有一个“打开或关闭windows功能”,再点开会有一个弹窗,找“Internet信息服务”,找到 Internet Information Services,

      点加号展开!因为直接点这个大项前面的小方块,FTP服务器选项没反应,我图里的这几个都勾上就行了。

      技术图片

      然后右下角点确定,IIS开启成功了。

      关上:开始图标那个win旁边有个圈圈,点开输入iis回车就能打开IIS管理器,右击,点停止,IIS就算关上了。(win10系统)

     3)其他。(比如,迅雷等程序或者一些其他有上传功能的软件都会占用电脑的80端口)

    A.已知为数据库进程占用,最常见:

    i.查看“任务管理器”进程栏或者详细信息栏,有没有数据库有关的进程,直接kill就行。

    ii.打开【管理】->【服务和应用程序】->【服务】->找到“SQL Server Reporting Service",禁用或者手动皆可。

    以上可以解决基本上90%左右的占用问题。

    (一般来说,可能是近期安装了数据库或者升级了数据库等软件造成的,系统占用的端口一般都是微软官方的产品占用的。)

    B.未知进程,即system进程(win7 system默认占用):

    i.禁用http.sys

    输入net stop http,然后确认继续操作,在输入Sc config http start= disabled即可停止该项服务。

    ii.调出注册表

    打开RegEdit:【开始】->【运行】->输入【regedit】调出 ”注册表“,

    找到”HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesHTTP“,

     找到一个DWORD值Start,将其改为0,重启电脑,System进程将不会占用80端口。

    【备注】:杀掉进程的命令:taskkill /pid 4 /f ,其中 /f 表示强制关闭该进程。

 

以上是关于关于80端口号冲突的问题总结(全)的主要内容,如果未能解决你的问题,请参考以下文章

Nginx配置问题总结

关于端口冲突的解决方式Error: listen EACCES 0.0.0.80

怎么修改php apache2.2版本的端口。很急呢

总结windows cmd 查看进程,端口,硬盘信息

CCNA 基础知识

各种常用的默认端口号 总结