网络编程
文章平均质量分 81
登记毛球
第一时间的拒绝是最好的拒绝
展开
-
【网络编程笔记】Linux系统常见的网络编程I/O模型简述
1. 典型的I/O模型根据”Unix Network Programming Volume 1”一书第6.2节的说明,Linux系统支持的典型I/O模型包含下面5种:阻塞I/O(blocking I/O)非阻塞I/O(nonblocking I/O)I/O多路复用(I/O multiplexing, e.g. select and poll)信号驱动型I/O(signal driven I转载 2017-03-29 10:17:25 · 234 阅读 · 0 评论 -
记一次TIME_WAIT网络故障
<p>最近发现一个PHP脚本时常出现连不上服务器的现象,调试了一下,发现是TIME_WAIT状态过多造成的,本文简要介绍一下解决问题的过程。</p>遇到这类问题,我习惯于先用strace命令跟踪了一下看看:shell> strace php /path/to/fileEADDRNOTAVAIL (Cannot assign requested address)从字面结果看似乎是网络资源相关问题。转载 2017-03-29 10:27:04 · 233 阅读 · 0 评论 -
【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—基础知识篇
最近遇到一个线上报警:服务器出现大量TIME_WAIT导致其无法与下游模块建立新HTTP连接,在解决过程中,通过查阅经典教材和技术文章,加深了对TCP网络问题的理解。作为笔记,记录于此。 备注:本文主要介绍TCP编程中涉及到的众多基础知识,关于实际工程中对由TIME_WAIT引发的不能建立新连接问题的解决方法将在下篇笔记中给出。1. 实际问题 初步查看发现,无法对外转载 2017-03-29 10:38:59 · 1625 阅读 · 0 评论 -
【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
上篇笔记主要介绍了与TIME_WAIT相关的基础知识,本文则从实践出发,说明如何解决文章标题提出的问题。1. 查看系统网络配置和当前TCP状态 在定位并处理应用程序出现的网络问题时,了解系统默认网络配置是非常必要的。以x86_64平台Linux kernelversion 2.6.9的机器为例,ipv4网络协议的默认配置可以在/proc/sys/net/ipv4/下查看,其中与TC转载 2017-03-29 10:42:06 · 395 阅读 · 0 评论 -
TCP协议疑难杂症全景解析
说明:1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了《TCP/IP详解》(卷一,卷二)以及《Unix网络编程》以及Linux源代码之外,学习网络更好的资源转载 2017-03-29 10:47:42 · 205 阅读 · 0 评论 -
NAT网络下TCP连接建立时可能SYN包被服务器忽略-tcp_tw_recycle
最近一个长连接服务经常被反馈连接失败,刚开始怀疑是网络问题,也就没有细查。今天仔细抓包分析了一下,原来碰到了在开启tcp_tw_recycle和tcp_timestamps的机器上,当多个客户端使用同一个外网IP( NAT)时可能出现连接建立不成功的坑,具体表现为客户端发送了SYN 包给服务器,服务器也收到了,但就是不回复SYN+ACK 给客户端,从而导致客户端重传SYNC,直至一分钟左右才能成功。转载 2017-03-29 12:16:36 · 509 阅读 · 0 评论