RFC 3089 (rfc3089) - Page 2 of 12
A SOCKS-based IPv6/IPv4 Gateway Mechanism
Alternative Format: Original Text Document
RFC 3089 SOCKS-based IPv6/IPv4 Gateway Mechanism April 2001
2. Basic SOCKS-based Gateway Mechanism
Figure 1 shows the basic SOCKS-based gateway mechanism.
Client C Gateway G Destination D
+-----------+ (Server)
|Application|
+-->+===========+ +-------------+ +-----------+
same-+ |*SOCKS Lib*| | *Gateway* | |Application|
API +-->+===========+ +=====---=====+ +-----------+
| Socket DNS| | Socket DNS | | Socket DNS|
+-----------+ +-------------+ +-----------+
| [ IPv X ] | |[IPvX]|(IPvY)| | ( IPv Y ) |
+-----------+ +-------------+ +-----------+
|Network I/F| | Network I/F | |Network I/F|
+-----+-----+ +---+-----+---+ +-----+-----+
| | | |
+============+ +------------+
socksified normal
connection connection
(ctrl)+data data only
Fig. 1 Basic SOCKS-based Gateway Mechanism
In this figure, the Client C initiates the communication to the
Destination D. Two new functional blocks are introduced and they
compose the mechanism.
One, *Socks Lib*, is introduced into the client side (Client C) (this
procedure is called "socksifying"). The *Socks Lib* is located
between the application layer and the socket layer, and can replace
applications' socket APIs and DNS name resolving APIs (e.g.,
gethostbyname(), getaddrinfo() etc.). There is a mapping table in it
for a "DNS name resolving delegation" feature (described below).
Each socksified application has its own *Socks Lib*.
The other, *Gateway*, is installed on the IPv6 and IPv4 dual stack
node (Gateway G). It is an enhanced SOCKS server that enables any
types of protocol combination relays between Client C (IPvX) and
Destination D (IPvY). When the *Socks Lib* invokes a relay, one
corresponding *Gateway* process (thread) is spawned from the parent
*Gateway* to take charge of the relay connection.
The following four types of combinations of IPvX and IPvY are
possible in the mechanism.
Kitamura Informational