zoukankan      html  css  js  c++  java
  • 计算机端口状态说明和解决占用的方法

    TCP状态转移要点

       TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得注意的状态有两个:CLOSE_WAIT和TIME_WAIT。 

     

    1、LISTENING状态

      FTP服务启动后首先处于侦听(LISTENING)状态。

    2、ESTABLISHED状态

      ESTABLISHED的意思是建立连接。表示两台机器正在通信。

     3、CLOSE_WAIT

    对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭

     4、TIME_WAIT

    我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。

     

    目前有一种避免TIME_WAIT资源浪费的方法,就是关闭socket的LINGER选项。但这种做法是TCP协议不推荐使用的,在某些情况下这个操作可能会带来错误。


    5、在windows下如何查看80端口占用情况?是被哪个进程占用?如何终止等.

           这里主要是用到windows下的DOS工具,点击"开始"--"运行",输入"cmd"后点击确定按钮,进入DOS窗口,接下来分别运行以下命令:

           >netstat -aon | findstr "80"

                    Proto  Local Address          Foreign Address        State            PID

                    ====  ============      ==============  ========== ======

                    TCP    0.0.0.0:80                    0.0.0.0:0                LISTENING      1688

    可以看出80端口被进程号为1688的程序占用.

           >tasklist | findstr "1688"

    图像名                                               PID            会话名                    会话#       内存使用

                   ========================= ====================== ======== ============

                   inetinfo.exe                                       1688           Console                      0              2,800 K

    很明显,是inetinfo占用了80端口;inetinfo.exe主要用于支持微软Windows IIS网络服务的除错,这个程序对你系统的正常运行是非常重要的.

           当然,并不是只有inetinfo.exe进程会占用80端口,这只是我机器上的情况.如果你并不了解此进程是干什么用的,千万不要盲目地将其kill掉,最好先百度或Google搜索一下;当然如果你很了解它,并确定可以终止,那么继续下面的命令.

           >taskkill /pid 1688 /F

    成功: 已终止 PID 为 1688 的进程。

    如果你很熟悉此进程,并确定可以终止,那么就直接使用上面的命令把PID为1688的进程终止.(这一步同样可以在任务管理器中执行,inetinfo.exe就是任务管理器中的映像名称,选中它,点击"结束进程"即可)

           >tasklist | findstr "1688"

    再次确认是否成功终止,如果成功终止此次执行命令后应返回空.

    6、linux下如何查看80端口占用情况?是被哪个进程占用?如何终止等

    查询端口是否被占用,被哪个进程占用有两种方式:1、netstat -anl | grep "80" ;2、lsof -i:80

    终止进程的方式:kill pid


    以上分别摘自:http://www.cppblog.com/prayer/archive/2009/04/01/78592.html

                                http://www.cnblogs.com/xyzdw/articles/2108149.html



  • 相关阅读:
    排序算法——插入排序
    排序算法——选择排序
    排序算法——冒泡排序
    软件测试实例
    软件测试基础知识
    【数组】筛选数组arr中重复的元素,考虑时间复杂度
    【数组】最大子数组问题(要求时间复杂度最佳)
    【数组】合并两个排序数组
    【链表】循环链表插入元素
    P2668 斗地主 (NOIP 提高 2015)
  • 原文地址:https://www.cnblogs.com/joma/p/2380119.html
Copyright © 2011-2022 走看看