网络编程
文章平均质量分 92
横云断岭
在国内大型互联网公司负责6K+应用,80K+机器的Spring Boot微服务技术落地,关注开发体验,微服务,APM,应用诊断,dubbo开源。
Github: https://github.com/hengyunabc
展开
-
socket编程:SO_REUSEADDR例解
<br />socket编程:SO_REUSEADDR例解 <br /><br /> kevintz 2000-6-19 <br /><br /> 网友vmstat多次提出了这个问题:SO_REUSEADDR有什么用处和怎么使用。而<br />且很多网友在编写网络程序时也会遇到这个问题。所以特意写了这么一篇文章,<br />希望能够解答一些人的疑难。 <br /> 其实这个问题在Richard Stevens的转载 2010-10-05 00:42:00 · 1126 阅读 · 0 评论 -
蛋疼的Apple IOS Push通知协议
简介Apple Push通知机制其实很简单,就是Apple的APNs服务器做为中间人,把消息推送到对应的设备上。一张来自Apple文档的图:当然,示意图看起来简单,但是还有一些实际的问题。比如,如何区分Provicer的?如何区分设备的?简单而言,是这样的:每个应用都有一个自己的证书(certificate),开发者可以从苹果那里获得;应用可以到APNs服务原创 2014-05-10 00:33:07 · 10600 阅读 · 1 评论 -
为什么基于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原创 2015-03-16 19:12:50 · 31933 阅读 · 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了。问过开发人员之后,程序已经原创 2015-02-17 11:15:26 · 15337 阅读 · 1 评论 -
Apache HttpClient 没有设置time out导致应用长时间阻塞的问题
现在的对外接口一般都是Http + json的,因为简单,语言无关。Apache HttpClient应该是最常用的Java http组件了。这货有个坑爹的地方,Apache HttpClient如果对方不回应,或者网络原因不返回了,那么HttpClient会一直阻塞。这种情况在公网可能比较容易碰到。在内网时,也有一次因为一台中转的nginx挂掉而导致hessian请求长时间阻塞。因为Ht原创 2014-04-21 19:46:12 · 25387 阅读 · 2 评论 -
ZPush--基于netty4实现的苹果通知推送服务(APNs)Java客户端
简单说下实现苹果通知推送服务(APNs)客户端的一些要注意的地方:使用长连接;sanbox服务器是没用的,调试时直接用“gateway.push.apple.com”域名;对于错误的Notification,苹果会回应一个Error response,里面有个identifier,在这个identifier之后的Notification全都失败;因此发送者要缓存已经发送的Not原创 2014-05-10 00:46:11 · 8472 阅读 · 12 评论 -
扯谈网络编程之自己实现ping
ping是基于ICMP(Internet Control Message Protocol)协议实现的,而ICMP协议是在IP层实现的。ping实际上是发起者发送一个Echo Request(type = 8)的,远程主机回应一个Echo Reply(type = 0)的过程。为什么用ping不能测试某一个端口刚开始接触网络的时候,可能很多人都有疑问,怎么用ping来测试远程主机的某个原创 2014-05-03 05:37:12 · 6156 阅读 · 0 评论 -
vitess中rpc兼容http请求的技巧
vitess是google的一个mysql项目,用go和python实现。https://code.google.com/p/vitess/vitess中用rpc方式来中转mysql的请求,其中rpc的实现很有意思,兼容了http请求。兼容http请求有明显的好处:1.可以用现成的监控工具来监控服务是否正常,不用另外写插件2.可以方便地实现查询信息功能,不用另外再开发工具或者界面原创 2012-07-08 00:17:53 · 2899 阅读 · 0 评论 -
扯谈网络编程之Tcp SYN flood洪水攻击
update 2017-5-11: syncookies 会点用 tcp_options 字段空间,会强制关闭 tcp 高级流控技术而退化成原始 tcp 模式。此模式会导致 封包 丢失时 对端 要等待 MSL 时间来发现丢包事件并重试,以及关闭连接时 TIME_WAIT 状态保持 2MSL 时间。 简介TCP协议要经过三次握手才能建立连接:(from wiki)于是出...原创 2014-05-12 20:45:03 · 26374 阅读 · 6 评论