zoukankan      html  css  js  c++  java
  • Tcp之异常

    Tcp异常

    昨研发报异常,据CMCC说是我方服务器主动断开的,于是怀疑是超时设置过短,于是我抓包,由于我接触socket时日尚短,搞不清为什么三次握手成功之后我方服务器会立刻发送fin

     

    今天本来做实验观察进程IP复用情况,却无意中揭开了此问题的面纱,特此记录

    我们首先来说说,ip复用的情况,具体ip能被复用多少次,记得从哪本书上模糊看到关于此的文章,不记得了。废话不多说,上源码先

    #!/usr/local/bin/python3.5

    #coding:utf-8

    import socket

    port = 8080

    host = '192.168.1.210'

    while True:

           s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

           s.connect((host, port))

    此源码相信很多人都能看懂,就干一件事,疯狂的建立三次握手。运行大概十几秒之后,程序抛出异常

     

    异常说我无法请求分配的地址,我看字面意思还以为是IP复用资源用尽了,结果原来是因为

    socket发起connect请求的时候会随机分配一个端口给你。这个分配的端口是有范围的,记录在:

     

    共计可用端口为28232

    再写一个小脚本监控下连接数,发现

     

    刨去22和mysql这两个持久链接,刚好等于28232

    好了,这个问题解决了,那我们看看顺手而来的收获吧

     

    情况何其像似由此我们也知道了,在程序没有可发送的数据后,会自动发送一个FIN,代表我已无数据发送了,即使程序没发送任何数据,在刚链接建立就FIN也是可以的(当然通常咱们不这样搞,TCP毕竟是比较奢侈的协议)所以这不是由于服务器设置的的time时间造成的。

    至于在这个过程中,各种状态的转换,又是另外一个故事了…

    END!

  • 相关阅读:
    b_lc_长度为 3 的不同回文子序列(统计两个相同字符中间有多少个不同字符)
    b_lc_最小未被占据椅子的编号(记录每个时间来的人 + pq)
    b_lc_统计好数字的数量(排列数+组合数+快速幂)
    TreeMap
    LinkedHashMap
    HashMap的总结
    HashMap
    Collection
    Map
    LinkedList学习
  • 原文地址:https://www.cnblogs.com/changbo/p/5721497.html
Copyright © 2011-2022 走看看