星期三, 十月 28, 2009

网络地址类型一览

URL: http://publib.boulder.ibm.com/infocenter/zvm/v5r4/topic/com.ibm.zvm.v54.kijl0/hcsk7b3014.htm

The type of a IPv6 address is identified by the high-order bits of the address, as follows:

Table 2. Types of IPv6 Addresses
Address type Binary prefix IPv6 notation
Unspecified 00 . . . 0 (128 bits) ::/128
Loopback 00 . . . 1 (128 bits) ::1/128
Multicast 11111111 FF00::/8
Link-local unicast 1111111010 FE80::/10
Site-local unicast 1111111011 FEC0::/10
Global unicast (everything else)

Three categories of IP addresses are supported in IPv6:

Unicast
An identifier for a single interface. A packet sent to a unicast address is delivered to the interface identified by that address. It can be link-local scope, site-local scope, or global scope.
Multicast
An identifier for a group of interfaces (typically belonging to different nodes). A packet sent to a multicast address is delivered to all interfaces identified by that address.
Anycast
An identifier for a group of interfaces (typically belonging to different nodes). A packet sent to an anycast address is delivered to the closest member of a group, according to the routing protocols' measure of distance.

Anycast addresses are taken from the unicast address spaces (of any scope) and are not syntactically distinguishable from unicast addresses. Anycast is described as a cross between unicast and multicast. Like multicast, multiple nodes may be listening on an anycast address. Like unicast, a packet sent to an anycast address will be delivered to one (and only one) of those nodes. The exact node to which it is delivered is based on the IP routing tables in the network.

There are no broadcast addresses in IPv6. Multicast addresses have superseded this function.

Unicast IPv6 Addresses

IPv6 unicast addresses can be aggregated with prefixes of arbitrary bit-length similar to IPv4 addresses under Classless Interdomain Routing (CIDR).

A unicast address has the following format:

Figure 8. Unicast Address Format
n bits 128-n bits
network prefix interface ID

There are several types of unicast addresses in IPv6: global unicast, site-local unicast, and link-local unicast. There are also some special-purpose subtypes of global unicast, such as IPv6 addresses with embedded IPv4 addresses. Additional address types or subtypes can be defined in the future.

Global Unicast Addresses

The general format for IPv6 global unicast addresses is:

Figure 9. Global Unicast Address Format
n bits m bits 128-n-m bits
global routing prefix subnet ID interface ID

The global routing prefix is a (typically hierarchically-structured) value assigned to a site (a cluster of subnets/links). The subnet ID is an identifier of a link within the site. The interface ID is used to identify an interface on a link; interface IDs are required to be unique within a subnet prefix.

All global unicast addresses other than those that start with B'000' have a 64-bit interface ID field (that is, n + m = 64). Global unicast addresses that start with B'000' have no such constraint on the size or structure of the interface ID field.

Examples of global unicast addresses that start with B'000' are IPv6 address with embedded IPv4 addresses. These include IPv4-mapped IPv6 addresses and IPv4-compatible IPv6 addresses.

Local Use Address

There are two types of local-use unicast addresses defined: link-local and site-local. The link-local address is for use on a single link and the site-local address is for use in a single site.

Link-local Addresses

Link-local addresses have the following format:

Figure 10. Link-local address format
10 bits 54 bits 64 bits
1111111010 0 interface ID

A link-local address is required on each physical interface. Link-local addresses are designed to be used for addressing on a single link for purposes such as automatic address configuration, neighbor discovery, or in the absence of routers. It also may be used to communicate with other nodes on the same link. A link-local address is automatically assigned.

Routers will not forward any packets with link-local source or destination addresses to other links.

Site-local Addresses

Site-local addresses have the following format:

Figure 12. Site-local address format
10 bits 38 bits 16 bits 64 bits
1111111011 0 subnet ID interface ID

Site-local addresses are designed to be used for addressing inside of a site without the need for a global prefix. A site-local address cannot be reached from another site. A site-local address is not automatically assigned to a node. It must be assigned using automatic or manual configuration.

Routers will not forward any packets with site-local source or destination addresses outside of the site.

Loopback Address

The unicast address 0:0:0:0:0:0:0:1 is called the loopback address. It cannot be assigned to any physical interface. It may be thought of as a link-local unicast address assigned to a virtual interface (typically called the loopback interface) that allows local applications to send messages to each other.

The loopback address cannot be used as the source address in IPv6 packets that are sent outside of a node. An IPv6 packet with a destination address of loopback cannot be sent outside of a node and be forwarded by an IPv6 router. A packet received on an interface with destination address of loopback will be dropped.

Unspecified Address

The address 0:0:0:0:0:0:0:0 is called the unspecified address. It will not be assigned to any node. It indicates the absence of an address. One example of its use is in the Source Address field of any IPv6 packets sent by an initializing host before it has learned its own address.

The unspecified address cannot be used as the destination address of IPv6 packets or in IPv6 routing headers. An IPv6 packet with a source address of unspecified cannot be forwarded by an IPv6 router.

IPv4-mapped IPv6 Addresses

These addresses hold an embedded global IPv4 address. They are used to represent the addresses of IPv4 nodes as IPv6 addresses to applications that are enabled for IPv6 and are using AF_INET6 sockets. This allows IPv6 enabled applications always to deal with IP addresses in IPv6 format regardless of whether the TCP/IP communications are occurring over IPv4 or IPv6 networks. The dual-mode TCP/IP stack performs the transformation of the IPv4-mapped addresses to and from native IPv4 format. IPv4-mapped addresses have the following format:

Figure 14. IPv4-mapped IPv6 address
80 bits 16 32 bits
0000...0000 FFFF IPv4 address

Examples:

  • In IPv6-IPv4 decimal form:
    ::FFFF:129.144.52.38
  • In IPv6-compressed form
    ::FFFF:8190:3426
IPv4-compatible IPv6 Addresses

These addresses hold an embedded global IPv4 address. They are used dynamically to tunnel IPv6 packets over IPv4 networks. IPv6 nodes that use this technique are assigned special IPv6 unicast addresses which hold an IPv4 address in the low-order 32-bits. IPv4-compatible IPv6 addresses have the following format:

Figure 15. IPv4-compatible IPv6 address
80 bits 16 32 bits
0000...0000 0000 IPv4 address

Examples:

  • In IPv6-IPv4 decimal form
    ::129.144.52.38
  • In IPv6-compressed form
    ::8190:3426
Multicast IPv6 Addresses

An IPv6 multicast address is an identifier for a group of interfaces (typically on different nodes). It is identified with a prefix of 11111111 or FF in hexadecimal notation. It provides a way of sending packets to multiple destinations. An interface may belong to any number of multicast groups.

Multicast address format

Binary 11111111 at the start of the address identifies the address as being a multicast address. Multicast addresses have the following format:

Figure 16. Multicast address format
8 4 4 112 bits
11111111 flags scope group ID
Figure 17. Flags in multicast address
 ---------------
| 0 | 0 | 0 | T |

---------------
  • The 3 high-order flags are reserved, and must be initialized to 0.
  • T = 0 indicates a permanently-assigned (well-known) multicast address, assigned by the Internet Assigned Number Authority (IANA).
  • T = 1 indicates a non-permanently assigned (transient) multicast address.

Scope is a 4-bit multicast scope value used to limit the scope of the multicast group. Group ID identifies the multicast group, either permanent or transient, within the given scope.

Multicast scope

The scope field indicates the scope of the IPv6 internetwork for which the multicast traffic is intended. The size of this field is 4 bits. In addition to information provided by multicast routing protocols, routers use multicast scope to determine whether multicast traffic can be forwarded. For multicast addresses there are 14 possible scopes (some are still unassigned), ranging from interface-local to global (including both link-local and site-local).

The following table lists the defined values for the scope field:

Table 3. Multicast scope field values
Value Scope
0 Reserved
1 Interface-local scope (same node)
2 Link-local scope (same link)
3 Subnet-local scope
4 Admin-local scope
5 Site-local scope (same site)
8 Organization-local scope
E Global scope
F Reserved
All other scope field values are currently undefined.

For example, traffic with the multicast address of FF02::2 has a link-local scope. An IPv6 router never forwards this type of traffic beyond the local link.

Interface-local
The interface-local scope spans a single interface only. A multicast address of interface-local scope is useful only for loopback delivery of multicasts within a node, for example, as a form of interprocess communication within a computer. Unlike the unicast loopback address, interface-local multicast addresses may be joined on any interface.
Link-local
Link-local addresses are used by nodes when communicating with neighboring nodes on the same link. The scope of the link-local address is the local link.
Subnet-local
Subnet-local scope is given a different and larger value than link-local to enable possible support for subnets that span multiple links.
Admin-local
Admin-local scope is the smallest scope that must be administratively configured, that is, not automatically derived from physical connectivity or other, non-multicast-related configuration.
Site-local
The scope of a site-local address is the site or organization internetwork. Addresses must remain within their scope. A router must not forward packets outside of its scope.
Organization-local
This scope is intended to span multiple sites belonging to a single organization.
Global
Global scope is used for uniquely identifying interfaces anywhere in the Internet.
Multicast groups

Group ID identifies the multicast group, either permanent or transient, within the given scope. The size of this field is 112 bits. Permanently assigned groups can use the group ID with any scope value and still refer to the same group. Transient assigned groups can use the group ID in different scopes to refer to different groups. Multicast addresses from FF01:: through FF0F:: are reserved, well-known addresses. Use of these group IDs for any other scope values, with the T flag equal to 0, is not allowed.

All-nodes multicast groups

These groups identify all IPv6 nodes within a given scope. Defined groups include:

  • Interface-local all-nodes group (FF01::1)
  • Link-local all-nodes group (FF02::1)
All-routers multicast groups

These groups identify all IPv6 routers within a given scope. Defined groups include:

  • Interface-local all-routers group (FF01::2)
  • Link-local all-routers group (FF02::2)
  • Site-local all-routers group (FF05::2)
Solicited-node multicast group

For each unicast address which is assigned to an interface, the associated solicited-node multicast group is joined on that interface. The solicited-node multicast address facilitates the efficient querying of network nodes during address resolution.

Anycast IPv6 Addresses

An IPv6 anycast address is an identifier for a set of interfaces (typically belonging to different nodes). A packet sent to an anycast address is delivered to one of the interfaces identified by that address (the nearest interface), according to the routing protocols' measure of distance. It uses the same formats as a unicast address, so one cannot differentiate between a unicast and an anycast address simply by examining the address. Instead, anycast addresses are defined administratively.

For more information about IPv6 addressing, see RFC 3513, Internet Protocol Version 6 (IPv6) Addressing Architecture.

Java中如何得到网卡的IP地址而不是127.0.0.1

tip:最后发现,如果是web程序可以通过,javax.servlet.http .HttpServletRequest里的:getServerName()可以用来得到外部IP,很奇怪。getLocalAddr().getHostAddress()的结果不同.


String ipaddress="";
java.util.Enumeration interfaces = java.net.NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements())
{
java.net.NetworkInterface card = (java.net.NetworkInterface) interfaces.nextElement();
java.util.Enumeration addresses = card.getInetAddresses();
if (addresses == null)
continue;

while (addresses.hasMoreElements())
{
java.net.InetAddress address = (java.net.InetAddress) addresses.nextElement();
if(!address.isLoopbackAddress())//skip 127.0.0.1 address
{
if(address.isSiteLocalAddress())//yes,it,not NIC link address
{
ipaddress=address.getHostAddress();
break;
}
}
}
}

星期日, 十月 25, 2009

wxButton 如何捕获Enter回车事件

动态事件connect 需要使用wxEVT_COMMAND_BUTTON_CLICKED事件,而不是wxEVT_KEY_DOWN

wxButton *toclip = new wxButton(books,ID_BUTTON_TO_CLIP, wxT("复制剪贴板"), wxPoint(x,y));
toclip ->Connect(wxEVT_COMMAND_BUTTON_CLICKED ,wxCommandEventHandler(GlobalEvtHandler::OnPagingHandler));

星期三, 十月 21, 2009

get jboss tomcat http server config port and SSL etc

通过MBean jmx的方式来发现系统配置是个比较好的program思路
发现Mbean的几个方法如下:
那个可以工作要看不同的jboss 版本。第一个一般是可以的

1.MBeanServer server = (MBeanServer) MBeanServerFactory.findMBeanServer(null).get(0);
2.MBeanServer server = org.jboss.mx.util.MBeanServerLocator.locateJBoss();

InitialContext ctx = new InitialContext(table); // From table

MBeanServerConnection server = (MBeanServerConnection) ctx.lookup("jmx/invoker/HttpAdaptor");

System.out.println("Version = "
+ (String)server.getAttribute(new ObjectName("jboss.system:type=Server"), new String("Version")));


JBOSS 允许SSL及配置的数字签名文件
早server.xml或tomcat config.xml文件中加入两个属性
keystoreFile="${user.home}/.keystore" keystorePass="changeit"

然后到.keystore指定的目录下运行如下命令:

%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA

跟随提示,密码同keystorePass属性指定的保持一致就可以了

all is ok.



星期三, 十月 14, 2009

wxWidgets 连续打开两个Dialog造成exception的原因

使用wxwidgets打开wxDialog出现一个奇怪的问题.

代码如下:
原因:
Destroy();造成了异常。
只需要最后一次打开Dialog的时候,调用Destroy()就可以了。
不知道为什么,很奇怪。

最后发现:这样解决了一场问题,但是,引用程序不会退出了,挂死了!!!!

经过再次的研究,在每次点ok按钮 退出Dialog的时候,要调用:EndModal(wxID_OK);
奇怪之极。要加入
dlg.EndModal(wxID_OK);
dlg2.EndModal(wxID_OK);



void test()
{
wxDialog dlg;
dlg.Create(NULL, wxNewId(), _T("Step 1"),
wxDefaultPosition, wxSize(500,300));
wxPanel* bgpanel=new wxPanel(&dlg, wxID_ANY, wxDefaultPosition, wxSize(dlg.GetSize().GetWidth(),dlg.GetSize().GetHeight()), wxTAB_TRAVERSAL|wxWANTS_CHARS, _T("Step 1"));
wxButton* ok = new wxButton(bgpanel,wxID_OK,_("ok"),wxPoint(bgpanel->GetSize().GetWidth()/2-50,bgpanel->GetSize().GetHeight()-60));

dlg.ShowModal();
dlg.Destroy();

wxDialog dlg2;
dlg2.Create(NULL, wxNewId(), _T("Step 2"),
wxDefaultPosition, wxSize(500,300));
wxPanel* bgpane2=new wxPanel(&dlg2, wxID_ANY, wxDefaultPosition, wxSize(dlg2.GetSize().GetWidth(),dlg2.GetSize().GetHeight()), wxTAB_TRAVERSAL|wxWANTS_CHARS, _T("step 1"));
wxButton* ok2 = new wxButton(bgpane2,wxID_OK,_("ok"),wxPoint(bgpane2->GetSize().GetWidth()/2-50,bgpane2->GetSize().GetHeight()-60));

dlg2.ShowModal();
dlg2.Destroy();
}