Nattraversal

From EMule Wiki
(Difference between revisions)
Jump to: navigation, search
 
Line 22: Line 22:
 
Developed by David Xanatos, [[Neomule]].  
 
Developed by David Xanatos, [[Neomule]].  
  
[[Category:Features]][[Category:NeoMule Features]]
+
[[Category:Features]][[Category:NeoMule features]]

Latest revision as of 21:14, 6 May 2010

nat traversal Makes LowID to LowID connections possible in by creating a UDP tunnel.

Nat-traverse-net.gif

The basic tunneling procedure is:

Requester(A)      Kad/Svr/Xs         Target(B)
ReqCallback    -->           -->     A's IpPort
[droped]      <----------------      SendPing
B's IpPort    <--           <--      ReqCallback*
SendPing       ---------------->     
              <----------------      SendPong
UmTCP Sync    ..................

* The remote callback is needed in order to tell the requester the actual UDP port of the target client. It is not always the case that the ping from B is dropped on FullConeNats it can pass through, there for the remote callback is delayed by a few seconds to see if A answers with a Ping.

After the tunnel is made the 2 clients starts an streaming connection similar to TCP but self made.
The So called "User Mode TCP" can almost everything the normal TCP can, it handles missing or duplicated packets, as well as packets arriving out of order. It have full TCP congestion control implemented. All this assures a fast and reliable streaming connection.


Developed by David Xanatos, Neomule.

Personal tools