1461170392-6e34cae2-64d4-492e-ad4f-b97af182dde3

1. A method for connecting a client device to a virtual private network via a server on an Internet network via an Internet connection system, wherein said Internet connection system comprising said client device, a relay device connected to said client device in a private network, and said server connected to the Internet network, said server also connected with said client device through the Internet network and said relay device, comprising the steps of:
(a) notifying said relay device of an IP address of said server;
(b) establishing a TCPIP session through a tunneling connection between said relay device and said server using the notified IP address; and
(c) based on information received from said relay device or said client device via the Internet, grouping a plurality of relay devices in different private networks or client devices connected to said plurality of relay devices, for each of said relay devices a tunneling connection with said server is individually established, wherein said plurality of relay devices or client devices are considered to be connected to one virtual private network, said grouping being carried out by said server,
the grouping in the step (c) further comprises:
assigning by said server a specific virtual server within the server to said client device;
routing communications by said virtual server between said client device and other client devices which belong to the same virtual private network;
determining by said server a model of the client device based on an IP address assigned to the client device; and
determining by said server based on this model the virtual private network to which said client device belongs.
2. The method of claim 1, wherein:
each of said relay devices is installed in a respective client device.
3. The method of claim 1, wherein:
in said step (a), said relay device connects to a tunneling mediation server provided on the Internet, and receives the IP address of said server from said tunneling mediation server.
4. The method of claim 1, wherein:
said step (b) includes the steps of:
(b-1) connecting to said server by said relay device using the notified IP address of said server; (b-2) notifying said relay device of an IP address assigned for said relay device for establishing a TCPIP session with tunneling; and
(b-3) establishing a TCPIP session with tunneling between said server and said relay device.
5. The method of claim 4, wherein:
in said step (b-2), said server notifies said relay device of the IP address of said relay device for establishing a TCPIP session with tunneling.
6. The method of claim 4, wherein:
said step (b) further includes the step of:
(b-4) generating a MAC address for said relay device and notifying said relay device of said MAC address by said server.
7. The method of claim 4, wherein:
said step (b-1) includes the step of performing connection authentication for said relay device by said server; and
said step (b-2) includes the step of assigning an IP address for said relay device depending on a result of said connection authentication.
8. The method of claim 7, wherein:
said step (b-2) further includes the step of assigning a MAC address for said relay device depending on a result of said connection authentication.
9. The method of claim 7, wherein:
the grouping of said step (c) is performed based on the connection authentication of said step (b-1).
10. The method of claim 4, wherein:
in said step (a), said relay device connects to a tunneling mediation server provided on the Internet, and receives the IP address of said server from said tunneling mediation server; and
in said step (b-2), said tunneling mediation server notifies said relay device of the IP address of said relay device for establishing a TCPIP session with tunneling.
11. The method of claim 10, wherein:
said step (b) further includes the step of:
(b-4) generating the MAC address for said relay device and notifying said relay device of said MAC address by said tunneling mediation server.
12. The method of claim 1, wherein:
the grouping of said step (c) is performed based on an IP address of said relay device or said client device assigned by said server.
13. A server located on the Internet used by an Internet connection system,
wherein said Internet connection system comprises said server, a client device and a relay device connected to said client device within a private network, and said server connects with said client device through the Internet and said relay device,
said server comprising:
a tunneling establishing section for establishing tunneling connections with a plurality of said relay devices located in difference private networks; and
a terminal group management section configured to create a virtual private network group with the plurality of relay devices or client devices connected with this server by tunneling, based on information received from said client device or said relay device via the Internet,
wherein said server assigns a specific virtual server within the server to said client device;
wherein said virtual server routes communications between said client device and other client devices which belong to the same virtual private network;
wherein said server determines a model of the client device based on an IP address assigned to the client device; and
wherein said server determines based on this model the virtual private network to which said client device belongs.
14. The server of claim 13, further comprising:
a model identification section for determining if said client device andor said relay device areis of predetermined models,
wherein said terminal group management section manages the result from said model identification section in association with said client device.
15. The server of claim 14, further comprising:
a command conversion section for converting a command to be sent to said client device to a command in a predetermined format for controlling said client device based on a model determined by said model identification section.
16. The server of claim 13, further comprising:
a protocol identification section for determining a protocol for controlling said client device,
wherein said terminal group management section builds a network group to which client devices belong, said client devices utilizing a same protocol, based on the result from said protocol identification section.
17. The server of claim 13, wherein:
said terminal group management section manages a plurality of virtual private network group, and selects a group to which said client device or said relay device should belong based on information from said client device or said relay device.
18. The server of claim 13, wherein:
said client device includes a peripheral device, said peripheral device communicable with said relay device but unable to connect to the Internet by itself.
19. The server of claim 13, further comprising:
a state information obtaining section for obtaining at least one of, or a plurality of: an operation state, a usage state and location information of said client device andor said relay device.
20. The server of claim 13, further comprising: an address management section for assigning an IP address on a virtual private network to said client device andor said relay device.
21. The server of claim 20, wherein:
said address management section assigns a unique MAC address to said client device andor said relay device for connecting via said virtual private network.
22. An Internet connection system comprising:
a server located on the Internet and a plurality of network-enabled home appliances, each comprising a relay device adapted to receive an IP address of the server, said network-enabled home appliances, said relay device and said server connected to the Internet, said server also connected with said network-enabled home appliances through said relay device and the Internet, wherein, the server comprises:
a tunneling establishing section for establishing a tunneling connection with a network enabled home appliance;
a model identification section for determining a model of the network enabled home appliance based on an IP address assigned to the network enabled home appliance, wherein the server is adapted to determine based on this model a virtual private network group to which the network enabled home appliance belongs; and the server is adapted to assign a specific virtual server within the server to the network enabled home appliance, the virtual server routing communications between the network enabled home appliance and other network enabled home appliances, for each of which a tunneling connection with the server is established and which belong to the same virtual private network group; and
each of the plurality of network-enabled home appliances comprises:
a control section for receiving a packet, said packet including a predetermined command, and controlling said network home appliance based on said command;
a server address storage section for storing a global IP address of the server;
a tunneling establishing section for establishing a tunneling TCP session between the relay device of each network-enabled home appliance and the server based on the global IP address of the server;
a group information storage section for receiving from said server an assigned terminal group to which the network enabled home appliance belongs and information of other network home appliances belonging to the same virtual private network group, and storing the information; and
a packet processing device for capsulatingdecapsulating packets, said packets communicated with the server through said tunneling connection, and routing the packet including the predetermined command to the control section or routing packets destined to the other network home appliances to the server.
23. The Internet connection system of claim 22, wherein each of the plurality of network-enabled home appliances further comprises:
a relay device address storage section for making an authenticated connection with said server before said tunneling establishing section establishes the tunneling connection, receiving from said server an IP address on virtual private network based on the authenticated connection, and storing the IP address.
24. The Internet connection system of claim 22, wherein each of the plurality of network-enabled home appliances further comprises:
a relay device address storage section for making an authenticated connection with said server before said tunneling establishing section establishes the tunneling connection, receiving from said server an MAC address on virtual private network based on the authenticated connection, and storing the MAC address.
25. The Internet connection system of claim 22, wherein each of the plurality of network-enabled home appliances further comprises an address generation section for rewriting a MAC address of a virtual network device in an address requestresponse packet to the MAC address received from said server when receiving from said server the information of other network home appliances belonging to the same virtual private network group.
26. The Internet connection system of claim 22, wherein each of the plurality of network-enabled home appliances further comprises:
a mediation server address storage section for storing an address of a tunneling mediation server located on the Internet; and
a server address obtaining section for accessing said mediation server based on the mediation server address, and receiving said global address of said server from said mediation server.
27. A client device, comprising:
a server address storage section that stores a global address of a server located on the Internet;
a tunneling establishing section that establishes a TCPIP session through a tunneling connection between said client device and said server based on the global address of the server;
a group information storage section that receives and stores an assignment of a virtual private network group from said server and information of other client devices located in different private networks that are separated by the Internet and belonging to the same virtual private network group;
a control section that receives a packet, said packet including a command in a predetermined format, and controlling said client device based on said command,
wherein said client device communicates to said other client devices via a virtual server that is located within said server, said client device and said other client devices belonging to the same virtual private network group,
wherein said server determines a model of the client device based on an IP address assigned to said client device, and
wherein said server determines based on this model the virtual private network group to which said client device belongs; and

a packet processing device that capsulatesdecapsulates packets, said packets communicated with said server through said tunneling connection, and routing said packets to said control section or to said other client devices in said virtual private network group based on the information in the group information storage section, wherein said command routed to and received at said control section originated from one of said other client devices.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A method of garbage collection during execution of code on a machine, comprising:
declaring at least one reference as pinned based on an unsafe condition;
receiving a request for a garbage collection service;
identifying references and pinned references in a process stack;
tracing a memory heap employing the references and pinned references to determine inaccessible memory objects;
removing the inaccessible memory objects from the heap; and
relocating objects in the heap except for objects referenced by pinned references.
2. The method of claim 1, the pinned references being local variables referencing managed code during an executing call of unmanaged code.
3. The method of claim 1, the execution of code comprising executing both managed and unmanaged code.
4. The method of claim 1, the references and pinned references including interior references and the memory heap being segmented into a plurality of blocks wherein the garbage collection service traces interior references by scanning through the blocks until the block with the object containing the interior reference is found.
5. The method of claim 4, further comprising adding objects found accessible during the tracing of the memory heap to a graph.
6. The method of claim 1, wherein removing the inaccessible memory objects from the heap comprises shifting non-garbage objects down in the memory heap to eliminate inaccessible segments and modifying the references to refer to the new locations of the objects in the memory heap, while holding fixed in memory non-garbage objects referenced by pinned references.
7. A system for garbage collecting during execution of code on a machine, comprising:
means for declaring references as pinned in response to an unsafe condition;
means for storing the pinned references on a process stack;
means for identifying object references and pinned references in the process stack; and
means for performing a garbage collection, such that objects referenced by pinned references remained in a fixed location in a heap.
8. The system of claim 7, further comprising means for compiling both managed and unmanaged code in real-time and means for storing object references in the process stack and means for storing objects in the memory heap.
9. A system that facilitates garbage collection during execution of a code on a machine, comprising:
a labeling component that selectively labels an object reference as pinned, the object reference references an object in a memory heap; and
a garbage collection algorithm that analyzes the object and the object reference and alters location of data within the memory heap while maintaining location of the object within the memory heap based at least in part upon the analysis.
10. The system of claim 9, the object is a managed object called by unmanaged code.
11. The system of claim 9, the object reference labeled as pinned based at least in part upon an indication written into source code.
12. The system of claim 9, the object reference selectively labeled as pinned upon a request for utilization of the garbage collection algorithm.
13. The system of claim 9, further comprising a plurality of objects, each of the plurality of objects is characterized as one of managed and unmanaged objects, wherein object references corresponding to the plurality of objects are selectively pinned based at least in part upon the characterization.
14. The system of claim 13, the garbage collection algorithm reclaims at least a portion of the memory heap based at least in part upon the characterization.
15. The system of claim 13, the garbage collection algorithm reclaims at least a portion of the memory heap based at least in part upon an analysis of the pinned object references.
16. The system of claim 9, further comprising a compiler that receives unmanaged code, the unmanaged calls the object.
17. The system of claim 16, the compiler is a just-in-time compiler that compiles the unmanaged code in real-time.
18. The system of claim 17, the unmanaged code precompiled into an intermediate language code prior to being delivered to the just-in-time compiler.
19. The system of claim 17, the just-in-time compiler comprises a compiler that compiles managed code and a compiler that compiles unmanaged code.
20. The system of claim 16, the compiler labels an object reference as pinned given an unsafe condition.
21. The system of claim 9, the labeling component labels an interior pointer as pinned, the interior pointer references a location of a data member.
22. The system of claim 21, the garbage collection algorithm analyzes the interior pointer and maintains location of the data member based at least in part upon the analysis.
23. The system of claim 9, further comprising a plurality of object references that reference a plurality of objects in the memory heap, the garbage collection algorithm automatically alters location of one of the objects in the memory heap and adjusts an object reference that corresponds to the object to enable the object reference to point to the object at its altered location within the memory heap.
24. A method for garbage collection during execution of code on a machine, comprising:
determining whether objects called by the code are managed;
pinning object references that correspond to objects that are determined to be managed, wherein an;
receiving a request for garbage collection services; and
allocating memory within a memory heap to the code based at least in part upon the garbage collection services and the pinned object references, wherein objects corresponding to pinned references are not moved in memory during the allocating.
25. The method of claim 24, further comprising:
generating a graph of objects that are called by the code; and
allocating memory within the memory heap to the code based at least in part upon the generated graph.
26. The method of claim 24, further comprising compiling the code in real time.
27. The method of claim 24, further comprising pinning local variables based upon pre-defined criteria to prevent an unsafe condition from occurring.
28. The method of claim 24, further comprising labeling an object reference as pinned within the code.