`
lobin
  • 浏览: 116458 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
Rss 文章列表
看了下HTTP协议中消息结构,包括请求和响应消息的定义。   看着简单,一个简单的文本传输协议。但其实挺复杂的,里边细节很多。   光一个header头的定义就很多很细。   比如请求/响应头字段field-value的的描述。   HTTP规范中关于请求头字段field-value的规则 field-value = *( field-content | LWS )   这个实际就比较复杂。   可能实际见到的就是一个简单的文本字符串。   但其中的细节还包括SP, HT, LWS, CR, LF, CRLF, *(重复), 还可以多行, 折叠等。这些组合重复再 ...
HTTP协议的定义看着挺规范的,但有时候感觉太随意了。里边有很多细节上的说明,虽然描述得很细,但看到细处又感觉很模糊,尤其是对消息的描述。总体感觉太松散随意。   HTTP规范中关于*rule的规则   HTTP协议中有这样一个规则: *rule   里边很多地方大量使用这种规则进行描述。在一个元素前面出现*号(*(element))表示对元素重复n次,n为0,1,2,...无穷大。   它的完整形式是这样的: <n>*<m>element   它表示对element重复n到m次。   如: 1*( SP | HT ) 表示1个SP或者 ...
void main() {   }   >gcc -S simpletest.c -o simpletest.s   >cat simpletest.s         .file   "simpletest.c"         .def    ___main;        .scl    2;      .type   32;     .endef         .text .globl _main         .def    _main;  .scl    2;      .type   32;     .endef _ ...
HTTP响应中的状态行、消息头   HTTP响应包括状态行,消息头,消息体以及实体等内容。   http服务器在处理请求响应时,发回一个响应消息给客户端: Response = Status-Line ; Section 6.1 *(( general-header ; Section 4.5 | response-header ; Section 6.2 | entit ...
头部 <1 byte,E,><1 byte,S,><4 bytes,,消息大小><8 bytes,,请求Id><1 byte,,状态><4 bytes,,版本><n bytes,,body> body 压缩 <4 bytes,,压缩算法><n bytes,,action><n bytes,,请求内容> 不压缩 BytesTransportRequest请求 <n bytes,,action><n bytes,,请求头><n bytes,,请求内容字 ...
encode one to one org.jboss.netty.handler.codec.oneone.OneToOneEncoder com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter.InternalEncoder org.jboss.netty.handler.codec.base64.Base64Encoder org.jboss.netty.handler.codec.marshalling.CompatibleMarshallingEncoder org.jboss.netty.handler.codec.s ...
以前整理的一点Thrift的资料 Java序列化机制实现:参考https://lobin.iteye.com/blog/629414序列化章节。
<版本号,2字节><无用字段,1字节><消息类型,1字节><方法名长度,4字节><方法名,n字节><序列号,4字节><参数…,n字节> <参数…,n字节>参考struct Field <Field类型,1字节><Field Id,2字节> <Field类型(stop),1字节> 上面的Field Id对应下面例子中”:”前面的数字: struct Order {     1: required i64 orderId;     2: required i64 use ...
    读取长度: this.length = DerInputStream.getLength(i & 0xFF, paramInputStream);   static int getLength(int paramInt, InputStream paramInputStream) throws IOException { int j = paramInt; int i; if ((j & 0x80) == 0) { i = j; } else { j &= 127; if (j ...
  private int getCharIndex(char c) throws InvalidAtributeException{ if( c >= '0' && c <= '9' ){ return c - 48; } else if( c >= 'A' && c <= 'Z' ){ return c - 55; } else if( c == '-' ){ return 36; } else if( c == '.' ){ return 37; } else if( ...
public enum HandshakeType { HELLO_REQUEST(0), CLIENT_HELLO(1), SERVER_HELLO(2), // certificate CERTIFICATE(3), // server_key_exchange (12) SERVER_KEY_EXCHANGE(12), // certificate_request(13) CERTIFICATE_REQUEST(13), // server_hello_done(14) SERVER_HEL ...
  typedef void bio_info_cb(struct bio_st *, int, const char *, int, long, long);   struct crypto_ex_data_st          {          STACK_OF(void) *sk;          int dummy; /* gcc is screwing up this data structure :-( */          };   typedef struct crypto_ex_data_st CRYPTO_EX_DATA; ...
import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; public class SocketChannelInput extends AbstractInput { private SocketChannel cha ...
public interface TestService { public void test(String name); }   public class TestServiceImpl implements TestService { @Override public void test(String name) { System.out.println("test:" + name); } }   public class BurlapSkeletonTest { private stati ...
  public interface Handler { public void handle(); }   public class Proxy { public static final int DEFAULT_PORT = 1080; public static final int DEFAULT_VERSION = 0x05; private Socket socket; private ThreadPoolExecutor ioexecutor; private int version; private int me ...
安装# tar -zxf ssocks-0.0.14.tar.gz# mkdir /usr/local/ssocks-0.0.14# ./configure --prefix=/usr/local/ssocks-0.0.14# make# make install# ./ssocksd -b 127.0.0.1 --port 1080 --daemon &# ./ssocksd --port 1080 --daemon &测试本级测试# curl -U admin:abcde --socks5 127.0.0.1:1080 www.baidu.com远程测试开启端口# ipt ...
@Test public void test() throws IOException { OutputStream os = socket.getOutputStream(); ByteArrayOutputStream hs = new ByteArrayOutputStream(); short id = 17; hs.write(id >> 8); hs.write((id << 8) >> 8); boolean query = true; int opcode = 0; // 0000 0000 00 ...
认证认证请求有头部,响应有头部请求头 class RequestHeader { int xid; int type; }  认证请求 class AuthPacket { int type; ustring scheme; buffer auth; }  响应头 class ReplyHeader { int xid; long zxid; int err; }   public class AuthPacketTest { ...
建立连接会话   建立连接会话请求响应没有头部     建立连接会话请求 class ConnectRequest {         int protocolVersion;         long lastZxidSeen;         int timeOut;         long sessionId;         buffer passwd; }     建立连接会话响应 class ConnectResponse {         int protocolVersion;         int timeOut;         ...
一个最简单的例子 基于hessian进行rpc调用(http方式)   先定义一个接口: public interface TestService {     public void test(String name); }   实现这个接口: public class TestServiceImpl implements TestService {     @Override     public void test(String name) {         System.out.println("test:" + name);     } ...
基于hessian协议调用java方法-一个map例子   map map ::= M t b16 b8 type-string (object, object)* z   Map类型,同时支持对象Object。 type描述map类型,可为空 如果是对象,type表示类全名     先定义一个接口:     public interface TestService {   public void testMap(Map<String, Object> map);   }   实现这个接口:   public class TestServ ...
一个最简单的例子 基于hessian协议调用java方法 先定义一个接口: public interface TestService {     public void test(String name); }   实现这个接口: public class TestServiceImpl implements TestService {     @Override     public void test(String name) {         System.out.println("test:" + name);     } }   ...
过半: Paxos's quorum Kafka's ISR
GOSSIP PROTOCOL(又被称为反熵"Anti-Entropy", 一种弱一致性, 同步信息交换通信的协议)   1、它是一种最终一致性算法 2、它是弱一致性的   1、https://www.consul.io/docs/internals/gossip.html 2、https://en.wikipedia.org/wiki/Gossip_protocol
Tardis (A new memory coherence protocol,一种新的缓存一致性协议)   目录   Abstract—A new memory coherence protocol, Tardis, is proposed. Tardis uses timestamp counters representing logical time as well as physical time to order memory operations and enforce sequential consistency in any type of shared memory syste ...
Zab (ZooKeeper Atomic Broadcast) (ZooKeeper原子广播协议,一种分布式一致性协议)   目录   Zab(ZooKeeper原子广播协议,一种分布式一致性协议), ZooKeeper用它来传播扩展由ZooKeeper领导者(leader)引发的状态变更。 Zab实现了一个简单的全序广播协议(A simple totally ordered broadcast protocol,一种分布式一致性协议) A simple totally ordered broadcast protocol,一种分布式一致性协议可参考文档http://diyhpl.us/~br ...
1、 DOD STANDARD TRANSMISSION CONTROL PROTOCOL,https://www.rfc-editor.org/rfc/rfc761.txt 2、 TRANSMISSION CONTROL PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION,https://www.rfc-editor.org/rfc/rfc793.txt 3、 Requirements for Internet Hosts -- Communication Layers,https://www.rfc-editor.org/rfc/rf ...
MSI (缓存一致性协议)     目录     在多处理器系统中,MSI(Modified-Shared-Invalid)是一个最基本的缓存一致性协议。缓存中的每一个块(block)包括3中状态:Modified(M,已修改)、S

SSL

SSL The Secure Sockets Layer (SSL) Protocol   目录 1 介绍 4 2 术语 4 3 文档术语 4 4 表述语言 4 4.1 基本快大小 4 4.2 Miscellaneous 4 4.3 向量 5 4.4 数值 5 4.5 枚举 6 4.6 构造类型 6 4.6.1 变体 6 4.7 加密属性 7 4.8 常量 7 5 SSL协议 7 5.1 会话/连接状态 8 5.2 记录层 9 5.2.1 分段 9 5.2.2 记录压缩及解压 9 5.2.3 记录有效载荷保护及加密规范 9 5.2.3.1 Null或标准流加密 10 5.2.3.2 CBC块加密 ...
HttpInputStream   public class HttpInputStream extends InputStream {   private InputStream inputStream;   public HttpInputStream(InputStream inputStream) { this.inputStream = inputStream; }   @Override public int read() throws IOException { return inputStream.read(); }   public int r ...
Global site tag (gtag.js) - Google Analytics