侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

tcp协议几个要注意的点

2023-11-04 星期六 / 0 评论 / 0 点赞 / 31 阅读 / 1928 字

首先看下tcp的状态转移图,从几个角度看下这张图: 首先,代码本身逻辑有问题,反应到上图会有什么现象, 1,服务器端出现大量的syn_rcvd,这个明显很明显,客户端故意不发ack,应该是客户端

首先看下tcp的状态转移图,从几个角度看下这张图:

首先,代码本身逻辑有问题,反应到上图会有什么现象,

    1,服务器端出现大量的syn_rcvd,这个明显很明显,客户端故意不发ack,应该是客户端逻辑问题,有人在SYN泛洪。

    2,服务器端如果代码收到fin或者rst,不显式调用close会出现什么情况,服务端会一直停留在close_wait.

    3,客户端或者服务端出现大量的time_wait这个正常吗,这两个情况都是有可能出现的。首先看第一个,客户端大量出现。我用requests请求,频繁post/get,或者频繁调用curl(会立刻四次握手结束连接)。这种情况一般不会出问题,但是如果使用多线程/进程,大量post的时候,会占光操作系统fd,如果不做内核参数优化,会报错!这种情况,如果发给一个地址,能用长连接,尽量用长连接,能迅速改善。第二种是服务端出现大量的close_wait,这里就要看访问请求的类型了,是否该开放长连接,长连接timeout是否设置得当,是否该使用套接字复用。

总结,由于代码层次误操作,不显式close,长连接使用不当,会响应出现timewait,close_wait,其中,长连接及其超时设置不当,生产中出现的比较多,特别是使用apache,由于基于多线程方式,容易down。

第二个问题,什么时候会发fin/rst的问题。

第三个,python中的read/recv函数如何判断fin/rst,这里和c的不一样,做了简化

 

补充下,http1.0默认是短链接,http1.1是长链接,而urllib2/3默认是短链接,request得注意版本。

广告 广告

评论区