CINXE.COM
NAT and Firewall Traversal for Remote Data Recovery
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <meta http-equiv="content-language" content="en" /> <link rel="stylesheet" type="text/css" href="/includes/en/style.css" /> <link rel="shortcut icon" href="/images/rtt.ico" /> <link rel="icon" type="image/png" href="/images/rtt.png" sizes="64x64"> <meta name="keywords" content=""firewall, security software, free firewall, protect computer, stop intrusions, attacks, trojans, stop spyware, Software, system""> <meta name="Description" content="NAT and Firewall settings for corporate and customer networks used for remote data recovery"> <title>NAT and Firewall Traversal for Remote Data Recovery </title> <style type="text/css"> a:link.link1 {text-decoration: none; color:grey;} a:active.link1 { color:cyan; text-decoration: underline} a:visited.link1 { color:violette; text-decoration: none} a:hover.link1 { text-decoration: underline; color: blue} </style> <script type="text/javascript" charset="utf-8"> // Generic routines function strTrim(str) { return str.replace(/^\s+|\s+$/gm,''); } // Single element class manipulations function _nodeGetClassPos(Node,className) { if (!Node||!Node.className) return -1;if ((!className)||(className.length<=0)) return 0; for(var s=0;true;) { var p=Node.className.indexOf(className,s);if (p<0) return -1; s=p+className.length; if ((p>0)&&(Node.className.charCodeAt(p-1)>32)) continue; if ((s<Node.className.length)&&(Node.className.charCodeAt(s)>32)) continue; return p; } return -1; } function nodeHasClass(Node,className) { return (_nodeGetClassPos(Node,className)>=0); } function nodeAddClass(Node,className) { if ( (!Node) || (!className) || (className.length<=0) || (nodeHasClass(Node,className)) ) return false; if ( (Node.className) && (Node.className.length>0) ) Node.className+=" "; Node.className+=className; return true; } function nodeDelClass(Node,className) { if ( (!Node) || (!Node.className) || (!className) || (className.length<=0) ) return false; var pos=_nodeGetClassPos(Node,className);if (pos<0) return false; var pos2=pos+className.length; if ((pos>0)&&(Node.className.charCodeAt(pos-1)<=32)) {pos--;} else if ((pos2<Node.className.length)&&(Node.className.charCodeAt(pos2)<=32)) {pos2++;} Node.className = Node.className.slice(0,pos) + Node.className.slice(pos2); return true; } function nodeSwitchClass(Node,className) { if ((!Node)||(!className)) return; if (nodeHasClass(Node,className)) { nodeDelClass(Node,className); } else { nodeAddClass(Node,className); } } // Multiple elements class manipulations function nodesHasClass(Nodes,className) { for(var i=0;i<Nodes.length;i++) {if (nodeHasClass(Nodes[i],className)) return true;} return false; } function nodesAddClass(Nodes,className) { for(var i=0;i<Nodes.length;i++) {nodeAddClass(Nodes[i],className);} } function nodesDelClass(Nodes,className) { for(var i=0;i<Nodes.length;i++) {nodeDelClass(Nodes[i],className);} } // Supplement search functions function _findBuild(Selector) { var Search = {Elem:'',Class:'',Type:''}; if (typeof Selector === 'string') Search.Elem=Selector; var pos=Search.Elem.indexOf('[type=');if (pos>=0) { var pos2=Search.Elem.lastIndexOf(']'); if (pos2>pos) { Search.Type=Search.Elem.slice(pos+6,pos2-pos-6); Search.Elem=Search.Elem.slice(0,pos)+Search.Elem.slice(pos2+1); } } pos=Search.Elem.indexOf('.');if (pos>=0) { Search.Class=Search.Elem.slice(pos+1); Search.Elem=Search.Elem.slice(0,pos); } Search.Elem=Search.Elem.toUpperCase(); return Search; } function _findDoesNodeMatch(Search,Node) { if ((!Node)||(Node.nodeType!=1)) return false; var bMatch=true; if ( (Search.Elem!="") && ((!Node.tagName)||(Node.tagName!=Search.Elem)) ) {bMatch=false;} if ( (Search.Type!="") && ((!Node.type)||(Node.type!=Search.Elem)) ) {bMatch=false;} if ( (Search.Class!="") && (!nodeHasClass(Node,Search.Class)) ) {bMatch=false;} return bMatch; } // Search for nodes, Selector = 'element.class[type=typename]', each part can be omited, i.e. '.class' or 'element[type=typename]' for example function nodeFindChildren(Node,Selector) { // Search for matched children nodes, recursively var res = [];if (!Node) return res; var Search = (typeof Selector === 'object')?Selector:_findBuild(Selector); var Children = Node.childNodes; for(var i=0;i<Children.length;i++) { if (Children[i].nodeType!=1) continue; if (_findDoesNodeMatch(Search,Children[i])) {res.push(Children[i]);} res=res.concat(nodeFindChildren(Children[i],Search)); } return res; } function nodeFindDirectChildren(Node,Selector) { // Search for matched children nodes, only children of this node var res = [];if (!Node) return res; var Search = _findBuild(Selector); var Children = Node.childNodes; for(var i=0;i<Children.length;i++) { if (Children[i].nodeType!=1) continue; if (_findDoesNodeMatch(Search,Children[i])) {res.push(Children[i]);} } return res; } function nodeFindParent(Node,Selector) { // Search for first matched parent node if (!Node) return null; var Search = _findBuild(Selector); for(var Res=Node.parentNode;Res;Res=Res.parentNode) { if (_findDoesNodeMatch(Search,Res)) return Res; } return null; } // Check if Node have specified Child on any level function hasSpecifiedChild(Node,Child) { if (!Node) return false; var Children = Node.childNodes; for(var i=0;i<Children.length;i++) { if (Children[i].nodeType!=1) continue; if (Children[i] === Child) return true; if (hasSpecifiedChild(Children[i],Child)) return true; } return false; } </script><script type="text/javascript" charset="utf-8"> function onImgBigClose(Node) { if (Node) Node.parentNode.removeChild(Node); } function onImgBigShow(Node) { if (!Node) return; var strImgSrc=Node.getAttribute("big-src"); if (!strImgSrc) { strImgSrc=Node.getAttribute("src");if (!strImgSrc) return; if (nodeHasClass(Node,"big")) { var p=strImgSrc.lastIndexOf(".");if (p<=0) return; strImgSrc=strImgSrc.slice(0,p)+"_big"+strImgSrc.slice(p); } } var strImgAlt=Node.getAttribute("title"); if (!strImgAlt) {strImgAlt=Node.getAttribute("alt");} var ImgModal=document.createElement("div");if (!ImgModal) return; ImgModal.className="img-big-modal"; ImgModal.id="img-big-modal"; var ImgClose=document.createElement("span"); var ImgImg=document.createElement("img"); var ImgCaption=document.createElement("div"); if (!ImgClose || !ImgImg || !ImgCaption) return; ImgClose.innerHTML="×"; ImgClose.onclick = function(){onImgBigClose(this.parentNode);} ImgModal.appendChild(ImgClose); ImgImg.setAttribute("src",strImgSrc); ImgModal.appendChild(ImgImg); if (strImgAlt) {ImgCaption.innerText=strImgAlt;} ImgModal.appendChild(ImgCaption); if (ImgModal.addEventListener) { ImgModal.addEventListener('mouseup',function(e) { var Trg=e.target;if (!Trg) return; var ImgModal=document.getElementById('img-big-modal');if (!ImgModal) return; if (Trg === ImgModal) onImgBigClose(ImgModal); }); } var InsertBefore=Node.nextSibling; if (InsertBefore) {Node.parentNode.insertBefore(ImgModal,InsertBefore);} else {Node.parentNode.appendChild(ImgModal);} } function onImgBigShowInit() { var aImgBig = nodeFindChildren(document,'img.big'); aImgBig = aImgBig.concat(nodeFindChildren(document,'img.rsz')); for(var i=0;i<aImgBig.length;i++) {aImgBig[i].onclick = function(){onImgBigShow(this);};} if (document.addEventListener) { document.addEventListener('keyup',function(e) { if (e.keyCode != 27) return; onImgBigClose(document.getElementById('img-big-modal')); }); } } </script> </head> <body> <div id="root"> <div> <div style="overflow-x:hidden;"> <div id="hdr-wrapper" class="hdr-wrapper"> <div id="hdr-hdr" class="section hdr-hdr"> <div class="hdr-logo"> <a href="https://www.r-tt.com/" title="R-Tools Technology Inc."> <img src="/images/nav/rtt-logo.png" alt="R-Tools Technology Inc." width="225" height="85" /> </a> </div> <div class="hdr-search-container"> <form class="hdr-search-form" name="search_form" action="/scripts/search" method="post" onsubmit="return doSearch(document.search_form)"> <input type="hidden" name="config" value="../../../r-tt/private/config/ssserver.en" /> <div class="hdr-search-row"> <span class="hdr-search-icon" onclick="doSearch(document.search_form)"></span> <input type="text" name="QUERY" class="hdr-search-input" value="Search..." onfocus="onSearchFocus(document.search_form)" /> </div> </form> </div> <script type="text/javascript" charset="utf-8"> function onSearchFocus(F) { if (F.QUERY.value == "Search...") { F.QUERY.value=""; F.QUERY.style.color = "#404040"; } return true; } function doSearch(F) { if (F.QUERY.value == "Search...") {F.QUERY.value="";} if (F.QUERY.value == "") {alert("Please specify search pattern");F.QUERY.focus();return false;} return true; } </script> <div class="hdr-info"> <div> We are committed to providing fast, efficient, and affordable software solutions that set new standards in the software development industry. </div> </div> <div class="clearwoflex"></div> <div class="hdr-langs"> <div class="langs-block"> <div class="langs-btn"> <div class="langs-cur-flag"> <img width="51" height="29" alt="" src="/images/lang/en.png"/> </div> <span class="langs-sel"></span> </div> <div class="langs-list"> <a href="https://www.r-studio.com/de/NAT-firewall-traversal-remote-datenwiederherstellung.html"> <img src="/images/lang/de.png" width="51" height="29" alt="" /> <span>Deutsch</span> </a> <a href="https://www.r-studio.com/fr/traversee-NAT-pare-feu-recuperation-donnees-distance.html"> <img src="/images/lang/fr.png" width="51" height="29" alt="" /> <span>Français</span> </a> <a href="https://www.r-studio.com/it/NAT-Firewall-Traversal-per-il-recupero-dati-remoto.html"> <img src="/images/lang/it.png" width="51" height="29" alt="" /> <span>Italiano</span> </a> <a href="https://www.r-studio.com/es/NAT-firewall-traversal-para-recuperacion-remota-datos.html"> <img src="/images/lang/es.png" width="51" height="29" alt="" /> <span>Español</span> </a> <a href="https://www.r-studio.com/pt/NAT-e-Firewall-Traversal-para-Recuperacao-Remota-de-dados.html"> <img src="/images/lang/pt.png" width="51" height="29" alt="" /> <span>Português</span> </a> <a href="https://www.r-studio.com/nl/NAT-en-firewall-traversal-voor-gegevensherstel-op-afstand.html"> <img src="/images/lang/nl.png" width="51" height="29" alt="" /> <span>Nederlands</span> </a> <a href="https://www.r-studio.com/pl/NAT-przechodzenie-przez-zapore-sieciowa-zdalnego-odzyskiwania-danych.html"> <img src="/images/lang/pl.png" width="51" height="29" alt="" /> <span>Polski</span> </a> <a href="https://www.r-studio.com/ru/remote-recovery-nat-firewall-traversal.html"> <img src="/images/lang/ru.png" width="51" height="29" alt="" /> <span>Русский</span> </a> </div> </div> </div> <div class="hdr-menu"> <div class="menu-container" id="menu-container"> <span class="menu-button"> <span class="menu-button-open"></span> <span class="menu-button-close"></span> </span> <a href="https://www.r-tt.com/" class="menu-logo" title="R-Tools Technology Inc."> <img src="/images/nav/rtt-logo.png" alt="R-Tools Technology Inc." width="225" height="85" /> </a> <ul class="menu-main" id="menu-main"> <li class="menu-item"><div class="menu-item-wrap"> <span class="menu-title"> <span class="menu-icon-left"></span> PRODUCTS <span class="menu-icon-right"></span> </span> <div class="menu-dd"> <div class="menu-dd-cont"> <div class="menu-dd-title"> FREEWARE </div> <div class="menu-dd-items"> <ul class="menu-dd-ul"> <li> <a href="https://www.r-undelete.com/">R-Undelete Home</a> </li> <li> <a href="https://www.r-undelete.com/free_photo_recovery/">R-Photo</a> </li> <li> <a href="https://www.r-studio.com/free-linux-recovery/">R-Linux</a> </li> <li> <a href="https://www.r-wipe.com/#lite">R-Wipe & Clean Lite</a> </li> </ul> </div> </div> <div class="menu-dd-cont"> <div class="menu-dd-title"> FOR COMMERCIAL USE </div> <div class="menu-dd-items"> <ul class="menu-dd-ul"> <li> <a href="https://www.r-studio.com/Data_Recovery_Technician.shtml"> R-Studio Technician for Data Recovery Services </a> </li> <li> <a href="https://www.drive-image.com/Drive_Image_Licensing.shtml#commercial"> R-Drive Image for Backup and Deployment Services </a> </li> </ul> </div> </div> <div class="menu-dd-cont"> <div class="menu-dd-title"> FOR PERSONAL AND BUSINESS USE </div> <div class="menu-dd-items"> <div class="menu-dd-cols"> <div class="menu-dd-col-title"> <a href="https://www.r-studio.com/data-recovery-software/"> PRO Data Recovery: </a> </div> <div class="menu-dd-col-ul"><ul class="menu-dd-ul"> <li> <a href="https://www.r-studio.com/">R-Studio for Windows</a> </li> <li> <a href="https://www.r-studio.com/data_recovery_macintosh/">R-Studio for Mac</a> </li> <li> <a href="https://www.r-studio.com/data_recovery_linux/">R-Studio for Linux</a> </li> </ul></div> <div class="clearthis"></div> </div> <div class="menu-dd-cols"> <div class="menu-dd-col-title"> Backup and System Restore: </div> <div class="menu-dd-col-ul"><ul class="menu-dd-ul"> <li> <a href="https://www.drive-image.com/">R-Drive Image</a> </li> <li> <a href="https://www.drive-image.com/Drive_Image_Licensing.shtml#technician">R-Drive Image Technician</a> </li> </ul></div> <div class="clearthis"></div> </div> <div class="menu-dd-cols"> <div class="menu-dd-col-title"> PC Privacy and Security: </div> <div class="menu-dd-col-ul"><ul class="menu-dd-ul"> <li> <a href="https://www.r-wipe.com/">R-Wipe & Clean</a> </li> <li> <a href="https://www.r-wipe.com/#mac">R-Wipe & Clean for Mac</a> </li> </ul></div> <div class="clearthis"></div> </div> </div> </div> </div> </div></li> <li class="menu-item"><div class="menu-item-wrap"> <span class="menu-title"> <span class="menu-icon-left"></span> <span class="alt-tr-ru-1">BUY ONLINE</span> <span class="menu-icon-right"></span> </span> <div class="menu-dd"> <div class="menu-dd-cont"> <div class="menu-dd-items"> <ul class="menu-dd-ul"> <li> <a href="https://www.r-tt.com/VolumeLicensing.shtml" class="alt-tr-ru-1">Quote</a> </li> <li> <a href="https://www.r-tt.com/GetInvoice.shtml">Get Invoice</a> </li> <li> <a href="https://www.r-tt.com/FAQ.shtml">Sales FAQ</a> </li> <li> <a href="https://www.r-tt.com/BuyOnLine.shtml">Sales Policy</a> </li> </ul> </div> </div> </div> </div></li> <li class="menu-item"><div class="menu-item-wrap"> <span class="menu-title"> <span class="menu-icon-left"></span> SUPPORT <span class="menu-icon-right"></span> </span> <div class="menu-dd"> <div class="menu-dd-cont"> <div class="menu-dd-items"> <ul class="menu-dd-ul"> <li> <a href="https://www.r-tt.com/TechnicalSupport.shtml">Technical Support</a> </li> <li> <a href="https://www.r-tt.com/PurchasingRequest.shtml">Customer Support</a> </li> <li> <a href="https://www.r-studio.com/File_Recovery_FAQ.shtml">FAQ</a> </li> <li> <a href="https://www.r-tt.com/Knowledge-Base.html">Knowledge Base</a> </li> <li> <a rel="noopener" target="_blank" href="https://forum.r-tt.com/">R-TT Forum</a> </li> </ul> </div> </div> </div> </div></li> <li class="menu-item"><div class="menu-item-wrap"> <span class="menu-title"> <span class="menu-icon-left"></span> DISTRIBUTION <span class="menu-icon-right"></span> </span> <div class="menu-dd"> <div class="menu-dd-cont"> <div class="menu-dd-items"> <ul class="menu-dd-ul"> <li> <a href="https://www.r-tt.com/Affiliate_Program.shtml">Affiliate Program</a> </li> <li> <a href="https://www.r-tt.com/Resellers.shtml">Resellers</a> </li> <li> <a href="https://www.r-tt.com/Distribution.shtml">Regional Distributors</a> </li> <li> <a target="_blank" rel="noopener" href="https://secure.r-tt.com/distributor/login/">Login</a> </li> </ul> </div> </div> </div> </div></li> <li class="menu-item"><div class="menu-item-wrap"> <span class="menu-title"> <span class="menu-icon-spare"></span> <a href="https://secure.r-tt.com/UserConsole.shtml">MY ORDER</a> </span> </div></li> </ul> </div> </div> <div class="clearwoflex"></div> </div> </div> <div> <div class="row-blue row-section"><div class="section"><ul class="page-title"> <li> <div class="page-title-main"> NAT and Firewall Traversal for Remote Data Recovery </div></li> </ul></div></div> <div class="row-section page-height-info"><div class="section"> <div class="social-share"> <a target="_blank" href="https://www.facebook.com/sharer.php?u=https://www.r-studio.com/remote-recovery-nat-firewall-traversal.html" title="Share on Facebook"><img src="/images/social/fb-share32.png"/></a> <a target="_blank" href="https://twitter.com/intent/tweet?url=https://www.r-studio.com/remote-recovery-nat-firewall-traversal.html&text=NAT%20and%20Firewall%20Traversal%20for%20Remote%20Data%20Recovery%20" title="Share on Twitter"><img src="/images/social/tw-share32.png"/></a> <a target="_blank" href="http://pinterest.com/pin/create/button/?url=https://www.r-studio.com/remote-recovery-nat-firewall-traversal.html&description=NAT%20and%20Firewall%20Traversal%20for%20Remote%20Data%20Recovery%20" title="Share on Pinterest"><img src="/images/social/pt-share32.png"/></a> <a target="_blank" href="http://www.reddit.com/submit?url=https://www.r-studio.com/remote-recovery-nat-firewall-traversal.html&title=NAT%20and%20Firewall%20Traversal%20for%20Remote%20Data%20Recovery%20" title="Share on Reddit"><img src="/images/social/reddit-share32.png"/></a> </div> <p class="text"> Remote data recovery over the Internet is a convenient, cost-effective and efficient way to provide data recovery services to off-site clients. As an alternative to shipping disks by post, data recovery has far fewer logistical obstacles and security risks. Mishandling or extreme temperatures during shipping can further damage the disk, drastically reducing the chances of recovery. Furthermore, a disk in the mail can be lost, or worse, stolen by <a rel="noopener" target="_blank" href="https://www.r-wipe.com/computer-privacy-and-identity-theft-protection.html">identity thieves</a>, corporate competitors or foreign spies. </p> <p class="text"> Remote data recovery over the Internet obviates the need to entrust your precious data in the hands of a shipping service or mailroom. The wide availability and affordability of fast broadband Internet access also makes remote data recovery over network feasible for more customers in more corners of the globe. </p> <p class="text"> <a rel="noopener" target="_blank" href="https://www.r-studio.com/">R-Studio</a> is our professional data recovery program that provides a full range of remote data recovery tools. These tools allow you to service your data recovery customers over the Internet as if you were actually sitting in front of their workstation. We discuss remote data recovery in greater detail in our article <a rel="noopener" target="_blank" href="https://www.r-studio.com/DataRecovery_over_Network.shtml">R-Studio: Data Recovery over Network</a>. </p> <p class="text"> While R-Studio offers a number of conveniences and process improvements, there are a few potential barriers to remote data recovery that are unique to physically shipping disks. Chief among these issues is providing a secure connection between an R-Studio workstation and the customer's computer. Successfully connecting the host and client machines is further complicated by corporate networks, firewalls, and other in-house network infrastructure. </p> <p class="text"> To understand the challenges of creating a secure Internet connection suitable for data recovery, it's best to begin with a bit of general information about Internet networking. Each device on the Internet — be it a server, computer, router, printer or smartphone — has its own unique Internet Protocol (IP) address. This is like a device's telephone number on the Internet; if another machine wants to contact it, it "calls" it via the known IP address. For example, 74.125.39.103 is the IP address of one of the Google servers. Domain names, such as www.google.com are like "speed dial" for these IP addresses. When you type in www.google.com into your browser, what you're actually doing is querying a domain name server (DNS) that will look up the IP address associated with www.google.com and then route you to the appropriate server on the Internet. </p> <p class="text"> The issue with connecting to a data recovery client's computer via an IP address is that most computers are connected to the Internet via a corporate network. That is, they access the Internet by first passing through an intermediary, such as a corporate firewall or a corporate network address translation (<a rel="noopener" target="_blank" href="https://www.r-studio.com/What-is-NAT.html">NAT</a>) device. Such network infrastructure allows companies to exercise greater control over the flow of Internet data both in and out of the company. In general, there are two types of networks: private networks and public networks. The key difference between these two types of networks is how computers on these network types are made visible to computers on the Internet.<br/><br/> </p> <p class="text"> <i>Pubic network</i><br/> <img style="text-align: left;" src="/Disk_Recovery_Articles/remote-recovery-nat-firewall-traversal/NAT_and_Firewall_Traversing_for_Remote_Data_Recovery_Firewall_Network.png" width="600" height="262" alt="Pubic network"><br/> On a public network, each computer has its own unique IP address that is visible to the entire Internet. The firewall may serve to restrict certain types of traffic or traffic from unauthorized users, but in general, these machines are readily and transparently accessible to anyone connected to the Internet. This is similar to having a direct phone line at your company that rings your desk phone without going through the operator or administrative assistant. That phone number is unique to your phone and calls to that number are not screened as thoroughly (i.e. anyone with the number can call you). It is the same with the IP address of a computer on a public network. For this reason, connecting to one of these machines for data recovery is typically very easy. Unless the firewall is specifically set up to block traffic from the <a rel="noopener" target="_blank" href="https://www.r-studio.com/Data_Recovery_Technician.shtml">data recovery technician's machine</a>, a connection can be made using the public IP address of the computer. Accessing a computer behind a firewall in such a manner is called <b>firewall traversal</b>. </p> <p class="text"> The problem is that the vast majority of companies, organizations and homes do not use a public network. This is primarily for <a rel="noopener" target="_blank" href="https://www.r-tt.com/data_security_software/">security purposes</a>, but for many users, it's also for economic reasons. Unless you are your own Internet service provider (ISP), then you are on a private network. </p> <p class="text"> <i>Private network</i><br/> <img style="text-align: left;" src="/Disk_Recovery_Articles/remote-recovery-nat-firewall-traversal/NAT_and_Firewall_Traversing_for_Remote_Data_Recovery_NAT_Network.png" width="600" height="246" alt="Private network"><br/> If a public network is like giving your computer a direct phone line to the outside world, a private network is like giving your phone a company extension specific to the building. In order to reach you, outside callers must first go through the operator, who will route the call accordingly, or punch in your extension after dialing the main phone number for the entire company. </p> <p class="text"> The concept is similar for a private network, except computers outside the private network won't know your computer's private IP address, nor will this private IP address be useful. Instead of each computer having its own public IP address that is unique on the Internet, each computer on a private network has an IP address that is unique within the network, for example 192.168.1.192, 172.16.2.23, or 10.10.10.10. </p> <p class="text"> The only machine that has a unique public IP address is the NAT device. In order to reach one of the machines on a private network, a computer on the Internet must first communicate with the NAT device. The NAT device is responsible for routing the data to the appropriate machine on the private network. This is known as NAT traversal. Although each computer on a private network will be accessed using the IP address of the NAT device, each computer will have its own port through which it receives Internet data. This is similar to a phone extension. Again, computers on the Internet will be communicating via the NAT device's IP address and a port number, but will never know the other computer's private IP address. </p> <p class="text"> Similar to using your desk phone to make an outside call, accessing the Internet from a computer on a private network is significantly easier than reaching a computer on a private network from the Internet. But it can be done. </p> <p class="text"> <b>Port Forwarding</b><br/> There are many advantages to a private network. As mentioned above, it requires only one IP address for an entire network of devices. But more importantly, a private network adds an additional layer of computer security, since the NAT acts as a gatekeeper for all Internet traffic. This helps prevent trojans, spyware, malware, viruses, spam and hacking attempts. Recall from above that with a public network, anyone can access a computer unless specifically blocked. With a private network, the opposite is true: no one can access a computer on a private network unless they've been specifically given access. While this is effective at deterring malicious attacks and unwanted traffic, it makes it equally as difficult to establish a connection for legitimate purposes, such as data recovery over the Internet. Without knowing the port that the NAT has assigned to the computer on the private network, the data recovery technician's machine won't know how to reach the customer's computer. </p> <p class="text"> As mentioned above, access to the Internet from a computer on a private network is usually a one-way street. But you can give a computer on a private network the equivalent of a "direct line" through <b>port forwarding</b>. Port forwarding is when a NAT device permanently assigns a port to a specific machine on the network. For example, if the NAT device with an IP address of 184.173.73.182 forwarded port 2083 to a computer, the IP address that a computer would use to reach it via the Internet would be something like 184.173.73.182:2083. This IP address/port combination can be used much like a public IP address in order to establish a reliable connection to a machine on a private network. This is known as <b>NAT traversal</b>. </p> <p class="text"> <b>NAT Traversal and Data Recovery over the Internet</b><br/> While port forwarding is the typical solution for NAT traversal, most customers who are on a private network will not have the necessary network privileges or technical know-how to forward a port. This means that allowing an incoming connection from the data recovery technician may not be feasible. </p> <p class="text"> Fortunately, R-Studio lets you perform file recovery operations over the Internet using a connection initiated by the customer. This is similar to the way a computer would access a website on the Internet from behind a private network. The only additional step is to set up port forwarding on the NAT device that is connected to the data recovery technician's computer. In this way, all of the technically challenging aspects of data recovery over the Internet are left up to the technician, while the process remains user-friendly for the customer. </p> <p class="text"> Below is an example of how this connection may be set up.<br/> <img style="text-align: left;" src="/Disk_Recovery_Articles/remote-recovery-nat-firewall-traversal/NAT_and_Firewall_Traversing_for_Remote_Data_Recovery_Corporate_Network.png" width="600" height="397" alt="Corporate network"><br/> </p> <p class="text"> Here, the customer is running R-Studio Agent, while the technician is running R-Studio. Both are behind a private network. The R-Studio technician forwards a port to allow access from the R-Studio Agent program on the customer's computer. This allows the R-Studio technician to "accept" the incoming connection from the customer. Meanwhile, the customer does not compromise the security of the corporate network they are on. This is a good trade-off between corporate network security and ease of use for the customer. Likewise, since the R-Studio technician has only opened that specific port for use by R-Studio Agent, their network remains secure as well. </p> <p class="text"> <b>Conclusion</b><br/> As illustrated above, the first challenge to successfully performing data recovery over the Internet is securing a reliable connection. Private networks complicate this matter, but port forwarding and R-Studio's ability to establish connections initiated by the client make this process easy. With this obstacle removed, data recovery over the Internet stands as the most cost-effective, efficient and secure alternative to physically shipping disks or deploying technicians into the field. </p> <p class="text"> For a more in-depth illustration of how the above connection can be established, read our article: <a rel="noopener" target="_blank" href="https://www.r-studio.com/data-recovery-over-the-internet.html">R-Studio Technician: Data Recovery over the Internet</a>, which presents a field test of such network layout for remote data recovery over the Internet. </p> </div></div> <div class="row-blue row-section footer-articles"><div class="section"> <div class="articles-items" id="articles-cols"> <div class="bottom-title">Data Recovery Articles</div> <ul class="bottom-col-left"> <li><a href="https://www.r-studio.com/Data_Recovery_Guide.shtml">Data Recovery Guide</a></li> <li><a href="https://www.r-studio.com/Why_RStudio.shtml">Why R-Studio?</a></li> <li><a href="https://www.r-studio.com/Forensic-and-DataRecovery-Business.html">R-Studio for Forensic and Data Recovery Business</a></li> <li><a href="https://www.r-tt.com/r-studioreview_toptenreviews/">R-STUDIO Review on TopTenReviews</a></li> <li><a href="https://www.r-studio.com/SSD_Recovery.html">File Recovery Specifics for SSD devices</a></li> <li><a href="https://www.r-studio.com/How-to-recover-NVMe-device.html">How to recover data from NVMe devices</a></li> <li><a href="https://www.r-studio.com/Success-of-File-Recovery.html">Predicting Success of Common Data Recovery Cases</a></li> <li><a href="https://www.r-studio.com/Recovery_Overwritten_Data.html">Recovery of Overwritten Data</a></li> <li><a href="https://www.r-studio.com/Emergency_File_Recovery.shtml">Emergency File Recovery Using R-Studio Emergency</a></li> <li><a href="https://www.r-studio.com/RAID_Recovery_Presentation.shtml">RAID Recovery Presentation</a></li> <li><a href="https://www.r-studio.com/RStudio_BrokenComputer.shtml">R-Studio: Data recovery from a non-functional computer</a></li> <li><a href="https://www.r-studio.com/File_Recovery_from_a_Computer_that_Wont_Boot.shtml">File Recovery from a Computer that Won't Boot</a></li> <li><a href="https://www.r-studio.com/Clone_Disks_Before_File_Recovery.shtml">Clone Disks Before File Recovery</a></li> <li><a href="https://www.r-studio.com/Video_Recovery.shtml">HD Video Recovery from SD cards</a></li> <li><a href="https://www.r-studio.com/File_Recovery_from_Unbootable_Mac.shtml">File Recovery from an Unbootable Mac Computer</a></li> <li><a href="https://www.r-studio.com/best-file-recovery-mac-system-disk.shtml">The best way to recover files from a Mac system disk</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_From_Encrypted_Linux_Disk.shtml">Data Recovery from an Encrypted Linux Disk after a System Crash</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_From_DMG_Files.shtml">Data Recovery from Apple Disk Images (.DMG files)</a></li> <li><a href="https://www.r-studio.com/File_Recovery_after_Reinstalling_Windows.shtml">File Recovery after Re-installing Windows</a></li> <li><a href="https://www.r-studio.com/DataRecovery_over_Network.shtml">R-Studio: Data Recovery over Network</a></li> <li><a href="https://www.r-studio.com/RStudio_Network_Package.shtml">How To Use R-Studio Corporate Package</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_After_Reformat_NTFS.shtml">Data Recovery from a Re-Formatted NTFS Disk</a></li> <li><a href="https://www.r-studio.com/ReFS-recovery.html">Data Recovery from an ReFS disk</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_After_Reformat_exFAT.shtml">Data Recovery from a Re-Formatted exFAT/FAT Disk</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_After_Erase_HFS.shtml">Data Recovery from an Erased HFS Disk</a></li> <li><a href="https://www.r-studio.com/data-recovery-after-erase-APFS.html">Data Recovery from an Erased APFS Disk</a></li> <li><a href="https://www.r-studio.com/Data_Recovery_After_Reformat_Ext4FS.shtml">Data Recovery from a Re-Formatted Ext2/3/4FS Disk</a></li> <li><a href="https://www.r-studio.com/XFS-recovery.html">Data Recovery from an XFS Disk</a></li> <li><a href="https://www.r-studio.com/NAS_Data_Recovery.shtml">Data Recovery from a Simple NAS</a></li> <li><a href="https://www.r-studio.com/connect-virtual-raid-to-operating-system.html">How to connect virtual RAID and LVM/LDM volumes to the operating system</a></li> </ul> <ul class="bottom-col-right"> <li><a href="https://www.r-studio.com/ntfs-recovery-after-quick-format.html">Specifics of File Recovery After a Quick Format</a></li> <li><a href="https://www.r-studio.com/data-recovery-after-partition-manager-crash.html">Data Recovery After Partition Manager Crash</a></li> <li><a href="https://www.r-studio.com/file-recovery-vs-file-repair.html">File Recovery vs. File Repair</a></li> <li><a href="https://www.r-studio.com/data-recovery-from-virtual-machines.html">Data Recovery from Virtual Machines</a></li> <li><a href="https://www.r-studio.com/Connect-Disks-to-Computer.html">How to Connect Disks to a Computer</a></li> <li><a href="https://www.r-studio.com/emergency-data-recovery-over-network.html">Emergency Data Recovery over Network</a></li> <li><a href="https://www.r-studio.com/data-recovery-over-the-internet.html">Data Recovery over the Internet</a></li> <li><a href="https://www.r-studio.com/creating-custom-file-type-r-studio.html">Creating a Custom Known File Type for R-Studio</a></li> <li><a href="https://www.r-studio.com/finding-raid-parameters.html">Finding RAID parameters</a></li> <li><a href="https://www.r-studio.com/recovering-partitions-on-damaged-disk.html">Recovering Partitions on a Damaged Disk</a></li> <li><a href="https://www.r-studio.com/remote-recovery-nat-firewall-traversal.html">NAT and Firewall Traversal for Remote Data Recovery </a></li> <li><a href="https://www.r-studio.com/external-disk-recovery.html">Data Recovery from an External Disk with a Damaged File System</a></li> <li><a href="https://www.r-studio.com/file-recovery-basics.html">File Recovery Basics</a></li> <li><a href="https://www.r-studio.com/macos-raid-recovery-parameters.html">Default Parameters of Software Stripe Sets (RAID 0) in Mac OS X</a></li> <li><a href="https://www.r-studio.com/vhd-disk-recovery.html">Data Recovery from Virtual Hard Disk (VHD/VHDX) Files</a></li> <li><a href="https://www.r-studio.com/encrypted-disks-recovery.html">Data Recovery from Various File Container Formats and Encrypted Disks</a></li> <li><a href="https://www.r-studio.com/automatic-raid-detection.html">Automatic RAID Parameter Detection</a></li> <li><a href="https://www.r-studio.com/data_recovery_technology.html">IntelligentScan Data Recovery Technology</a></li> <li><a href="https://www.r-studio.com/Multipass-imaging-damaged-drives.html">Multi-pass imaging in R-Studio</a></li> <li><a href="https://www.r-studio.com/runtime-drive-imaging.html">Runtime Imaging in R-Studio</a></li> <li><a href="https://www.r-studio.com/LinearImaging-vs-RuntimeImaging-vs-MultiPassImaging.html">Linear Imaging vs Runtime Imaging vs Multi-Pass Imaging</a></li> <li><a href="https://www.r-studio.com/USB-Stabilizer-for-unstable-drives.html">USB Stabilizer Tech for unstable USB devices</a></li> <li><a href="https://www.r-studio.com/improve-pc3000-data-analysis.html">Joint work of R-Studio and PC-3000 UDMA hardware</a></li> <li><a href="https://www.r-studio.com/HDDSuperClone-drive-imaging.html">Joint work of R-Studio and HDDSuperClone</a></li> <li><a href="https://www.r-studio.com/pro-data-recovery-and-forensic-for-small-business.html">R-Studio T80+ - A Professional Data Recovery and Forensic Solution for Small Business and Individuals Just for 1 USD/day</a></li> </ul> <div class="clearthis"></div> <ul class="bottom-col-left"> <li class="bottom-title">Backup Articles</li> <li><a href="https://www.drive-image.com/r-drive-image-license-transfer.html">R-Drive Image Standalone and Corporate license transferring</a></li> <li><a href="https://www.drive-image.com/fixing-Windows-update-error-0x80070643.html">Fixing Windows update error 0x80070643 with R-Drive Image</a></li> <li><a href="https://www.drive-image.com/backup_software.shtml">Backup with Confidence</a></li> <li><a href="https://www.drive-image.com/Free-Partition-Manager.html">R-Drive Image as a free powerful partition manager</a></li> <li><a href="https://www.drive-image.com/Computer_Recovery_and_System_Restore.shtml">Computer Recovery and System Restore</a></li> <li><a href="https://www.drive-image.com/Disk_Cloning_and_Mass_System_Deployment.shtml">Disk Cloning and Mass System Deployment</a></li> <li><a href="https://www.drive-image.com/imaged-disk-access.html">Accessing Individual Files or Folders on a Backed Up Disk Image</a></li> <li><a href="https://www.drive-image.com/How-to-use-Startup-Bootable-version.html">R-Drive Image startup / bootable version</a></li> <li><a href="https://www.drive-image.com/backup-files-personal-computers-laptops-of-home-self-employed-users.html">File Backup for Personal Computers and Laptops of Home and Self-Employed Users</a></li> <li><a href="https://www.drive-image.com/data-backup-plan.html">Creating a Data Consistent, Space Efficient Data Backup Plan for a Small Business Server</a></li> <li><a href="https://www.drive-image.com/how-move-installed-Windows-from-HDD-to-SSD.html">How to Move the Already Installed Windows from an Old HDD to a New SSD Device and Create a Hybrid Data Storage System</a></li> <li><a href="https://www.drive-image.com/Moving-Windows-to-New-SSD.html">How to Move an Installed Windows to a Larger Disk</a></li> <li><a href="https://www.drive-image.com/Moving-BitLocker-System-Disk-to-New-Device.html">How to Move a BitLocker-Encrypted System Disk to a New Storage Device</a></li> <li><a href="https://www.drive-image.com/Disk-Backup-Mac-Linux.html">How to backup and restore disks on Linux and Mac computers using R-Drive Image</a></li> </ul> <ul class="bottom-col-right"> <li class="bottom-title">Undelete Articles</li> <li><a href="https://www.r-undelete.com/Get_Deleted_Files_Back/">Get Deleted Files Back</a></li> <li><a href="https://www.r-undelete.com/free_photo_recovery/SD-card-recovery.html">Free Recovery from SD and Memory cards</a></li> <li><a href="https://www.r-undelete.com/free_photo_recovery/undelete-HD-video.html">R-Undelete: Video Recovery</a></li> <li><a href="https://www.r-undelete.com/Damaged_File_System.shtml">Recovery from an External Device with a Damaged File System</a></li> <li><a href="https://www.r-undelete.com/File_Recovery_From_Non-Functional_Computer.shtml">File recovery from a non-functional computer</a></li> <li><a href="https://www.r-undelete.com/Free_File_Recovery_from_Android_Phone_Memory_Card.html">Free File Recovery from an Android Phone Memory Card</a></li> <li><a href="https://www.r-undelete.com/free_photo_recovery/how-to-tutorial/">Free Photo and Video File Recovery Tutorial</a></li> <li><a href="https://www.r-undelete.com/easy-file-recovery-in-three-steps.html">Easy file recovery in three steps</a></li> </ul> <div class="clearthis"></div> <div class="bottom-title">PC Privacy Articles</div> <ul class="bottom-col-left"> <li><a href="https://www.r-wipe.com/computer-privacy-and-identity-theft-protection.html">Computer Privacy and Identity Theft Protection</a></li> <li><a href="https://www.r-wipe.com/disk-cleanup.html">Disk Cleanup: How to free up disk space</a></li> <li><a href="https://www.r-wipe.com/clear-browsers-cache-history.html">Clear Browser Cache, History, and Other Data</a></li> <li><a href="https://www.r-wipe.com/bulk-file-delete-registry-cleaning.html">Wipe lists in R-Wipe&Clean</a></li> <li><a href="https://www.r-wipe.com/maintain-computer-privacy-SSD-storage-device.html">SSD Storage Devices and Computer Privacy</a></li> </ul> <div class="clearthis"></div> </div> <div class="articles-more-container"><span class="articles-more" id="articles-more"></span></div> </div></div> <script type="text/javascript" charset="utf-8"> function onArticlesMore(el) { var cols=document.getElementById("articles-cols"); var more=document.getElementById("articles-more"); if (cols && more) { nodeSwitchClass(cols,"articles-full"); nodeSwitchClass(more,"articles-full"); } } function onArticlesInit() { var more=document.getElementById("articles-more"); if (more) {more.onclick = function(){onArticlesMore(this);};} } </script> <div class="row-blue row-section"><div class="section reviews-col reviews-one"> <div class="bottom-col-right"> <div class="feedbacks-header"> <div class="bottom-title"> Data Recovery Feedback </div> <div class="feedbacks-meta"> <span itemscope itemtype="http://schema.org/LocalBusiness"> <meta itemprop="name" content="www.r-studio.com"> <meta itemprop="url" content="https://www.r-studio.com"> <meta itemprop="description" content="System Utilities - File recovery and Data Recovery Software, Mail recovery, Undelete, Drive Image, Disk Cleaning, Data Undelete, Security tools for Windows, Mac and Linux, R-Tools Technology Inc."> <span itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> <span itemprop="reviewCount">372</span> <a href="/data-recovery-feedback/">feedbacks</a> <br /> Rating: <span itemprop="ratingValue">4.8</span> / <span itemprop="bestRating">5</span> <meta itemprop="worstRating" content = "1"> </span> <meta itemprop="telephone" content="(888) 978-8266"> </span> </div> </div> <div class="feedbacks-wrapper clearfix"> <div class="feedbacks-right"> <a href="https://www.r-tt.com/Feedback.shtml?product=Data%20Recovery" title="Add your input"> <span class="btn-add-big btn-add-white"></span> </a> </div> <div class="feedbacks-left jhscroll-container"> <div class="jhscroll-area feedbacks-scroll-area"><div> <div class="feedbacks-items"> <div class="feedbacks-item"> <div class="feedbacks-text"><div> I have used R-studio with USB Stabilizer,Rapid-spar,Deep spar, Pc3000, MRT.I am thoroughly satisfied.Now i have made head maps to isolate bad heads of hard disk when used with mounted disks. </div></div> <div class="feedbacks-info"> <span class="feedbacks-rating"> <span></span><span></span><span></span><span></span><span></span> </span> <span class="feedbacks-author"> <a href="/data-recovery-feedback/">Simran Arora (Data recovery factory mumbai)</a> </span> </div> </div> <div class="feedbacks-item"> <div class="feedbacks-text"><div> I was completely lost. My Mac seemed to have eaten my 4TB external USB drive - was formatted APFS encrypted. The volume just disappeared while running and I had to reboot and when it came back the volume could not be unlocked / mounted natively. I tried a whole heap of methods (https://github.com/libyal/libfsapfs/, drat and many others) to no avail. R-Studio data recovery was able to recover the entire volume - a complete life saver, worth every cent! </div></div> <div class="feedbacks-info"> <span class="feedbacks-rating"> <span></span><span></span><span></span><span></span><span></span> </span> <span class="feedbacks-author"> <a href="/data-recovery-feedback/">James Haworth-Wood (EADIT Security Solutions)</a> </span> </div> </div> <div class="feedbacks-item"> <div class="feedbacks-text"><div> I really love your R-Studio product, I am doing Data Recovery as a professional, I used RS since the early versions and I loved the product, as far as I can tell, R-Studio, especially the Tech Version (but including the standard) is one of the best and excellent tools for a pro to have in the arsenal of tools in a pro DR lab, especially combining with the specialized Data Recovery hardware providers like DeepSpar, and PC3000, the rest of `wannabees` out there are waste of time, strongly recommend </div></div> <div class="feedbacks-info"> <span class="feedbacks-rating"> <span></span><span></span><span></span><span></span><span></span> </span> <span class="feedbacks-author"> <a href="/data-recovery-feedback/">Michael Avraham (OmniDataPlus Data recovery and repair)</a> </span> </div> </div> <div class="feedbacks-item"> <div class="feedbacks-text"><div> I lost more than 200K files from my NAS due to a mistake. I tried 3 different recovery solutions over the 4 TB raid disks, and all of them performed ok but to be honest none of them were able to Raw recover the files and rename them with meaningful names out of the Metadata like R-TT did, then I was able to sort again my files and pictures and kind of restore all of them. <br /> <br />R-TT may not be the easiest or most user-friendly solution, but the algorithm used for the renaming saved me THOUSAND of hours of opening ... </div></div> <div class="feedbacks-info"> <span class="feedbacks-rating"> <span></span><span></span><span></span><span></span> </span> <span class="feedbacks-author"> <a href="/data-recovery-feedback/">Cesar reyes</a> </span> </div> </div> <div class="feedbacks-item"> <div class="feedbacks-text"><div> Just recovered my old ext4 partition with R-Studio after trying testdisk and R-Linux without success. That partition was overwritten by another ext4 partition and I was losing my hope until I tried R-Studio demo. It detected all my files and directories again! <br /> <br />Bought it and 100% recommend it for anyone with a similar issue. </div></div> <div class="feedbacks-info"> <span class="feedbacks-rating"> <span></span><span></span><span></span><span></span><span></span> </span> <span class="feedbacks-author"> <a href="/data-recovery-feedback/">Edgar Endo</a> </span> </div> </div> </div> </div></div> <div class="jhscroll-bar"><div></div></div> </div> </div> </div> <script type="text/javascript" charset="utf-8"> function scrollGetArea(Container) { if (!Container) return null; var aAreas=nodeFindChildren(Container,".jhscroll-area");if ((!aAreas)||(aAreas.length!=1)) return null; aAreas=nodeFindDirectChildren(aAreas[0],"div");if ((!aAreas)||(aAreas.length!=1)) return null; return aAreas[0]; } function scrollGetBar(Container) { if (!Container) return null; var aBars=nodeFindChildren(Container,".jhscroll-bar");if ((!aBars)||(aBars.length!=1)) return null; aBars=nodeFindDirectChildren(aBars[0],"div");if ((!aBars)||(aBars.length!=1)) return null; return aBars[0]; } function onScrollScroll(ScrlArea,ScrlBar) { if ((!ScrlArea||!ScrlBar)||(ScrlArea.scrollWidth<=0)) return; var iSizePerc=Math.round(ScrlArea.clientWidth*100/ScrlArea.scrollWidth); if (iSizePerc>100) {iSizePerc=100;} if (iSizePerc<10) {iSizePerc=10;} var iLeftPerc=Math.round(ScrlArea.scrollLeft*100/ScrlArea.scrollWidth); if (iLeftPerc+iSizePerc>100) {iLeftPerc=100-iSizePerc;} ScrlBar.style.left=iLeftPerc.toString()+'%'; ScrlBar.style.width=iSizePerc.toString()+'%'; } function onScrollInit() { var aScrolls=nodeFindChildren(document,".jhscroll-container"); if (!aScrolls||!aScrolls.length) return; for(var i=0;i<aScrolls.length;i++) { var ScrlArea=scrollGetArea(aScrolls[i]);if (!ScrlArea) continue; var ScrlBar=scrollGetBar(aScrolls[i]);if (!ScrlBar) continue; onScrollScroll(ScrlArea,ScrlBar); ScrlBar.ondragstart = function() { return false; }; ScrlBar.onmousedown = function(e) { e = e || window.event; if (e.preventDefault) {e.preventDefault();} else {e.returnValue=false;} var ThisBar=this;if (!ThisBar) return; var ThisBarParent=ThisBar.parentNode;if (!ThisBarParent) return; var iBarWidth=ThisBar.offsetWidth; var iBarParent=ThisBarParent.offsetWidth; if (iBarWidth>=iBarParent) return; var ThisScroll=nodeFindParent(ThisBar,".jhscroll-container"); var ThisArea=scrollGetArea(ThisScroll);if (!ThisArea) return; var iOrigX=e.clientX;var iOrigLeft=ThisBar.offsetLeft;var iLastPerc=-1; document.onmousemove = function(e) { e = e || window.event; var iNewLeft=iOrigLeft+e.clientX-iOrigX; if (iNewLeft<0) {iNewLeft=0;} if (iNewLeft+iBarWidth>iBarParent) {iNewLeft=iBarParent-iBarWidth;} var iBarLeftPerc=Math.round(iNewLeft*100/ThisBarParent.offsetWidth); if (iBarLeftPerc==iLastPerc) return false; iLastPerc=iBarLeftPerc; ThisBar.style.left=iBarLeftPerc.toString()+'%'; var iAreaWidth=ThisArea.scrollWidth; var iAreaWindow=ThisArea.clientWidth; if (iAreaWindow>=iAreaWidth) return; ThisArea.scrollLeft=Math.round((iNewLeft/(iBarParent-iBarWidth))*(iAreaWidth-iAreaWindow)); return false; } document.onmouseup = function() { document.onmousemove = null; document.onmouseup = null; } } ScrlArea.onscroll=function() { var ThisScroll=nodeFindParent(this,".jhscroll-container"); var ThisBar=scrollGetBar(ThisScroll);if (!ThisBar) return; onScrollScroll(this,ThisBar); } } } onScrollInit(); </script> </div></div> </div> <div class="ftr-footer-wrapper"> <div class="section ftr-footer"> <div class="footer-wdir"> <ul class="footer-wdir-ul"> <li><a href="https://www.r-tt.com/technology-articles/">Technology articles</a></li> <li><a href="https://www.r-tt.com/Glossary.html">Glossary</a></li> <li><a href="http://directory.r-tt.com/">Web directory</a></li> </ul> </div> <div class="ftr-social-container"> <div class="social"> <a rel="nofollow noopener" target="_blank" href="https://twitter.com/RTT_Inc" class="social-item" title="Twitter"><span class="social-twitter"></span></a> <a rel="nofollow noopener" target="_blank" href="https://www.facebook.com/pages/R-Tools-Technology-Inc/236155899748769" class="social-item" title="Facebook"><span class="social-facebook"></span></a> <a rel="nofollow noopener" target="_blank" href="http://rtoolstechnology.tumblr.com/" class="social-item" title="Tumblr"><span class="social-tumblr"></span></a> <a rel="nofollow noopener" target="_blank" href="https://rtoolstechnology.wordpress.com/" class="social-item" title="Wordpress"><span class="social-wordpress"></span></a> </div> </div> <div> <ul class="footer-nav"> <li id="nfm_1"><a href="https://www.r-studio.com/Terms_Of_Use.shtml">Terms of Use</a></li> <li id="nfm_2"><a href="https://www.r-studio.com/Privacy_Policy.shtml">Privacy Policy</a></li> <li id="nfm_3"><a target="_blank" href="https://www.r-tt.com/RTTInfo.shtml">Contact Us</a></li> <li id="nfm_4"><a target="_blank" href="https://www.r-tt.com/Feedback.shtml">Feedback</a></li> <li id="nfm_5"><a href="https://www.r-studio.com/SiteMap.shtml">Site Map</a></li> <li id="nfm_6"><a target="_blank" rel="noopener" href="https://forum.r-tt.com/viewforum.php?f=13">R-Studio Forum</a></li> </ul> </div> <div class="clearthis"></div> <div class="footer-copyright"> © Copyright 2000-2024 R-Tools Technology Inc. </div> </div> </div> </div> </div> </div> <script type="text/javascript" charset="utf-8"> function removeMediaQueries() { var minWidth=982; document.body.setAttribute("style","min-width: "+(minWidth+8).toString()+"px;"); var styleSheets = document.styleSheets;if (!styleSheets) return; for (var i = 0;i<styleSheets.length;i++) { var cssRules = styleSheets[i].cssRules;if (!cssRules) continue; for (var j = 0;j<cssRules.length;j++) { if (!(cssRules[j] instanceof CSSMediaRule)) continue; var n=cssRules[j].media.mediaText.indexOf("max-width:");if (n<=0) continue; n=parseInt(cssRules[j].media.mediaText.substring(n+10));if ((n<=0)||(n>minWidth)) continue; cssRules[j].media.mediaText = "(max-width:1px)"; } } } function onFlexDetect() { var fbd_doc = document.body || document.documentElement;var fbd_style = fbd_doc.style; if (!(fbd_style.webkitFlexWrap == '' || fbd_style.msFlexWrap == '' || fbd_style.flexWrap == '' )) { var hdr=document.getElementById("hdr-hdr"); if (hdr) { hdr.className+=" no-flex"; removeMediaQueries(); } } } onFlexDetect(); </script> <script type="text/javascript" charset="utf-8"> function onMenuInit() { if(document.getElementById('menu-main')) { var menu = document.getElementById('menu-main'), menuContainer = document.getElementById('menu-container'), menuItems = nodeFindChildren(menu,'.menu-item'), menuTitle = nodeFindChildren(menu,'.menu-title'), menuBtn = nodeFindChildren(menuContainer,'.menu-button'); // show menu function showMenu() {nodeAddClass(menuContainer,'show-menu');} // hide menu function hideMenu() {nodeDelClass(menuContainer,'show-menu');} // menu button function clickButton(_this) { if(nodeHasClass(_this,'active')) { nodeDelClass(_this,'active'); nodesDelClass(menuItems,'active'); hideMenu(); } else { nodeAddClass(_this,'active'); showMenu(); } }; for(var i=0;i<menuBtn.length;i++) {menuBtn[i].onclick = function(){clickButton(this);};} // click on menu function clickItem(_this) { if(window.innerWidth < 982) { var _par = _this.parentNode; if (nodeHasClass(_par,'menu-item-wrap')) {_par=_par.parentNode;} if(nodeHasClass(_par,'active')) { nodeDelClass(_par,'active'); } else { var Siblings = _par.parentNode.childNodes; for(var i=0;i<Siblings.length;i++) { if ((Siblings[i].nodeType!=1)||(Siblings[i]==_par)) continue; nodeDelClass(Siblings[i],'active'); } nodeAddClass(_par,'active'); } } }; for(var i=0;i<menuTitle.length;i++) {menuTitle[i].onclick = function(){clickItem(this);};} // close adaptive menu on events function closeAdaptiveMenu() { if(nodesHasClass(menuBtn,'active')) { hideMenu(); nodesDelClass(menuBtn,'active'); } if(nodesHasClass(menuItems,'active')) { nodesDelClass(menuItems,'active'); } } // click outside adaptive menu if (document.addEventListener) { document.addEventListener('mouseup', function(e) { if((window.innerWidth < 982) && !(menuContainer === e.target) && !hasSpecifiedChild(menuContainer,e.target) ) { closeAdaptiveMenu(); } }); } // process window resize, for off of open dropdown in case of mobile->desktop if (window.addEventListener) { window.addEventListener('resize', function() { if(window.innerWidth > 982) {closeAdaptiveMenu();} }); }; } } onMenuInit(); </script> <script type="text/javascript" charset="utf-8"> if (typeof onImgBigShowInit !== 'undefined') {onImgBigShowInit();} if (typeof onArticlesInit !== 'undefined') {onArticlesInit();} if (typeof onReviewsInit !== 'undefined') {onReviewsInit();} if (typeof onOsTabsInit !== 'undefined') {onOsTabsInit();} </script> <div id="pp-info"> <ul> <li> We use cookies to ensure you get the best experience on our website. <a href="https://www.r-studio.com/Privacy_Policy.shtml" target="_blank">Read more</a> </li> <li> <a id="pp-done">Got It</a> </li> </ul> <img id="pp-info-0" alt="" /> <img id="pp-info-1" alt="" /> <img id="pp-info-2" alt="" /> <img id="pp-info-3" alt="" /> <img id="pp-info-4" alt="" /> <img id="pp-info-5" alt="" /> </div> <script type="text/javascript" charset="utf-8"> function getCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for(var i = 0; i <ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+ d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } function pingCookie(strId,aDomains,strGif) { for(i=0;i<aDomains.length;i++) { var strImgId=strId+"-"+i; document.getElementById(strImgId).src=aDomains[i]+strGif; document.getElementById(strImgId).style.display = ""; } } </script><script type="text/javascript" charset="utf-8"> var strPpCookie="r_pp_v1"; var strPpDoneGif="r_pp_v1_ji8s9nde.gif"; var aPpDomains=["https://secure.r-tt.com/","https://www.r-tt.com/","https://www.r-studio.com/","https://www.r-undelete.com/","https://www.r-wipe.com/","https://www.drive-image.com/"]; function onPpInfoDone() { document.getElementById("pp-info").style.display = "none"; setCookie(strPpCookie,"1",3650); pingCookie("pp-info",aPpDomains,strPpDoneGif); } function onPpInfoShow() { var pp_cookie = getCookie(strPpCookie); if (pp_cookie == "") {document.getElementById("pp-info").style.display = "block";} } document.getElementById("pp-done").onclick = onPpInfoDone; setTimeout(function(){onPpInfoShow();},1500); </script> <script type="text/javascript" charset="utf-8"> var strSeCookie="r_se_v1"; var strSeDoneGif="r_se_v1_ji8s9nde.gif"; var aSeDomains=["https://www.r-tt.com/","https://www.r-studio.com/","https://www.r-undelete.com/","https://www.r-wipe.com/","https://www.drive-image.com/"]; function onEventInfoDone() { nodeDelClass(document.getElementById("hdr-wrapper"),"special-event") setCookie(strSeCookie,"1",12); pingCookie("pp-info",aSeDomains,stSepDoneGif); } function onEventInfoShow() { var se_cookie = getCookie(strSeCookie); if (se_cookie == "") {nodeAddClass(document.getElementById("hdr-wrapper"),"special-event");} } if (document.getElementById("event-done")) { var iSecurePos=window.location.href.indexOf("secure."); if (iSecurePos<0) { document.getElementById("event-done").onclick = onEventInfoDone; setTimeout(function(){onEventInfoShow();},1000); } } </script> </body></html>