Dedicated servers and "handoff" [message #639988] |
Tue, 21 July 2015 03:05 |
John Watson
Messages: 8960 Registered: January 2010 Location: Global Village
|
Senior Member |
|
|
I need to explain some SQL*Net concepts, and I'm not clear on some of the TCP detail. When a listener launches a server process, the process is given a unique port number assigned by the operating system's port mapper. You can see it in the listener log. In the old days, that port was passed back to the client which would then establish a connection to it. Easy, except that it caused problems with firewalls.
However, for many years now, SQL*Net has used the "handoff" mechanism instead, and this is what I'm trying to understand. Is there a redirection to the server process's port? Or does the server make a call out to the client? Or is all traffic from all clients going through the original port used by the listener, and distributed to the server processes from there?
I've been gooogling terms like socket, port, and handoff but I can't get it straight. Networking was never my strong point - any insight will be most welcome.
|
|
|
Re: Dedicated servers and "handoff" [message #640020 is a reply to message #639988] |
Tue, 21 July 2015 07:29 |
|
BlackSwan
Messages: 26766 Registered: January 2009 Location: SoCal
|
Senior Member |
|
|
The listener causes a new session to be launched in the database & listener passes to this process the IP# & port# the client used.
This allows the new session to send a packet back to the client to original IP# & port# which includes the new port# the client needs to use to continue packet exchange with DB.
*fixed typo since I am still on my first cup of tea this morning
[Updated on: Tue, 21 July 2015 07:51] Report message to a moderator
|
|
|
Re: Dedicated servers and "handoff" [message #640055 is a reply to message #640020] |
Tue, 21 July 2015 09:56 |
John Watson
Messages: 8960 Registered: January 2010 Location: Global Village
|
Senior Member |
|
|
OK, thankyou for replying. That makes sense to me.
So, a "handoff" means that the server process is launched, and makes an out-going call back to the user process. Then the session can continue with the user process talking directly to the server process, on whatever high-order port the server process is listening on. Cool. This explains why in the modern world SQL*Net works though firewalls even though only 1521 has been opened. Your firewall would of course block any attempt from the outdside to initiate a connection to a random port on the inside, but if the request is from inside then the firewall will permit it.
Hope I've got that straight.
|
|
|
|
|
|
|