关闭

为什么基于TCP的应用需要心跳包(TCP keep-alive原理分析)

TCP keep-alive的三个参数用man命令,可以查看linux的tcp的参数:man 7 tcp其中keep-alive相关的参数有三个: tcp_keepalive_intvl (integer; default: 75; since Linux 2.4) The number of seconds between TCP keep-alive pr...
阅读(17571) 评论(0)

netstat统计的tcp连接数与⁄proc⁄pid⁄fd下socket类型fd数量不一致的分析

新blog地址:http://hengyunabc.github.io/netstat-difference-proc-fd-socket-stat/最近,线上一个应用,发现socket数缓慢增长,并且不回收,超过警告线之后,被运维监控自动重启了。首先到zabbix上观察JVM历史记录,发现JVM-Perm space最近两周没有数据,猜测是程序从JDK7切换到JDK8了。问过开发人员之后,程序已经...
阅读(9509) 评论(1)

扯谈网络编程之Tcp SYN flood洪水攻击

简介 TCP协议要经过三次握手才能建立连接: (from wiki) 于是出现了对于握手过程进行的攻击。攻击者发送大量的SYN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries)。这样的话,对于服务器的内存,带宽都有很大的消耗。攻击者如果处于公网,可以伪造IP的话,对...
阅读(15684) 评论(5)

ZPush--基于netty4实现的苹果通知推送服务(APNs)Java客户端

简单说下实现苹果通知推送服务(APNs)客户端的一些要注意的地方: 使用长连接;sanbox服务器是没用的,调试时直接用“gateway.push.apple.com”域名;对于错误的Notification,苹果会回应一个Error response,里面有个identifier,在这个identifier之后的Notification全都失败; 因此发送者要缓存已经发送的Not...
阅读(6910) 评论(11)

蛋疼的Apple IOS Push通知协议

简介 Apple Push通知机制其实很简单,就是Apple的APNs服务器做为中间人,把消息推送到对应的设备上。 一张来自Apple文档的图: 当然,示意图看起来简单,但是还有一些实际的问题。 比如,如何区分Provicer的?如何区分设备的? 简单而言,是这样的: 每个应用都有一个自己的证书(certificate),开发者可以从苹果那里获得;应用可以到APNs服务...
阅读(7421) 评论(0)

扯谈网络编程之自己实现ping

ping是基于ICMP(Internet Control Message Protocol)协议实现的,而ICMP协议是在IP层实现的。 ping实际上是发起者发送一个Echo Request(type = 8)的,远程主机回应一个Echo Reply(type = 0)的过程。 为什么用ping不能测试某一个端口 刚开始接触网络的时候,可能很多人都有疑问,怎么用ping来测试远程主机的某个...
阅读(4038) 评论(0)

Apache HttpClient 没有设置time out导致应用长时间阻塞的问题

现在的对外接口一般都是Http + json的,因为简单,语言无关。 Apache HttpClient应该是最常用的Java http组件了。这货有个坑爹的地方,Apache HttpClient如果对方不回应,或者网络原因不返回了,那么HttpClient会一直阻塞。这种情况在公网可能比较容易碰到。在内网时,也有一次因为一台中转的nginx挂掉而导致hessian请求长时间阻塞。 因为Ht...
阅读(14678) 评论(2)

vitess中rpc兼容http请求的技巧

vitess是google的一个mysql项目,用go和python实现。https://code.google.com/p/vitess/ vitess中用rpc方式来中转mysql的请求,其中rpc的实现很有意思,兼容了http请求。 兼容http请求有明显的好处: 1.可以用现成的监控工具来监控服务是否正常,不用另外写插件 2.可以方便地实现查询信息功能,不用另外再开发工具或者界面...
阅读(2229) 评论(0)

socket编程:SO_REUSEADDR例解

socket编程:SO_REUSEADDR例解                                             kevintz 2000-6-19     网友vmstat多次提出了这个问题:SO_REUSEADDR有什么用处和怎么使用。而且很多网友在编写网络程序时也会遇到这个问题。所以特意写了这么一篇文章,希望能够解答一些人的疑难。     其实这个问题在Richard Stevens的...
阅读(829) 评论(0)
    个人资料
    • 访问:1583233次
    • 积分:11427
    • 等级:
    • 排名:第1415名
    • 原创:129篇
    • 转载:29篇
    • 译文:2篇
    • 评论:342条
    博客专栏
    文章分类
    最新评论