![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
kmcfly
故不积蹞步,无以至千里;不积小流,无以成江海。
展开
-
线程池 和数据库连接池
线程池的原理和连接池的原理 线程池的原理: 来看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。可能你也许会问:为什么要搞得这么麻烦,如果转载 2015-05-14 20:09:34 · 2822 阅读 · 0 评论 -
网络编程--服务器编程模型
原文:http://blog.csdn.net/yfkiss/article/details/7553832本文通过一个简单的例子,介绍网络服务器编程模型服务器接受客户端连接请求,回显客户端发过来的数据,发送当前时间给客户端所有源码可打包下载:http://download.csdn.net/detail/yfkiss/4318990客户端请求相关代码:转载 2015-05-14 19:57:35 · 440 阅读 · 0 评论 -
linux 网络编程相关知识
1:tcp和udp的区别2:流量控制和拥塞控制的实现机制3:滑动窗口的实现机制4:多线程如何同步。5:进程间通讯的方式有哪些,各有什么优缺点6:tcp连接建立的时候3次握手的具体过程,以及其中的每一步是为什么7:tcp断开连接的具体过程,其中每一步是为什么那么做8:tcp建立连接和断开连接的各种过程中的状态转换细节9:epool与select的区别10:epoo转载 2016-01-19 11:04:33 · 574 阅读 · 0 评论 -
TCP流量控制和拥塞控制
TCP/ip的流量控制1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是 rwnd = 400 ”(这里的 rwn转载 2016-01-19 14:59:07 · 318 阅读 · 0 评论 -
理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)
标签: TCPTCP序列号TCP应答号Sequence NumberAcknowledgment Numbe2014-07-25 13:00 11746人阅读 评论(8) 收藏 举报 分类:Protocol(5) 原文见:http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-ac转载 2016-01-19 15:09:05 · 715 阅读 · 0 评论 -
epoll 边沿触发
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __转载 2016-03-04 16:06:33 · 712 阅读 · 0 评论 -
epoll使用精髓
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且转载 2015-07-07 23:59:23 · 396 阅读 · 0 评论 -
Epoll在LT和ET模式下的读写方式
在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂转载 2016-03-30 15:20:35 · 295 阅读 · 0 评论 -
epoll 使用详解
epoll简介epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获得较好的性能( 此时被监视的文件描述符数目非常大,与旧的 select 和 poll 系统调用完成操作所需 O(n) 不同, epoll能在O(1)时间内完成操作,所以性能相当高转载 2016-02-26 10:59:18 · 347 阅读 · 0 评论 -
time_wait和close_wait状态
在服务器的日常维护过程中,会经常用到下面的命令:[plain] view plain copy netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 它会显示例如下面的信息:TIME_WAIT 814CLOSE_WAIT 1转载 2016-03-15 10:14:49 · 344 阅读 · 0 评论 -
apache 设置用户注意事项
在apache conf 目录里 httpd.conf 配置文件中## If you wish httpd to run as a different user or group, you must run# httpd as root initially and it will switch. ## User/Group: The name (or原创 2016-05-25 20:10:56 · 875 阅读 · 0 评论 -
HTTP之referer
1、打开httpfox抓包插件,在百度中搜索126.com,搜索项中点击网站入口,通过抓包工具,查看http请求 在http请求的Headers部分可见Referer.Referer http://www.baidu.com/s?tn=98835442_hao_pg&ie=utf-8&f=3&wd=126.com&oq=126.&bs=126.com&rsv_bp转载 2016-04-21 09:35:54 · 684 阅读 · 0 评论 -
State Threads——异步回调的线性实现
本文的标题看起来有点拗口,其实State Threads库就是在单线程中使用同步编程思想来实现异步的处理流程,从而实现单线程能并发处理成百上千个请求,而且每个请求的处理过程是线性的,没有使用晦涩难懂的callback机制来衔接处理流程。ST (State Threads) 库提供了一种高性能、可扩展服务器(比如web server、proxy server、mail agent等)的实现方转载 2016-08-22 18:00:22 · 725 阅读 · 0 评论 -
在Ubuntu 14.04 64bit上编译并研究State Threads网络线程
State Threads是一个广受关注的高性能网络线程库,winlin在SRS中做了比较充分的应用,我很遗憾直到现在才精心研究它。下面是我的研究实录,以作备忘。一、源码编译下面是在Ubuntu 14.04 64bit上面的实操记录:从官网http://sourceforge.net/projects/state-threads/下载源码包,最新版是1.9,如果不能下载,就转载 2016-08-22 19:14:05 · 1085 阅读 · 0 评论 -
tcpdump 抓包
http://starsliao.blog.163.com/blog/static/89048201062333032563/TCPdump抓包命令 tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。 tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于转载 2015-08-03 22:02:21 · 575 阅读 · 0 评论 -
tcpDump 抓包保存
首选介绍一下tcpdump的常用参数tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ] [ -T 类型 ] [ -w 文件名 ] [表达式 ]1. tcpdump的选转载 2015-08-04 14:34:58 · 1248 阅读 · 0 评论 -
close 和shutdown 函数
当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:close(sockfd); 你也可以调用shutdown()函数来关闭该socket。该函数允许你只停止在某个方向上的数据传输,而一个方向上的数据传输继续进行。如你可以关 闭某socket的写操作而允许继续在该socket上接受数据,直至读入所有数据。原创 2015-08-03 16:51:16 · 392 阅读 · 0 评论 -
linux arp z组播检测IP冲突
原理其实很简单,那就是广播一个arp包,然后recv,如果没有数据(这里要设置延时),那么说明这个ip是可用的,否则就检测这个数据是否为回复我们发出的arp的应答包.如果是则证明ip已被使用,否则继续等待. 这里可以看下busybox的dhcp中的检测程序。 networking/udhcp/arpping.c C代码 /* vi: set sw=4 t转载 2015-05-22 11:12:45 · 800 阅读 · 0 评论 -
linux 网络编程 -组播通信
linux网络编程之-----多播(组播)编程什么是多播 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。转载 2015-05-23 10:18:12 · 585 阅读 · 0 评论 -
TCP如何保证可靠性
在TCP的连接中,数据流必须以正确的顺序送达对方。TCP的可靠性是通过顺序编号和确认(ACK)来实现的。TCP在开始传送一个段时,为准备重传而首先将该段插入到发送队列之中,同时启动时钟。其后,如果收到了接受端对该段的ACK信息,就将该段从队列中删去。如果在时钟规定的时间内,ACK未返回,那么就从发送队列中再次送出这个段。TCP在协议中就对数据可靠传输做了保障,握手与断开都需要通讯双方确认,数据传输转载 2015-07-08 22:58:08 · 1013 阅读 · 0 评论 -
select,poll,epoll之间的区别
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用转载 2015-07-06 16:31:23 · 492 阅读 · 0 评论 -
wireshark 过滤规则
1.(ip.src == 192.168.3.41 and ip.dst == 192.168.3.39 and tcp.srcport == 80 and tcp contains "motion")or (ip.src == 192.168.3.39 and ip.dst ==192.168.3.41 and tcp.dstport==80 and http)2.(ip.src原创 2015-07-27 11:31:39 · 491 阅读 · 0 评论 -
epoll+线程池
epoll是linux下高并发服务器的完美方案,因为是基于事件触发的,所以比select快的不只是一个数量级。单线程epoll,触发量可达到15000,但是加上业务后,因为大多数业务都与数据库打交道,所以就会存在阻塞的情况,这个时候就必须用多线程来提速。 业务在线程池内,这里要加锁才行。测试结果2300个/s 测试工具:stressmark因为加了适用与ab的代码,所以转载 2015-07-08 00:09:58 · 497 阅读 · 0 评论 -
长连接 短连接 区别
TCP连接简介当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图: 一、长连接与短连转载 2015-07-19 13:21:14 · 2912 阅读 · 0 评论 -
进程间 对共享资源的访问 互斥 机制
http://blog.csdn.net/lanseshenhua/article/details/5557017 Linux下的多进程间共享资源的互斥访问分类: Linux编程2010-05-04 19:21 4291人阅读 评论(1) 收藏 举报linuxnull测试把源代码运行一遍就知道了[cpp] view pla转载 2015-07-19 13:32:56 · 1068 阅读 · 0 评论 -
nginx使用介绍 说明
1.什么是NginxNginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺转载 2015-07-19 17:59:35 · 495 阅读 · 0 评论 -
TCP send 函数
int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;转载 2015-07-31 15:04:03 · 606 阅读 · 0 评论 -
TCP 传输 滑动窗口
我们可以大概看一下上图的模型:首先是AB之间三次握手建立TCP连接。在报文的交互过程中,A将自己的缓冲区大小(窗口大小)3发送给B,B同理,这样双方就知道了对端的窗口大小。A开始发送数据,A连续发送3个单位的数据,因为他知道B的缓冲区大小。在这一波数据发送完后,A就不能再发了,需等待B的确认。A发送过来的数据逐渐将缓冲区填满。这时候缓冲区中的一个报文被进程读取,缓冲区有原创 2015-07-31 21:03:03 · 481 阅读 · 0 评论 -
wiresharek 分析TCP 报文头
本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析。一、概述TCP是面向连接的可靠传输协议,两个进程互发数据之前需要建立连接,这里的连接只不过是端系统中分配的一些缓存和状态变量,中间的分组交换机不维护任何连接状态信息。连接建立整个过程如下(即三次握手协议):首先,客户机发送一个特殊的T转载 2015-07-31 21:36:40 · 6611 阅读 · 0 评论 -
TCP/IP学习(四)TCP缓冲区大小及限制
这个问题在前面有的部分已经涉及,这里在重新总结下。主要参考UNIX网络编程。(1)数据报大小IPv4的数据报最大大小是65535字节,包括IPv4首部。因为首部中说明大小的字段为16位。IPv6的数据报最大大小是65575字节,包括40字节的IPv6首部。同样是展16位,但是IPv6首部大小不算在里面,所以总大小比IPv4大一个首部(40字节)。(2)MTU许多网络有一转载 2015-07-31 15:26:50 · 1630 阅读 · 0 评论 -
TCP重传的次数和间隔时间
第一次发送后所设置的超时时间实际上为1.5秒,此后该时间在每次重传时增加一倍,一直到64秒,采用的是指数退避算法。一共重传12次,大约9分钟才放弃重传,该时间在目前的TCP实现中是不可变的,Solaris2.2允许管理者改变这个时间,tcp_ip_abort_interval变量。且其默认值为两分钟,而不是最常用的9分钟。转载 2017-03-05 20:05:38 · 16703 阅读 · 0 评论