TCPIP专述
李生龙
这个作者很懒,什么都没留下…
展开
-
查看 并发请求数及其TCP连接状态
服务器上的一些统计数据:1)统计80端口连接数netstat -nat|grep -i "80"|wc -l2)统计httpd协议连接数ps -ef|grep httpd|wc -l3)、统计已连接上的,状态为“establishednetstat -na|grep ESTABLISHED|wc -l4)、查出哪个IP地址连接最多,将其封了.nets转载 2015-04-28 13:58:15 · 631 阅读 · 0 评论 -
IO之阻塞与非阻塞比较
在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出.对于网络编程的更多详细说明建议参考下面的书籍《UNIX网络编程》 《TCP/IP 详解》 《Unix环境高级编程》非阻塞IO和阻塞IO:在网络编程中对于一个网络句柄会遇到阻塞IO和非阻塞IO的概念, 这里对于这两种socket先做一下说明转载 2015-09-09 11:05:42 · 397 阅读 · 0 评论 -
TCP之深入浅出send和recv
本篇我们用一个测试机上的阻塞socket实例来说明主题。文章中所有图都是在测试系统上现截取的。需要理解的3个概念1. TCP socket的buffer每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的流量(拥塞)控制便是依赖于这两个独立的buffer以及buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没转载 2015-09-09 11:05:08 · 501 阅读 · 0 评论 -
服务器TIME_WAIT和CLOSE_WAIT详解和解决办法
TCP状态转移要点TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得 注意的状态有两个:CLOSE_WAIT和TIME_WAIT。 1、LISTE转载 2015-04-28 13:58:48 · 415 阅读 · 0 评论 -
linux 系统优化tcp连接
提高服务器的负载能力,是一个永恒的话题。在一台服务器CPU和内存资源额定有限的情况下,最大的压榨服务器的性能,是最终的目的。要提高Linux系统下的负载能力,可以先启用Apache的Worker模式(参考我写的《Ubuntu下配置Apache的Worker模式》一文),来提高单位时间内的并发量。但是即使这么做了,当网站发展起来之后,连接数过多的问题就会日益明显。在节省成本的情况下,可以考虑修改Li转载 2015-04-28 13:54:54 · 517 阅读 · 0 评论 -
修改linux tcp连接数
一、 文件数限制修改(1) vi /etc/security/limits.conf* soft nofile 10240* hard nofile 10240(2) vi /etc/pam.d/loginsession required /lib/security/pam_limits.so二、 网络端口限制修改(1) vi /etc/rc.d/rc.lo转载 2015-04-28 13:56:18 · 588 阅读 · 0 评论 -
CLOSE_WAIT状态的原因与解决方法
CLOSE_WAIT状态的原因与解决方法 2009-09-24 13:52:18分类: C/C++这个问题之前没有怎么留意过,是最近在面试过程中遇到的一个问题,面了两家公司,两家公司竟然都面到到了这个问题,不得不使我开始关注这个问题。说起CLOSE_WAIT状态,如果不知道的话,还是先瞧一下TCP的状态转移图吧。关闭socket分为主动关闭(Ac转载 2015-04-28 14:39:43 · 39869 阅读 · 2 评论 -
应用开发提高性能内核可修改的参数
proc文件系统介绍由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。网络编程常用设置参数1、cat /proc/sys/fs/file-max file-max指定了系统范围内所有进程可以打开的文件句柄的数量限制2、cat /proc/sys/fs/file-nr操作系统能否支持百原创 2015-03-27 18:14:21 · 865 阅读 · 0 评论 -
TCP三次握手和四次断连深入分析:连接状态与关系(1)
说到tcp协议,凡是稍微看过的人都能顺口说出三次握手和四次断连,再牛逼的一点的就能够把每个状态(SYNC_SENT、CLOSE_WAIT。。。。。。等)都能背出来,而说道socket编程,基本上写过网络编程的人都会熟悉那几个标准的API:socket、connect、listen、accept。。。。。。等。但是,我敢打赌很少有人明白tcp状态和socket编程API之间的关系。不信? 看看如下几转载 2015-04-28 14:59:41 · 543 阅读 · 0 评论 -
图解TCP-IP协议
本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载!本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。转载 2015-04-28 14:49:16 · 533 阅读 · 0 评论 -
Linux中keepalive的使用
/proc/sys/net/ipv4/tcp_keepalive_time 当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。 /proc/sys/net/ipv4/tcp_keepalive_intvl 当探测没有确认时,重新发送探测的频度。缺省是75秒。 /proc/sys/net/ipv4/tcp_keepalive_probes 在认定连转载 2015-04-28 14:00:27 · 996 阅读 · 0 评论 -
TCP状态迁移图浅析
一.TCP简介 TCP提供一种面向连接的,可靠的字节流服务。面对连接意味着两个使用TCP的应用,在彼此交换数据之前必须先建立一个连接。TCP通过以下方式提供可靠性: 1. 应用数据被分割成TCP认为最适合发送的数据块,由TCP传递给IP的信息单位成为报文段。 2. 当TCP发出一个段后,它就启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一原创 2015-03-27 20:43:29 · 430 阅读 · 0 评论 -
proc/sys/net/ipv4/下各项的意义
此博客讲述tcpip,及内核编程很专业,排名151,http://blog.csdn.net/zdwzzu2006/article/details/7716972/proc/sys/net/ipv4/icmp_timeexceed_rate这个在traceroute时导致著名的“Solaris middle star”。这个文件控制发送ICMP Time Exc转载 2015-04-28 14:03:24 · 445 阅读 · 0 评论 -
TCP三次握手和四次断连深入分析:连接状态与关系(2)
说到tcp协议,凡是稍微看过的人都能顺口说出三次握手和四次断连,但什么时候客户端才能够连接上server端, 是server端调用bind后还是listen后还是accept后 ?AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载!使用ss工具去查看,client显示FIN_WAIT_2状态:[liyh@localhost ~]$转载 2015-04-28 15:00:15 · 489 阅读 · 0 评论 -
从问题看本质: 研究TCP close_wait的内幕
最近遇到的一个关于socket.close的问题,在某个应用服务器出现的状况(执行netstat -np | grep tcp): tcp 0 0 10.224.122.16:50158 10.224.112.58:8788 CLOSE_WAITtcp 0 0 10.224.122.16:37655转载 2015-04-28 13:55:11 · 619 阅读 · 0 评论 -
C1000k 新思路:用户态 TCP/IP 协议栈
现在的服务器支撑上百万个并发 TCP 连接已经不是新闻(余锋2010年的演讲,ideawu 的 iComet 开源项目,WhatsApp 做到了 2.5M)。实现 C1000k 的常规做法是调整内核参数,提高文件数,降低每个连接的内存消耗(参考 ideawu 的博客)。在今年的 BSDCan2014 会议上, Patrick Kelsey 介绍了把 FreeBSD 9.x 的转载 2015-03-17 13:08:57 · 664 阅读 · 0 评论 -
高性能网络编程7--tcp连接的内存使用
当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣。socket编程方法提供了SO_SNDBUF、SO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉,如下(sysctl -a命令可以查看这些配置):[cpp]转载 2015-09-23 18:02:18 · 378 阅读 · 0 评论