网络协议-TCP/HTTP
文章平均质量分 73
SiC 软件
SiC B2B2C Shop 开源商城 作者
展开
-
MIME类型-服务端验证上传文件的类型的讨论
MIME的作用 : 使客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件。 web服务器使用MIME来说明发送数据的种类, web客户端使用MIME来说明希望接收到的数据种类。 Tomcat的安装目录\conf\web.xml 中就定义了大量MIME类型 ,你可也去看一下。 ...2008-09-19 10:24:36 · 818 阅读 · 0 评论 -
Java NIO 系列教程
原文地址:http://tutorials.jenkov.com/java-nio/index.html作者:Jakob Jenkov 译者:郭蕾 校对:方腾飞Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。Java NIO: Channels and Bu...原创 2014-05-15 00:20:08 · 96 阅读 · 0 评论 -
TCP 的那些事儿
(上)TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另外,本文我会使用英文术语,这样方便你通过这些英文关键词...原创 2014-07-08 11:08:02 · 500 阅读 · 0 评论 -
memcached协议
memcached协议旧版:http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt新版:https://github.com/memcached/memcached/blob/master/doc/protocol.txt一、协议 memcached的客户端使用TCP连接同memcac...原创 2014-07-17 23:43:50 · 123 阅读 · 0 评论 -
Thrift概述
Thrift是跨语言的RPC框架,现在是一个Apache的顶级项目。Thrift通过一个中间语言--IDL接口定义语言,来定义RPC的接口和数据类型。使用Thrift的代码生成工具(thrift-0.9.1.exe编译器)读取IDL文件,生成不同语言的服务端与客户端代码,并由生成的代码负责RPC协议层和传输层的实现。目前支持语言C++,Java, Python, PHP, Ruby, Erlan...原创 2013-10-17 20:54:16 · 238 阅读 · 0 评论 -
TCP/IP Socket心跳机制so_keepalive的三个参数详解
socket心跳机制so_keepalive的三个参数详解 SO_KEEPALIVE 保持连接检测对方主机是否崩溃,避免(服务器)永远阻塞于TCP连接的输入。设置该选项后,如果2小时内在此套接口的任一方向都没有数据交换,TCP就自动给对方 发一个保持存活探测分节(keepalive probe)。这是一个对方必须响应的TCP分节.它会导致以下三种情况:1、对方接收一切正常:以期...原创 2013-10-19 20:32:48 · 2220 阅读 · 0 评论 -
Java Socket参数详解
一、构造SocketSocket的构造方法有以下几种重载形式:(1)Socket()(2)Socket(InetAddress address, int port)throws UnknownHostException,IOException(3)Socket(InetAddress address, int port, InetAddress localAddr, int l...原创 2013-10-19 20:45:05 · 1080 阅读 · 0 评论 -
Java Socket重要参数讲解
Java Socket的api可能很多人会用,但是Java Socket的参数可能很多人都不知道用来干嘛的,甚至都不知道有这些参数。backlog用于ServerSocket,配置ServerSocket的最大客户端等待队列。等待队列的意思,先看下面代码public class Main { public static void main(String[] args...原创 2013-10-19 21:18:57 · 95 阅读 · 0 评论 -
JAVA Socket超时浅析
JAVA Socket超时浅析 套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。JAVA有两个基于数据流的套接字类:ServerSocket,服务器用它“侦听”进入的连接;Socket,客户端用它初始一次连接。侦听套接字只能接收新的连接请求,不能接收实际的数据包。...原创 2013-10-19 21:59:33 · 110 阅读 · 0 评论 -
JDK7新特性之AIO
JDK7中新加入的文件和网络io特性称为nio2(new io 2, 因为jdk1.4中已经有过一个nio了),包含了众多性能和功能上的改进,其中最重要的部分,就是对异步io的支持,称为java aio(asynchronous IO)。 jdk在1.4版本的nio中提供了对非阻塞多路复用同步io模型的支持,但是在Windows上是基于较低效select/poll实现的。jdk1.7...原创 2012-12-20 21:54:51 · 251 阅读 · 0 评论 -
BIO, NIO, AIO(转)
NIO通常采用Reactor模式,AIO通常采用Proactor模式。AIO简化了程序的编写,stream的读取和写入都有OS来完成,不需要像NIO那样子遍历Selector。Windows基于IOCP实现AIO,Linux只有eppoll模拟实现了AIO。Java7之前的JDK只支持NIO和BIO,从7开始支持AIO。4种通信方式:TCP/IP+BIO, TCP/IP+NIO, U...原创 2012-12-20 21:29:04 · 284 阅读 · 0 评论 -
Comet:基于 HTTP 长连接的“服务器推”技术
转载自: 《Comet:基于 HTTP 长连接的“服务器推”技术》http://www.ibm.com/developerworks/cn/web/wa-lo-comet/ -------------------------------------------------------------------------- 到这里,我们可以考虑来写一个简单的聊天室了。这个页...原创 2009-04-15 14:03:19 · 201 阅读 · 0 评论 -
HTTP协议
http请求由3部分组成1 请求行2 消息报头3 请求正文----------------------请求行以一个方法符号开头(get,post),后面跟着请求URI和协议的版本,CRLF以(回车换行)。以空格分隔,除了结尾的CRLF不允许出现单独的CRL或LF字符。格式如下:Method Request-URI HTTP-Version CRLFMethod 方法符号Request-UR...原创 2009-04-20 19:26:48 · 79 阅读 · 0 评论 -
REST和REST的四个级别
REST(表述性状态转移)是最近几年讨论的最为热烈的话题之一,其起源于Roy.T.Fielding博士的论文《软件架构风格和基于网路的软件架构设计》。Roy博士在他的论文里从架构风格角度阐述了网络应用程序中最佳架构风格REST。首先,REST是一个架构风格而不是一个架构,所谓架构风格就是凌驾于架构之上的一组约束。其次,REST对立面是RPC,而不是webservices或者SOAP,...2009-05-04 17:18:43 · 372 阅读 · 0 评论 -
TCP状态转移
TCP状态转移,一共存在11个状态,请看下图1.CLOSED:起始点,在超时或者连接关闭时候进入此状态。 2.LISTEN:svr端在等待连接过来时候的状态,svr端为此要调用socket, bind,listen函数,就能进入此状态。此称为应用程序被动打开(等待客户端来连接)。 3.SYN_SENT:客户端发起连接,发送SYN给服务器端。如果服务器端不能连接,则直接进入C...原创 2012-12-01 21:25:20 · 81 阅读 · 0 评论 -
TCP/IP TIME_WAIT状态原理
TIME_WAIT状态原理----------------------------通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态。客户端主动关闭连接时,会发送最后一个ack后,然后会进入TIME_WAIT状态,再停留2个MSL时间(后有MSL的解释),进入CLOSED状态。下图是以客户端主动关闭连接为例,说明这一过程的。 TIM...原创 2012-12-01 22:46:29 · 975 阅读 · 0 评论 -
Java Socket 几个重要的TCP/IP选项解析(二)
1. SO_LINGER/ SO_REUSEADDR TCP正常的关闭过程如下(四次握手过程):(FIN_WAIT_1) A ---FIN---> B(CLOSE_WAIT)(FIN_WAIT_2) A <--ACK-- B(CLOSE_WAIT) (TIME_WAIT)A <--FIN---- ...原创 2012-12-02 01:25:02 · 84 阅读 · 0 评论 -
同步/异步与阻塞/非阻塞的区别--多线程编程基础
在进行网络编程时,我们常常见到同步、异步、阻塞和非阻塞四种调用方式。这些方式彼此概念并不好理解。下面是我对这些术语的理解。同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子...原创 2012-12-02 01:41:18 · 63 阅读 · 0 评论 -
JAVA RMI线程模型及内部实现机制
JAVA RMI线程模型及内部实现机制 1 RMI内部实现 JAVA RMI是JAVA分布式结构的基础。 远程对象的通信过程中, RMI 使用标准机制: stub 和skeleton 。远程对象的 stub 担当远程对象的客户本地代表或代理人角色,调用程序将调 用本地stub 的方法,而本地 stub 将负责执行对远程对象的方法调用。在 RMI 中,远程对象的 stub 与该远...原创 2013-10-19 22:05:52 · 230 阅读 · 0 评论