WEB开发网
开发学院软件开发Java tcp connection setup的实现(一) 阅读

tcp connection setup的实现(一)

 2009-09-10 00:00:00 来源:WEB开发网   
核心提示:先来介绍几个地址结构. struct sockaddr 其实相当于一个基类的地址结构,其他的结构都能够直接转到sockaddr.举个例子比如当sa_family为PF_INET时,sa_data就包含了端口号和ip地址(in_addr结构). Java代码 structsockaddr{sa_family_tsa_fa

先来介绍几个地址结构.

struct sockaddr 其实相当于一个基类的地址结构,其他的结构都能够直接转到sockaddr.举个例子比如当sa_family为PF_INET时,sa_data就包含了端口号和ip地址(in_addr结构).

Java代码

struct sockaddr { 
 sa_family_t sa_family; /* address family, AF_xxx */ 
 char sa_data[14]; /* 14 bytes of protocol address */ 
}; 

接下来就是sockaddr_in ,它表示了所有的ipv4的地址结构.可以看到他也就相当于sockaddr 的一个子类.

Java代码

struct sockaddr_in { 
 sa_family_t sin_family; /* Address family */ 
 __be16 sin_port; /* Port number  */ 
 struct in_addr sin_addr; /* Internet address */ 
 /* Pad to size of `struct sockaddr'. */ 
 unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) - 
  sizeof(unsigned short int) - sizeof(struct in_addr)]; 
};

这里还有一个内核比较新的地质结构sockaddr_storage,他可以容纳所有类型的套接口结构,比如ipv4,ipv6..可以看到它是强制对齐的,相比于sockaddr.

Java代码

struct __kernel_sockaddr_storage { 
 unsigned short ss_family; /* address family */ 
///每个协议实现自己的地址结构. 
 char __data[_K_SS_MAXSIZE - sizeof(unsigned short)]; 
  /* space to achieve desired size, */ 
  /* _SS_MAXSIZE value minus size of ss_family */ 
} __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */

1 2 3 4 5 6  下一页

Tags:tcp connection setup

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接