随笔分类 -  网络

摘要:转自:http://www.cnblogs.com/heiing/archive/2010/04/19/1715304.html要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断。具体来说,就是看HTTP_VIA字段,如果这个字段设置了,说明客户端使用了代理服务器。匿名级别可以参... 阅读全文
posted @ 2014-12-18 16:14 balaamwe 阅读(4419) 评论(0) 推荐(1) 编辑
摘要:转:http://blog.csdn.net/historyasamirror/article/details/5778378当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《IO - 同步,异步,阻塞,非阻塞》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link。写完之后发现很多人都很喜欢,我还是非常开心的,也说明这个问题确实困扰了很多人。随着学习的深入,渐渐的感觉原来的理解有些偏差,但是还是没引起自己的重视,觉着都是一些小错误,无伤大雅。直到有位博友问了一个问题,我重新查阅了一些更权威的资料,才发现原来的文章中有很大的理论错 阅读全文
posted @ 2013-03-04 17:31 balaamwe 编辑
摘要:socket /套接字 Sockets let you send raw streams of bytes back and forth between two computers, giving you fairly low-level access to the TCP/IP protocol. See the File I/O Amanuensis for sample code to do that. In TCP/IP each computer has a name, such as roedy.mindprod.com. However, various TCP/IP progr 阅读全文
posted @ 2012-02-02 15:57 balaamwe 编辑
摘要:http://blog.csdn.net/mahongming/article/details/6048947简介HAProxy是一款提供高可用性、负载均衡以及基于TCP和HTTP应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。HAProxy适用于那些负载较大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy可以支持数以万计的并发连接,并且HAProxy的运行模式使得它可以很简单安全的整合进架构中,同时可以保护web服务器不被暴露到网络上。安装与管理安装软件选择说明软件版本haproxy1.4.91)安 阅读全文
posted @ 2012-01-17 11:10 balaamwe 编辑
摘要:第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有 阅读全文
posted @ 2012-01-12 20:46 balaamwe 阅读(254) 评论(0) 推荐(0) 编辑
摘要:●IP转发,或称IP路由,简单地说,就是路由器接收一个IP包后,下一步就决定往路由器的哪个端口发送该数据包出去。具体地分析,大概有如下几个步骤:1)路由器接收到数据帧并检查其校验码(FCS)。如果有错误发生,帧被丢弃。路由器不负责恢复丢失的包。2)如果没有错误发生,路由器接下来检查包的类型(Ethernet Type字段),并解包。数据链路层包头和包尾被丢弃。3)假设该包为IP包,路由器检查其路由表,找到和包中目的IP地址最匹配的前缀。4)匹配的路由表记录了包含外发接口和下一跳路由器;利用这些信息可以重组一个新的数据链路帧。5)在创建一个新帧之前,路由器会更新其IP包头的TTL字段,并重新计算 阅读全文
posted @ 2012-01-12 20:37 balaamwe 编辑
摘要:http://www.ibm.com/developerworks/cn/linux/l-hisock.html 阅读全文
posted @ 2012-01-12 20:22 balaamwe 编辑
摘要:http://chinaliwee.blog.163.com/blog/static/34118206200871081847280/Apache MINA 线程模型配置2007-04-27 09:54本文内容是配置基于MINA的应用中的线程模型。1 禁止缺省的ThreadModel设置 MINA2.0及以后版本已经没有ThreadModel了,如果使用这些版本的话,可以跳过本节。 ThreadModel设置是在MINA1.0以后引入的,但是使用ThreadModel增加了配置的复杂性,推荐禁止掉缺省的TheadModel配置。 IoAcceptor acceptor = .... 阅读全文
posted @ 2012-01-12 10:41 balaamwe 阅读(1472) 评论(0) 推荐(0) 编辑
摘要:http://scholers.iteye.com/blog/730429我们知道,进行SOCKET tcp/ip通信的时候,不知道每次接受的报文到底有多长?也就是是判断不了报文(消息)的边界。 一般的做法有下面几种:1。设定固定长度的报文头,在固定的报文头上增加消息长度。每次读取的时候先读这个报文头,得到本次消息的总体长度。2。在报文中设定特殊字符作为边界。比如:***************************之类的特殊符号等。MINA2(我采用的版本是MINA2 RC1版本)中我采用第一种方式来读取消息报文。具体代码:可以利用IoBuffer的prefixedDataAvailabl 阅读全文
posted @ 2012-01-11 13:55 balaamwe 编辑
摘要:1.position例:Java代码position()第一次使用返回值为当前位置:0position(8) 返回第8个字节以后的数据(包括第8个)可以和 limit 联合使用如:Java代码buffer.position(3);buffer.limit(7);ByteBufferslice=buffer.slice();再次调用 position() 返回:82.remaining例:Java代码ByteBufferbyt=ByteBuffer.allocate(128,false);第一次调用byt.remaining(); 返回 128A、使用:byt.putInt(5);或者byt.g 阅读全文
posted @ 2012-01-11 13:54 balaamwe 编辑
摘要:http://scholers.iteye.com/blog/784336 MINA2中(MINA2 RC版本,MINA2.0正式版已经发布)服务端接受数据默认有一定长度的缓冲区(可以在启动的时候设置)。那么对于大报文,怎么处理呢?比如说超过1024,甚至更多?MINA2为了节省网络流量,提高处理效率,会将大报文自动拆分(可能是存放MINA2中的缓冲区里面):比如2048字节的报文,就会拆分成两次;那么在接受的时候,就有一个如何判断是完整报文的问题,或者说是一个拆包组包的问题。 MINA2中初始化服务的时候是可以设置输入和输出的缓冲区的:Java代码acceptor.getSessionCon 阅读全文
posted @ 2012-01-11 13:53 balaamwe 编辑
摘要:一、背景MINA框架允许开发人员在编写基于MINA的应用程序时使用自己熟悉的日志系统。二、SLF4JMINA框架使用Simple Logging Facade for Java (SLF4J)。你可以在这里获取到更多关于SLF4J的信息,这种日志系统兼容各种日志系统的实现。你可能会使用log4j、java.util.logging或其他的日志系统,使用这种日志框架的好处在于如果你在开发过程中,将日志系统从java.util.logging改为log4j,你根本不需要修改你的代码。选择正确的jar包Logging frameworkRequired JARsLog4J 1.2.xslf4j-ap 阅读全文
posted @ 2012-01-11 13:41 balaamwe 阅读(2254) 评论(0) 推荐(0) 编辑
摘要:privatevoidcheckDeadLock(){//Onlyread/write/connect/writefuturecancausedeadlock.if(!(thisinstanceofCloseFuture||thisinstanceofWriteFuture||thisinstanceofReadFuture||thisinstanceofConnectFuture)){return;}//GetthecurrentthreadstackTrace.//UsingThread.currentThread().getStackTrace()isthebestsolution,// 阅读全文
posted @ 2012-01-11 10:47 balaamwe 编辑
摘要:CLOSE_WAIT,TCP的癌症,TCP的朋友。http://www.blogjava.net/fine/archive/2008/07/26/217709.htmlCLOSE_WAIT状态的生成原因首先我们知道,如果我们的服务器程序APACHE处于CLOSE_WAIT状态的话,说明套接字是被动关闭的!因为如果是CLIENT端主动断掉当前连接的话,那么双方关闭这个TCP连接共需要四个packet:Client--->FIN--->ServerClient<---ACK<---Server这时候Client端处于FIN_WAIT_2状态;而Server程序处于CLOSE 阅读全文
posted @ 2012-01-10 16:19 balaamwe 编辑
摘要:http://www.cnblogs.com/ggzwtj/archive/2011/10/14/2212095.htmlMina之session1、IoSession与底层的传输层类型无关,表示通信双端的连接。提供用户自定义属性,可以用于在过滤器和处理器之间交换用户自定义协议相关信息。每个会话都由一个Service来提供服务,同时有一个Handler负责此会话的I/O事件处理。最重要的两个方法就是read和write,这两个方法都是异步执行,如要真正完成必须在其结果上进行等待。关闭会话的方法close也是异步执行的,也就是应等待返回的CloseFuture,此外,还有另一种关闭方式close 阅读全文
posted @ 2012-01-09 17:24 balaamwe 阅读(1980) 评论(0) 推荐(0) 编辑
摘要:这个数据结构是这样的:structhostent {const char*h_name;// official name of hostchar**h_aliases;// alias listshorth_addrtype;// host address typeshorth_length;// length of addresschar**h_addr_list;// list of addresses from name server#defineh_addrh_addr_list[0]// address, for backward compatiblity};typedef uint 阅读全文
posted @ 2012-01-06 00:35 balaamwe 编辑
摘要:在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:typedef unsigned short sa_family_t;struct sockaddr { sa_family_t sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol address */在linux环境下,结构体struct sockaddr_in在/usr/include/netinet/in.h中定义,具体如下:/* Structure 阅读全文
posted @ 2012-01-05 19:07 balaamwe 编辑
摘要:网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网 阅读全文
posted @ 2012-01-05 18:58 balaamwe 编辑
摘要:netinet/in.h - Internet address family netinet / in.h - 互联网地址族http://pubs.opengroup.org/onlinepubs/000095399/basedefs/netinet/in.h.html 阅读全文
posted @ 2012-01-05 16:16 balaamwe 编辑
摘要:Connection reset by peer的常见原因:1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭;如果知道实际连接服务器的并发客户数没有超过服务器的承载量,则有可能是中了病毒或者木马,引起网络流量异常。可以使用netstat -an查看网络连接情况。2)客户关掉了浏览器,而服务器还在给客户端发送数据;3)浏览器端按了Stop;这两种情况一般不会影响服务器。但是如果对异常信息没有特别处理,有可能在服务器的日志文件中,重复出现该异常,造成服务器日志文件过大,影响服务器的运行。可以对引起异常的部分,使用try...catch捕获该异常,然后不输出或者只输出一句提示信息,避 阅读全文
posted @ 2012-01-05 12:14 balaamwe 编辑