CINXE.COM

How Network Address Translation Works | HowStuffWorks

<!DOCTYPE html><html class="Article content-8894" lang="en-us" itemscope itemtype="https://schema.org/FAQPage"> <head><meta charset="utf-8"><link rel="preload" href="https://cdn.hswstatic.com/fonts/roboto-v20-latin-regular.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="https://cdn.hswstatic.com/fonts/roboto-v20-latin-700.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" as="image" type="image/avif" href="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1yb3V0ZXIuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyOTB9LCJ0b0Zvcm1hdCI6ImF2aWYifX0=" /> <link rel="preconnect" href="https://adservice.google.com"> <link rel="preconnect" href="https://securepubads.g.doubleclick.net"> <link rel="preconnect" href="https://googleads4.g.doubleclick.net"> <link rel="preconnect" href="https://c.amazon-adsystem.com"> <link rel="preconnect" href="https://tpc.googlesyndication.com"> <link rel="preconnect" href="https://pagead2.googlesyndication.com"> <link rel="preconnect" href="https://www.google-analytics.com"> <link rel="preconnect" href="https://www.googletagmanager.com"><link rel="dns-prefetch" href="https://ad.doubleclick.net"> <meta name="template" content="Article" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>How Network Address Translation Works | HowStuffWorks</title><script> var viewingEnvironment = "prod"; var HSW = HSW || {}; window.HSW = HSW; HSW.env = viewingEnvironment; HSW.domain = 'howstuffworks'; HSW.site = 'HSW'; HSW.domainFormatted = "//www.howstuffworks.com"; HSW.domainApi = `${HSW.domainFormatted}`; HSW.staticHost = '//cdn.hswstatic.com'; HSW.assetHost = '//cdn-assets.hswstatic.com'; HSW.assetUrl = '//cdn-assets.hswstatic.com/lite/2941/'; HSW.dirHost = '//resize.hswstatic.com'; HSW.mediaHost = 'media.hswstatic.com'; HSW.mediaSrc = 'content.hswstatic.com'; HSW.imageRouter = ''; HSW.mp4Host = 'cdn-mp4.hswstatic.com'; HSW.bdsUrl = 'https://bd.howstuffworks.com/direct'; HSW.bdsProduct = 'hsw'; HSW.contentType = 'article'; HSW.subdomain = 'computer'; HSW.oneTrustSiteID = '17ee457c-e9a3-4e66-9b99-3c9e77442704';(function (w, n, m, l) {w[n] = w[n] || {};w[n][m] = w[n][m] || {};w[n][m][l] = w[n][m][l] || function (a, b) { (w[n][m].q = w[n][m].q || []).push([a, b]); }; })(window, 's1', 'DPL', 'log');function getCookie(c){var a=document.cookie,b=a.indexOf(" "+c+"=");-1==b&&(b=a.indexOf(c+"="));-1==b?a=null:(b=a.indexOf("=",b)+1,c=a.indexOf(";",b),-1==c&&(c=a.length),a=unescape(a.substring(b,c)));return a};function setCookie(n,v,ms,h,ss) {var e = "";if (ms) {var d = new Date();d.setTime(d.getTime() + ms);e = "; expires=" + d.toUTCString();}let nc = n + "=" + escape(v || "") + e + "; path=/; domain=" + (h || HSW.domain+".com");document.cookie = nc + (ss ? 'SameSite=' + ss : '');} </script><script src="//cdn-assets.hswstatic.com/lite/2941/js/vendor/alpine.v3.min.js" defer></script><script> "use strict";HSW.utilities={hashArgs:{},buildDir:function(e){return e.replace(HSW.staticHost,HSW.dirHost+"/w_300")},debugConsole:function(){var e="";if(""!==location.hash){var t=location.hash.substr(1).split("=");"c"===t[0]&&(e=t[1])}""!==e&&("ga-link-name"===e?HSW.utilities.loadScript("https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js",!0,function(){$("body").append('<div id="hsw-console" style="position: fixed; right: 0; bottom: 0; left: 0; padding:20px; background-color: #CCC; border-top: 4px solid #777; text-align: center; font-weight: 400; z-index: 100;"></div>');var e=$("#hsw-console");e.html("Hover over a link"),$("a").on("mouseenter",function(t){var n=$(this).parents().map(function(){return $(this).attr("data-track-gtm")}).get().reverse().join(" : ");n+=$(this).attr("data-track-gtm")?" : "+$(this).attr("data-track-gtm"):"",e.html(n)}).on("mouseleave",function(t){e.html("Hover over a link")})}):console.warn("### HSW debug console // Unknown name type"))},extend:function(e){e=e||{};for(var t=1;t<arguments.length;t++)if(arguments[t])for(var n in arguments[t])arguments[t].hasOwnProperty(n)&&(e[n]=arguments[t][n]);return e},firePageview:function(){dataLayer&&pageMetricsData&&(pageMetricsData.guid=HSW.utilities.generateGuid(),dataLayer.push({url:location.pathname+location.hash,event:"page-view"}))},generateGuid:function(){var e=(new Date).getTime(),t=Math.floor(1e5*Math.random());return(e.toString()+("000000"+t).slice(-5)).substr(0,18)},getQueryVar:function(e){for(var t=window.location.search.substring(1).split("&"),n=0;n<t.length;n++){var r=t[n].split("=");if(r[0]===e)return decodeURIComponent(r[1].replace(/\+/g," "))}return!1},getViewportWidth:function(){window;var e=document.documentElement;return Math.max(e.offsetWidth,e.clientWidth)},init:function(){HSW.utilities.docReady(function(){HSW.utilities.debugConsole(),HSW.utilities.lazyLoadElements(),window.onbeforeprint=function(){for(var e=document.getElementsByClassName("lazyload"),t=0;t<e.length;t++)HSW.utilities.exposeElement(e[t])}}),HSW.utilities.parseHash()},docReady:function(e){"loading"!=document.readyState?e():document.addEventListener("DOMContentLoaded",e)},delayLoad:function(e){window.addEventListener("scroll",function t(){window.removeEventListener("scroll",t),e()})},isMobile:function(){return HSW.utilities.getViewportWidth()<768},hasNewsletterCookie:function(){let e=["__smListBuilderShown","__smListBuilderOptOut","hsw_nl","hsw_nlsub"],t=!1;for(const n of e)if(!0==(t=null!==getCookie(n)))return!0;return!1},loadJson:function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onload=function(){if(this.status>=200&&this.status<400){var e=JSON.parse(this.response);t(e)}},n.onerror=function(){},n.send()},loadScript:function(e,t,n){var r=document.createElement("script");r.src=e,r.async=t,n&&(r.onload=n),document.head.appendChild(r)},loadScriptAsync:function(e){return new Promise(function(t,n){var r=document.createElement("script");r.src=e,r.async=!0,r.onload=function(){t()},r.onerror=function(){n(e)};var o=document.getElementsByTagName("script")[0];o.parentNode.insertBefore(r,o)})},parseHash:function(){if(""!==location.hash){var e=location.hash.substr(1).split("&");"ab"===e[0]&&(GACtest=e[1]),Array.prototype.forEach.call(e,function(e,t){if(-1!==e.indexOf("=")){var n=e.split("=");HSW.utilities.hashArgs[n[0]]=n[1]}})}},trimUrl:function(e){var t=e.split("?")[0].split("#")[0];if("/"===(t=t.replace(/^.*\/\/[^\/]+/,"")).charAt(0)&&(t=t.substr(1)),t.length>40&&(t=t.substr(t.length-40)),0===t.length){var n=location.hostname.split(".");t=n.length>2?n[0]:""}return t},exposeElement:function(e){if(e.classList.contains("loaded"))return;const t=e.tagName.toUpperCase();if(e.hasAttribute("data-background")){var n=e.getAttribute("style")||"",r=e.getAttribute("data-background");return void e.setAttribute("style","background-image: url("+r+"); "+n)}if("PICTURE"===t||"VIDEO"===t){var o=e.querySelectorAll("source"),i=e.querySelector("img");for(r=0;r<o.length;r++)o[r].hasAttribute("data-srcset")&&o[r].setAttribute("srcset",o[r].getAttribute("data-srcset")),o[r].hasAttribute("data-src")&&(o[r].src=o[r].dataset.src);i&&i.hasAttribute("data-src")&&i.setAttribute("src",i.getAttribute("data-src")),e.classList.add("loaded");var a=e.parentNode;return a.classList.contains("skeleton-box")&&a.classList.remove("skeleton-box"),void("VIDEO"===t&&e.load())}if("IMG"!==t&&"IFRAME"!==t)return void e.classList.add("loaded");const s=e=>{var t=e.getAttribute("data-src"),n=e.getAttribute("data-srcset");n&&e.setAttribute("srcset",n),t&&(e.setAttribute("src",t),e.classList.add("loaded"))};"IFRAME"===t?HSW.pq.add(()=>{s(e)}):s(e)},lazyLoadElements:function(e){var t=!!window.MSInputMethodContext&&!!document.documentMode;if("function"!=typeof IntersectionObserver||t)HSW.utilities.docReady(function(){for(var e=document.getElementsByClassName("lazyload"),t=0;t<e.length;t++)HSW.utilities.exposeElement(e[t])});else for(var n=new IntersectionObserver(function(e,t){for(var n=0;n<e.length;n++){var r=e[n];r.isIntersecting&&r.intersectionRatio>0&&(HSW.utilities.exposeElement(r.target),t.unobserve(r.target))}},{rootMargin:"200px 0px",threshold:.1}),r=(e=e||document.getElementsByClassName("lazyload"),0);r<e.length;r++)n.observe(e[r])},lazyLoadCallback:function(e,t,n){var r=!!window.MSInputMethodContext&&!!document.documentMode;if("function"!=typeof IntersectionObserver||r)return!1;if("function"!=typeof n)return!1;var o=parseInt(e)||0;return new IntersectionObserver(function(e,t){for(var r=0;r<e.length;r++){var o=e[r];o.isIntersecting&&o.intersectionRatio>0&&("requestAnimationFrame"in window?requestAnimationFrame(function(){n(o.target)}):n(o.target),t.unobserve(o.target))}},{rootMargin:o+"px 0px",threshold:.1}).observe(t),!0}},HSW.utilities.init(),void 0===Array.prototype.contains&&(Array.prototype.contains=function(e){for(var t=this.length;t--;)if(this[t]===e)return!0;return!1}),String.prototype.includes||(String.prototype.includes=function(e,t){if(e instanceof RegExp)throw TypeError("first argument must not be a RegExp");return void 0===t&&(t=0),-1!==this.indexOf(e,t)}),HSW.pq={queue:[],namedQueues:{ads:{queue:[],released:!1}},add:function(e,t){if("function"==typeof e)if(userData.consentGranted)e();else if(t){if(void 0===HSW.pq.namedQueues[t])return void console.error("Unknown named privacy queue.");HSW.pq.namedQueues[t].released?e():HSW.pq.namedQueues[t].queue.push(e)}else HSW.pq.queue.push(e);else console.warn("Only functions can be queued in privacy mgmt.")},release:function(e){const t=e=>{for(;e.length>0;){var t=e.shift();if("function"==typeof t)try{t()}catch(e){console.error(e)}}};if(e&&void 0!==HSW.pq.namedQueues[e])t(HSW.pq.namedQueues[e].queue),HSW.pq.namedQueues[e].released=!0;else{t(HSW.pq.queue);for(const e in HSW.pq.namedQueues)HSW.pq.namedQueues[e].released=!0,t(HSW.pq.namedQueues[e].queue)}}},HSW.ab=function(){var e,t,n,r,o={},i=/#!dev/,a="_easyab_seed";function s(t){var n;return r?(n=999*Math.random(),u(a,n,30)):(e||(e=function(){var e=c(a);e||(e=999*Math.random(),u(a,e,30));return e}()),n=e),Math.floor(n%t)}function u(e,t,n){if(n){var r=new Date;r.setTime(r.getTime()+60*n*1e3);var o="; expires="+r.toGMTString()}else o="";var i="string"==typeof HSW.domain?HSW.domain:"howstuffworks";document.cookie=e+"="+encodeURI(t)+o+"; domain=."+i+".com;path=/"}function c(e){for(var t=e+"=",n=document.cookie.split(";"),r=0;r<n.length;r++){for(var o=n[r];" "==o.charAt(0);)o=o.substring(1,o.length);if(0==o.indexOf(t))return o.substring(t.length,o.length)}return null}return o.easyab=function(e){return e&&"object"==typeof e&&navigator.cookieEnabled?void(e.name&&e.alternatives&&(r=i.test(window.location),0!==(n=s(e.alternatives.length+1))&&(t=e.alternatives[n-1],function(){if(t.alternative){var e=t.alternative;"function"==typeof e&&e()}}()))):this},o.tracksession=function(){pageMetricsData.abs=GACtest,c("hsw_abs")&&c("hsw_abs")==pageMetricsData.abs||u("hsw_abs",pageMetricsData.abs,30)},o.readCookie=function(e){return c(e)},o}(); !function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);var r,i=function(){return window.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]},o=function(e){if("loading"===document.readyState)return"loading";var t=i();if(t){if(e<t.domInteractive)return"loading";if(0===t.domContentLoadedEventStart||e<t.domContentLoadedEventStart)return"dom-interactive";if(0===t.domComplete||e<t.domComplete)return"dom-content-loaded"}return"complete"},a=function(e){var t=e.nodeName;return 1===e.nodeType?t.toLowerCase():t.toUpperCase().replace(/^#/,"")},c=function(e,t){var n="";try{for(;e&&9!==e.nodeType;){var r=e,i=r.id?"#"+r.id:a(r)+(r.classList&&r.classList.value&&r.classList.value.trim()&&r.classList.value.trim().length?"."+r.classList.value.trim().replace(/\s+/g,"."):"");if(n.length+i.length>(t||100)-1)return n||i;if(n=n?i+">"+n:i,r.id)break;e=r.parentNode}}catch(e){}return n},u=-1,d=function(){return u},s=function(e){addEventListener("pageshow",(function(t){t.persisted&&(u=t.timeStamp,e(t))}),!0)},f=function(){var e=i();return e&&e.activationStart||0},l=function(e,t){var n=i(),r="navigate";return d()>=0?r="back-forward-cache":n&&(document.prerendering||f()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v3-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},p=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},v=function(e,t,n,r){var i,o;return function(a){t.value>=0&&(a||r)&&((o=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=o,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,n),e(t))}},m=function(e){var t=function(t){"pagehide"!==t.type&&"hidden"!==document.visibilityState||e(t)};addEventListener("visibilitychange",t,!0),addEventListener("pagehide",t,!0)},g=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},y=(new Date,0),_=1/0,h=0,b=function(e){e.forEach((function(e){e.interactionId&&(_=Math.min(_,e.interactionId),h=Math.max(h,e.interactionId),y=h?(h-_)/7+1:0)}))},T=function(){return r?y:performance.interactionCount||0},E=function(){"interactionCount"in performance||r||(r=p("event",b,{type:"event",buffered:!0,durationThreshold:0}))},S=[200,500],L=0,C=function(){return T()-L},I=[],P={},w=function(e){var t=I[I.length-1],n=P[e.interactionId];if(n||I.length<10||e.duration>t.latency){if(n)n.entries.push(e),n.latency=Math.max(n.latency,e.duration);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};P[r.id]=r,I.push(r)}I.sort((function(e,t){return t.latency-e.latency})),I.splice(10).forEach((function(e){delete P[e.id]}))}};try{!function(e,t){!function(e,t){t=t||{},g((function(){var n;E();var r,i=l("INP"),o=function(e){e.forEach((function(e){e.interactionId&&w(e),"first-input"===e.entryType&&!I.some((function(t){return t.entries.some((function(t){return e.duration===t.duration&&e.startTime===t.startTime}))}))&&w(e)}));var t,n=(t=Math.min(I.length-1,Math.floor(C()/50)),I[t]);n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())},a=p("event",o,{durationThreshold:null!==(n=t.durationThreshold)&&void 0!==n?n:40});r=v(e,i,S,t.reportAllChanges),a&&("interactionId"in PerformanceEventTiming.prototype&&a.observe({type:"first-input",buffered:!0}),m((function(){o(a.takeRecords()),i.value<0&&C()>0&&(i.value=0,i.entries=[]),r(!0)})),s((function(){I=[],L=T(),i=l("INP"),r=v(e,i,S,t.reportAllChanges)})))}))}((function(t){!function(e){if(e.entries.length){var t=e.entries.sort((function(e,t){return t.duration-e.duration||t.processingEnd-t.processingStart-(e.processingEnd-e.processingStart)}))[0];e.attribution={eventTarget:c(t.target),eventType:t.name,eventTime:t.startTime,eventEntry:t,loadState:o(t.startTime)}}else e.attribution={}}(t),e(t)}),t)}((function({name:e,value:t,id:n,attribution:r}){const{eventEntry:i,eventTarget:o,eventType:a,loadState:c}=r,{startTime:u,processingStart:d,processingEnd:s,duration:f,interactionId:l}=i,p={metric_inp_value:t,metric_id:n,metric_inp_event_target:o,metric_inp_event_type:a,metric_inp_load_state:c,metric_inp_start_time:u,metric_inp_processing_start:d,metric_inp_processing_end:s,metric_inp_duration:f,metric_inp_interaction_id:l};dataLayer.push({event:"raw-event",eventCategory:"CWV:INP",eventAction:p.metric_inp_event_type,eventLabel:p.metric_inp_event_target,eventValue:p.metric_inp_value})}))}catch(e){}}]); </script> <script>var userData = { country : 'SG'.toUpperCase(), checkConsent : false, userInEU : false, consentGranted : false, doNotSell : false, showConsentLink : false, adsActive : true }; var adUnit = ''; adUnit += "hsw_lite"; adUnit += "|tech"; adUnit += "|computer"; adUnit += "|computerhardware"; if (!HSW.utilities.isMobile()) {adUnit = adUnit.replace("hsw_lite", "hsw"); } var pvId = HSW.utilities.generateGuid(); var sessionId = getCookie('hsw_sid'); if (sessionId === false) { sessionId = pvId; var e = 6.307e+10; setCookie('hsw_sid', sessionId, e); }const searchTagCookie = getCookie('searchTag'); const searchTagQS = HSW.utilities.getQueryVar('srch_tag'); const searchTag = searchTagQS || searchTagCookie || ''; var pageMetricsData = { guid : pvId, sessionId : sessionId, href : "https://computer.howstuffworks.com/nat.htm", title : "NAT\u003A\u0020How\u0020Network\u0020Address\u0020Translation\u0020Works", tax : "hsw/tech/computer/computer hardware/networking", aType : "editorial content", cType : "Article-continuous", continuousUX: true, template : "Article", country : "SG", sponsor : "", source : "hsw", author : "jeff tyson", show : "", pubDate : "2001-02-02", editDate : "2024-03-25", targetKeywords : "true", newsAdjacent : "false", nsfw : "false", locale : "en-us", contentid : "8894", model : "article", view : "article/article.html", video : "", totalPages : 13, page : 1, codebase : 'hsw-lite', searchTag : searchTag, abs : (getCookie('hsw_abs') ? getCookie('hsw_abs') : '' ), viewport : HSW.utilities.getViewportWidth(), mkcpgn : 'organic', utmSource : '', adUnit : (adUnit ? adUnit : 'n/a'), keywords : "network\u0020address\u0020translation,\u0020nat,\u0020nat\u0020system,\u0020ip\u0020address", domain : 'howstuffworks', subdomain : "computer",firePixels : (!userData.doNotSell && userData.consentGranted), docker : 'true', image : 'https://cdn.hswstatic.com/gif/nat-router.jpg', cost : '0', origin : 'None', channel : "Tech", category : "Computer", node : "Networking", affinities : "FAQ2, Target-Keyword", }; var GACtest = getCookie('hsw_abs') || ''; HSW.analytics={attributeTraffic:async function(){return await HSW.analytics.getQueryStringKeyValues()},getQueryStringKeyValues:function(){let e={utmSource:{qs:"utm_source",persist:"hswtrkr"},searchTag:{qs:"srch_tag",persist:"searchTag"},mkcpgn:{qs:"mkcpgn",persist:"mkcpgn"},account_id:{qs:"utm_acid",persist:"_hsw_aid"},campaign_id:{qs:["utm_caid","campaign_id"],persist:"_hsw_cid"},utm_campaign:{qs:"utm_campaign",persist:"_hsw_c"},asid:{qs:["utm_agid","asid"],persist:"_hsw_agid"},adgroup:{qs:["adgroup","utm_content"],persist:"_hsw_ag"},placement:{qs:["utm_traffictype","placement"],persist:"_hsw_pl"},gclid:{qs:"gclid",persist:"_hsw_gclid"},gclidtimestamp:{qs:function(){let e=new Date;return e.setSeconds(e.getSeconds()+30),e.getUTCFullYear()+"-"+("0"+(e.getUTCMonth()+1)).slice(-2)+"-"+("0"+e.getUTCDate()).slice(-2)+" "+("0"+e.getUTCHours()).slice(-2)+":"+("0"+e.getUTCMinutes()).slice(-2)+":"+("0"+e.getUTCSeconds()).slice(-2)},persist:"_hsw_ts"}};var t={};return Object.entries(e).forEach(function(e){const[s,i]=e,{qs:a,persist:r}=i;if("function"==typeof a){let e=getCookie(r);return e||(e=a()),setCookie(r,e,18e5),void(t[s]=e)}if(a instanceof Array)for(var c="",n=0;n<a.length&&!(c=HSW.utilities.getQueryVar(a[n]));n++);else c=HSW.utilities.getQueryVar(a);let g=getCookie(r),u=g||c;u&&(g||setCookie(r,c.replace(/[^\w\-\.\+]/gi,""),18e5),t[s]=u)}),t}}; HSW.pq.add(function() { window.trafficAttributed = HSW.analytics.attributeTraffic(); window.trafficAttributed.then(function (keyValues) { Object.entries(keyValues).forEach(function ([k, v]) { pageMetricsData[k] = v; }); }); }); if (typeof HSW.utilities.hashArgs['ab'] !== 'undefined') { GACtest = HSW.utilities.hashArgs['ab']; } let testingEnabled = true; if (typeof HSW.utilities.hashArgs['testing'] !== 'undefined') { testingEnabled = false; } if (testingEnabled && HSW.site === 'HSW' && (GACtest === '' || !['EXPO1922_CONTROL','EXPO1922_ABOVE_TITLE', 'EXPO1922_BELOW_IMAGE'].contains(GACtest))) { GACtest = 'EXPO1922_CONTROL'; HSW.ab.easyab({'slot': 1,'name': 'GACtest','alternatives': [ {'alternative':function() { GACtest = 'EXPO1922_ABOVE_TITLE'; } }, {'alternative':function() { GACtest = 'EXPO1922_BELOW_IMAGE'; } } ] }); } HSW.ab.tracksession(); document.addEventListener('DOMContentLoaded', function() { const isMobile = HSW.utilities.isMobile(); if (GACtest === 'EXPO1922_CONTROL') { let rsocClasses = ['.rsoc-after-lead', '.rsoc-above-title']; // Delete all RSOC slots Object.keys(rsocClasses).forEach(function(rsocClass) { let rsocSlot = document.querySelector(rsocClasses[rsocClass]); if (rsocSlot) { rsocSlot.remove(); } }); return; } let rsocClass = GACtest === 'EXPO1922_ABOVE_TITLE' ? '.rsoc-after-lead' : '.rsoc-above-title'; var rsocSlot = document.querySelector(rsocClass); if (rsocSlot) { rsocSlot.remove(); } // Remove primary slot if it's disqualified (desktop rendering inset lead image) if (GACtest === 'EXPO1922_BELOW_IMAGE') { let primarySlotHero = document.querySelector('.primary-slot.hero.rsoc-after-lead'); let primarySlotInset = document.querySelector('.primary-slot.inset.rsoc-after-lead'); let secondarySlot = document.querySelector('.secondary-slot.rsoc-after-lead'); if (isMobile) { if ((primarySlotHero || primarySlotInset) && secondarySlot) { secondarySlot.remove(); } } else { if (primarySlotInset && secondarySlot) { primarySlotInset.remove(); } if (primarySlotHero && secondarySlot) { secondarySlot.remove(); } } } }); var _0x23b3=['GET','utilities','bds','&session_id=','template','log','site','DPL','BotDetectionResult','country','&platform=','userInEU','_ga','location','fullVersionList','mobile','architecture','platformVersion','hashArgs','BDS_DONE','error','open','&domain=','status','model','dispatchEvent','send','add','href','object','desktop','bdsData','bds:\x20','&cookie=','parse','bds:\x20connection\x20error','?product_line=','off','env','platform','userAgentData','getHighEntropyValues','adsActive','hsw'];(function(_0x5b8bb9,_0x23b3f2){var _0x119bd0=function(_0x51a3af){while(--_0x51a3af){_0x5b8bb9['push'](_0x5b8bb9['shift']());}};_0x119bd0(++_0x23b3f2);}(_0x23b3,0x1e4));var _0x119b=function(_0x5b8bb9,_0x23b3f2){_0x5b8bb9=_0x5b8bb9-0x0;var _0x119bd0=_0x23b3[_0x5b8bb9];return _0x119bd0;};function userAgent(){return navigator['userAgentData']['getHighEntropyValues']([_0x119b('0x10'),_0x119b('0x18'),_0x119b('0x11'),_0x119b('0xe')])['then'](function(_0x299402){return{'platform':_0x299402[_0x119b('0x27')],'platformVersion':_0x299402[_0x119b('0x11')],'model':_0x299402[_0x119b('0x18')],'mobile':_0x299402[_0x119b('0xf')],'fullVersionList':_0x299402[_0x119b('0xe')]};},function(_0x32aa73){return{};});}(async function(){let _0x54997a={};if(typeof navigator['userAgentData']===_0x119b('0x1d')){if(typeof navigator[_0x119b('0x28')][_0x119b('0x29')]==='function'){_0x54997a=await userAgent();}}const _0x2c996f=()=>{if(HSW[_0x119b('0x1')][_0x119b('0x12')][_0x119b('0x2')]==_0x119b('0x25')||!userData[_0x119b('0x2a')]||HSW[_0x119b('0x6')]=='MQ'){return;}let _0x1d681a=HSW[_0x119b('0x1')]['isMobile']()?_0x119b('0xf'):_0x119b('0x1e'),_0x53948f=pageMetricsData,_0x2b612a=getCookie(_0x119b('0xc'));let _0x51d750=_0x53948f['sessionId'],_0x5a39fe={'template':_0x53948f['template'],'uach':_0x54997a};let _0x23c571=HSW['bdsUrl']+_0x119b('0x24')+HSW['bdsProduct']+(!isNaN(parseFloat(_0x51d750))&&isFinite(_0x51d750)?_0x119b('0x3')+_0x51d750:'')+_0x119b('0x16')+encodeURIComponent(window[_0x119b('0xd')][_0x119b('0x1c')])+_0x119b('0xa')+_0x1d681a+'&extra_args='+JSON['stringify'](_0x5a39fe)+(_0x2b612a?_0x119b('0x21')+_0x2b612a:'');try{var _0x320fa1=new XMLHttpRequest();_0x320fa1[_0x119b('0x15')](_0x119b('0x0'),_0x23c571,!![]);_0x320fa1['onload']=function(){if(this['status']>=0xc8&&this[_0x119b('0x17')]<0x190){var _0x48e2db=JSON[_0x119b('0x22')](this['response']);window['s1'][_0x119b('0x7')][_0x119b('0x5')]({'event':_0x119b('0x8'),'product':_0x119b('0x2b'),'payload':{'environment':HSW[_0x119b('0x26')],'score':_0x48e2db['traffic_score'],'vertical':_0x53948f['subdomain'],'template':_0x53948f[_0x119b('0x4')],'country':userData[_0x119b('0x9')],'userInEU':userData[_0x119b('0xb')]}});window[_0x119b('0x1f')]=_0x48e2db;var _0x4647ab=new CustomEvent(_0x119b('0x13'),{'detail':_0x48e2db});}else{var _0x4647ab=new CustomEvent(_0x119b('0x13'));}document['dispatchEvent'](_0x4647ab);};_0x320fa1['onerror']=function(){console[_0x119b('0x14')](_0x119b('0x23'));var _0x1e845d=new CustomEvent(_0x119b('0x13'));document[_0x119b('0x19')](_0x1e845d);};_0x320fa1[_0x119b('0x1a')]();}catch(_0x3fa51a){console[_0x119b('0x14')](_0x119b('0x20')+_0x3fa51a);var _0xd9612e=new CustomEvent(_0x119b('0x13'));document['dispatchEvent'](_0xd9612e);}};HSW['pq'][_0x119b('0x1b')](_0x2c996f);}()); adsbygoogle=window.adsbygoogle||[];var dataLayer=dataLayer||[];function loadHswCmp(){function e(e){const t=HSW.oneTrustSiteID+("prod"!==HSW.env?"-test":""),o=document.createElement("script");o.type="text/javascript",o.src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js",o.dataset.domainScript=t,e&&(o.dataset.async=e);const n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(o,n)}if(userData.userInEU||"BR"===userData.country){const t="BR"===userData.country?"BR":"EU";document.cookie.indexOf("gdpr_opt_in=1")>=0?(HSW.cmp.log(t+" user that has already provided consent."),userData.consentGranted=!0,e(!0),HSW.pq.release()):document.cookie.indexOf("gdpr_opt_in=0")>=0?(HSW.cmp.log(t+" user has not consented previously."),e(),HSW.pq.release("ads")):(HSW.cmp.log("New "+t+" user. Pull down CMP and init it."),e()),userData.showConsentLink=!0}else{["IN","PH","NG","PK","ID","GH","BD","TR","LK","RU","VN","EG","JM","CN","TT","IR"].contains(userData.country)&&(userData.adsActive=!1);const t="US"===userData.country?getCookie("usprivacy"):"",o=getCookie("OneTrustWPCCPAGoogleOptOut"),n=navigator.globalPrivacyControl;document.cookie.indexOf("gdpr_opt_in=0")>=0||"1YY-"===t||"1YYN"===t||"true"===o||n?(HSW.cmp.log("Detected opt-out user with consent withdrawn"),HSW.pq.release("ads")):(HSW.cmp.log("Opt-out user that has granted consent"),"undefined"!=typeof pageMetricsData&&(pageMetricsData.firePixels=!0),dataLayer.push({event:"fire-pixels"}),userData.consentGranted=!0,HSW.pq.release()),userData.showConsentLink=!0,e(!0),"US"===userData.country&&function(){const e=document.createElement("script");e.type="text/javascript",e.src="https://cdn.cookielaw.org/opt-out/otCCPAiab.js",e.setAttribute("ccpa-opt-out-ids","C0004"),e.setAttribute("ccpa-opt-out-geo","All"),e.setAttribute("ccpa-opt-out-lspa","false");const t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}}(userData.userInEU||"US"===userData.country||""===userData.country)&&(adsbygoogle.pauseAdRequests=1),HSW.cmp={clearTrackingData:function(){const e=["gdpr_opt_in","usprivacy","hsw_abs","_easyab_seed","euconsent-v2","eupubconsent-v2","OptanonAlertBoxClosed","OptanonConsent","OneTrustWPCCPAGoogleOptOut"],t=[window.location.hostname,HSW.domain+".com"],o=/([a-z0-9]+\.[a-z0-9]+)$/.exec(location.hostname);t.push(o[0]);const n=e=>{HSW.cmp.log("deleteCookie = ",e);for(const o in t)"function"!=typeof t[o]&&(setCookie(e,"",-1e5,t[o]),setCookie(e,"",-1e5,t[o],"Lax"))};(()=>{const o=(()=>{const e={},t=document.cookie.split(";");for(let o=0;o<t.length;o++){const n=t[o].split("=");e[n[0].trim()]=n[1]}return e})();HSW.cmp.log("processCookies"),HSW.cmp.log("cookie domains = ",t);for(const t in o)e.includes(t)||n(t)})(),(()=>{const t=Object.getOwnPropertyDescriptor(Document.prototype,"cookie")||Object.getOwnPropertyDescriptor(HTMLDocument.prototype,"cookie");t&&t.configurable&&Object.defineProperty(document,"cookie",{get:function(){return t.get.call(window.document)},set:function(o){var n=o.split("=")[0];return e.includes(n)?(HSW.cmp.log("SET_COOKIE_ALLOWED:"+o),t.set.call(window.document,o)):HSW.cmp.log("SET_COOKIE_NOT_ALLOWED:"+o),!0}})})(),window.localStorage.clear();try{document.querySelector(".hsw-page").classList.remove("leaderboard-sticky")}catch(e){}},log:function(e,t){window.location.search.indexOf("cmp_debug=true")<0||(void 0!==t?console.log("CMP: "+e,t):console.log("CMP: "+e))}},window.OptanonWrapper=(()=>{window.OneTrust.OnConsentChanged(()=>{HSW.cmp.log("window.OnetrustActiveGroups = ",window.OnetrustActiveGroups),window.OnetrustActiveGroups.includes("C0001")&&window.OnetrustActiveGroups.includes("C0002")&&window.OnetrustActiveGroups.includes("C0003")&&window.OnetrustActiveGroups.includes("C0004")?(setCookie("gdpr_opt_in","1"),dataLayer.push({event:"fire-pixels"}),userData.consentGranted=!0,HSW.pq.release()):(setCookie("gdpr_opt_in","0"),HSW.pq.release("ads"))})}),function(){if(2===userData.country.length)return void loadHswCmp();HSW.cmp.log("User Country not present. Using GEOIP endpoint.");const e="prod"==HSW.env?"/geoip":"https://www.howstuffworks.com/geoip";try{const t=performance.now();fetch(e).then(e=>e.json()).then(e=>{const o=performance.now();if(dataLayer.push({event:"raw-event",eventCategory:"performance",eventAction:"geoip",eventValue:Math.floor(o-t)}),"string"==typeof e.country&&2==e.country.length){userData.country=e.country.toUpperCase(),-1!=["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","GB"].indexOf(userData.country)&&(HSW.cmp.log("GEOIP User (treated as) in EU."),userData.checkConsent=!0,userData.userInEU=!0)}else HSW.cmp.log("GEOIP data = ",e),HSW.cmp.log("GEOIP returned invalid Country data. default to US."),userData.country="US";loadHswCmp()})}catch(e){userData.country="US",loadHswCmp()}}(); </script> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1" /> <meta http-equiv="content-language" content="en-us" /> <link rel="canonical" href="https://computer.howstuffworks.com/nat.htm" /> <meta name="twitter:dnt" content="on"><meta name="google-adsense-account" content="sites-9053884276298326"> <meta property="og:title" content="NAT: How Network Address Translation Works" /> <meta property="og:url" content="https://computer.howstuffworks.com/nat.htm" /> <meta property="og:site_name" content="HowStuffWorks" /> <meta property="og:description" content="If you&#039;re reading this via the Internet you&#039;re probably using Network Address Translation (NAT). NAT helps reuse IP addresses and improve security - find out how it works!" /> <meta property="fb:admins" content="100001675325868" /> <meta property="fb:app_id" content="899104866837181" /> <meta property="fb:pages" content="20767777944"> <meta property="og:image" content="https://cdn.hswstatic.com/gif/nat-router.jpg" /> <meta property="og:image:width" content="400" /> <meta property="og:image:height" content="146" /> <meta property="og:type" content="article" /> <meta property="article:publisher" content="https://www.howstuffworks.com" /> <meta property="article:published_time" content="2001-02-02T03:00:00-05:00" /> <meta property="article:author" content="https://www.howstuffworks.com/" /> <meta name="can-recommend" content="true" /> <meta name="category" contents="Tech/Computer/Computer Hardware/Networking" /> <script>var rampKeywords = "Tech, Computer, Computer Hardware, Networking";</script> <script type="application/ld+json"> { "@context": "https://schema.org", "@id": "https://www.howstuffworks.com/#organization", "@type": "Organization", "name": "HowStuffWorks", "url": "https://www.howstuffworks.com/", "logo": "https://cdn.hswstatic.com/gif/hsw-logo-120x90.jpg", "address" : { "@type" : "PostalAddress", "addressCountry" : "United States", "addressLocality" : "Marina Del Rey", "addressRegion" : "CA", "postalCode" : "90066", "streetAddress" : "4235 Redwood Ave." }, "email" : "mailto:site-support@howstuffworks.com", "sameAs": [ "https://www.youtube.com/user/HowStuffWorks", "https://www.instagram.com/howstuffworks/", "https://www.facebook.com/HowStuffWorks", "https://pinterest.com/howstuffworks/", "https://tumblr.com/blog/howstuffworks", "https://www.linkedin.com/company/15689/", "https://flipboard.com/@HowStuffWorks" ] } </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@id": "https://www.howstuffworks.com/#website", "@type": "WebSite", "name": "HowStuffWorks", "url": "https://www.howstuffworks.com/", "potentialAction": { "@type": "SearchAction", "target" : "https://s.howstuffworks.com/serp?q={search_term}", "query-input" : "required name=search_term" } } </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "NAT: How Network Address Translation Works", "image": "https://cdn.hswstatic.com/gif/nat-router.jpg", "datePublished": "2024-03-25T10:23:15-04:00", "dateModified" : "2024-03-25T10:23:15-04:00", "description": "If you&#039;re reading this via the Internet you&#039;re probably using Network Address Translation (NAT). NAT helps reuse IP addresses and improve security - find out how it works!", "author" : { "@type" : "Person", "name" : "Jeff Tyson" }, "publisher" : { "@type" : "Organization", "name" : "HowStuffWorks", "logo" : { "@type" : "ImageObject", "url" : "https://cdn.hswstatic.com/gif/hsw-logo-120x90.jpg", "width" : "120", "height" : "90" } }, "mainEntityOfPage" : "https://computer.howstuffworks.com/nat.htm", "Speakable" : { "@type" : "SpeakableSpecification", "cssSelector" : [".se > p, h2.se, .se > h3, .se > ul, .se > ol, .se > .blockquote"] } } </script> <meta name="description" content="Network Address Translation helps improve security by reusing IP addresses. Learn about Network Address Translation and NAT security." /> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; let prebidBuild = 'latest'; let prebidSpace = 'builds'; let prebidUrl = `https://d2t953dxm5i0o5.cloudfront.net/superstack/${prebidSpace}/${prebidBuild}/howstuffworks.com/`; prebidUrl += HSW.utilities.isMobile() ? 'hybrid_mobile/ads.min.js' : 'hybrid/ads.min.js';HSW.pq.add(() => { if (userData.adsActive) { let scannerUrl = 'https://cdn.confiant-integrations.net/pHPvSpQO-XGQYVzc6Cn_XOsV4Tc/gpt_and_prebid/config.js'; HSW.utilities.loadScript(scannerUrl, false, () => { HSW.utilities.loadScript('https://securepubads.g.doubleclick.net/tag/js/gpt.js'); window.prebidPromise = HSW.utilities.loadScriptAsync(prebidUrl); window.apsPromise = HSW.utilities.loadScriptAsync('https://c.amazon-adsystem.com/aax2/apstag.js'); }); } else { dataLayer.push({ 'event' : 'raw-event', 'eventCategory' : 'ad-request', 'eventAction' : 'disabled', 'eventLabel' : userData.country }); } }, 'ads'); function deferLoadGTM () { if (HSW.utilities.hashArgs['gtm'] === 'off') { return; } try { window.s1.DPL.init({ session: { business : 'publishing:hsw' }, ga: { gaMeasurementId: 'UA-42379829-2', gtmId: 'GTM-NXHP8V', isEnabled: true, onPrimaryClientIdReady: (clientId) => { console.log(`Synced clientId(${clientId}) and loaded gtmjs using DPL.init`); } }, taps: { isEnabled: false } }); } catch (e) { console.error('### DPL.loadGa failed with error: ', e); } } HSW.pq.add(() => { const dplVer = '4.7.3'; HSW.utilities.loadScript('https://s.flocdn.com/@s1/dpl/' + dplVer + '/dpl-hsw.js', true, deferLoadGTM); }); var dfpSettings = {}; dfpSettings.networkCode = 108939068; dfpSettings.pid = "8894-0"; dfpSettings.hswpid = "8894"; dfpSettings.type = pageMetricsData.cType; dfpSettings.kw = ""; dfpSettings.slotPath = "/108939068/hswcore_lite/"; dfpSettings.slotPath += "tech"; dfpSettings.s1 = "tech"; dfpSettings.s2 = "computer"; dfpSettings.s3 = "computerhardware"; dfpSettings.s4 = "networking"; dfpSettings.isMobile = HSW.utilities.isMobile(); dfpSettings.isOrganic = true;dfpSettings.allow_adx = 'true'; if (!dfpSettings.isMobile) { dfpSettings.slotPath = dfpSettings.slotPath.replace("hswcore_lite", "hswcore"); } // did user come from a newsletter link var nlSource = HSW.utilities.getQueryVar('utm_source') || ''; var nlTrkr = getCookie('hswtrkr') || ''; var fromNl = (nlSource.includes('Newsletter') || nlTrkr.includes('Newsletter')); </script> <link rel="preload" href="https://s.flocdn.com/@s1/ads-coordinator/8.6.4/index.js" as="script"> <style> /*! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder, textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:optional;src:local("Roboto"),local("Roboto-Regular"),url(https://cdn.hswstatic.com/fonts/roboto-v20-latin-regular.woff2) format("woff2")}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:optional;src:local("Roboto Bold"),local("Roboto-Bold"),url(https://cdn.hswstatic.com/fonts/roboto-v20-latin-700.woff2) format("woff2")}body{font-size:16px;line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased}@media print{body{font-family:sans-serif}}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}@media (min-width:1600px){.container{max-width:1600px}}.aspect-h-9{--tw-aspect-h:9}.aspect-w-16{position:relative;padding-bottom:calc(var(--tw-aspect-h)/var(--tw-aspect-w)*100%);--tw-aspect-w:16}.aspect-w-16>*{position:absolute;height:100%;width:100%;top:0;right:0;bottom:0;left:0}.theme-hsw{--color-primary:#1573a6;--color-accent-1:#168381;--color-accent-2:#2b2b5c;--color-accent-3:#ede8de;--color-accent-4:#151538;--color-accent-5:#776541;--color-grad-1:#2b2b5c;--color-grad-2:#1b6193;--color-grad-3:#1573a6;--color-grad-4:#1ea2a0;--color-grad-5:#1ea2a0;--color-quiz-error:#cb2020;--color-quiz-success:#067a3c}.theme-zoo{--color-primary:#2a9ffb;--color-accent-1:#196cab;--color-accent-2:#333;--color-accent-3:#ededed;--color-accent-4:#7120a5;--color-accent-5:#ccc;--color-grad-1:#ca0cb2;--color-grad-2:#cd15b4;--color-grad-3:#7120a5;--color-grad-4:#7e12e3;--color-grad-5:#2a9ffb;--color-quiz-error:#cb2020;--color-quiz-success:#288341}.theme-mq{--color-primary:#2b8444;--color-accent-1:#37a857;--color-accent-2:#2b8444;--color-accent-3:#ededed;--color-accent-4:#333;--color-accent-5:#ccc;--color-grad-1:#000;--color-grad-2:#333;--color-grad-3:#2b8444;--color-grad-4:#37a857;--color-grad-5:#91dea7;--color-quiz-error:#cb2020;--color-quiz-success:#067a3c}p{margin-bottom:1rem}a{color:var(--color-accent-1);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.25s;transition-timing-function:cubic-bezier(.4,0,.2,1)}a:hover{color:var(--color-accent-2)}pre{white-space:pre-wrap}[x-cloak]{display:none!important}img[src=""]{visibility:hidden}nav.navbar a:before{display:block;content:attr(data-text);font-weight:700;height:0;overflow:hidden;visibility:hidden}nav.navbar a:after{margin-top:-1px}.btn{display:inline-block;cursor:pointer;background-color:var(--color-accent-1);font-weight:700;text-transform:uppercase;transition-property:all;transition-duration:.25s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn,.btn:focus,.btn:hover,a:focus .btn,a:hover .btn{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn:focus,.btn:hover,a:focus .btn,a:hover .btn{background-color:var(--color-primary)}.btn:disabled{--tw-bg-opacity:1;background-color:rgb(119 119 119/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.animated-underline,.animated-underline-heavy{display:block;position:relative}.animated-underline-heavy.flex,.animated-underline.flex{display:flex}.animated-underline-heavy:after,.animated-underline:after{background-color:var(--color-accent-1);position:absolute;transition-property:all;transition-duration:.1s;transition-timing-function:ease-in-out;content:"";pointer-events:none;height:2px;width:0;left:50%;bottom:-10px}.animated-underline-heavy:after{height:4px;bottom:0;border-bottom:1px solid #333}.animated-underline-heavy:hover:after,.animated-underline:hover:after{width:100%;left:0}.card{position:relative;display:flex;min-height:20rem;flex-direction:column;justify-content:flex-end;background-size:cover;background-position:50%;background-repeat:no-repeat;padding:1.5rem 1.5rem 2rem}.animated-underline-heavy.card,.animated-underline.card{display:flex}@media (min-width:1280px){.card{padding:2rem 2rem 2.5rem;min-height:23.6875rem}}.card:before{position:absolute;left:0;top:0;height:100%;width:100%;content:"";background:linear-gradient(58deg,rgba(4,4,4,.9),rgba(4,4,4,.46) 77%,rgba(4,4,4,.15));transition:opacity .25s ease-in-out}.card:focus:before,.card:hover:before{opacity:.8}.divider:after{flex:1 1 0%;--tw-bg-opacity:1;background-color:rgb(234 234 234/var(--tw-bg-opacity));content:"";height:1px}.breadcrumb-item:after{position:absolute;top:0;color:var(--color-primary);content:"/";right:-1.2rem}.breadcrumb-item:last-child:after{content:none}.dot:before{position:relative;margin-left:.25rem;margin-right:.25rem;content:"\2022";font-style:normal;bottom:.0625em;line-height:1em;font-size:1.125em;vertical-align:middle}#ad-wrap-bannerTop{margin-left:auto;margin-right:auto;max-width:970px}.ad-sticky,.leaderboard-sticky .leaderboard-banner{top:0;text-align:center;position:sticky;z-index:999}.leaderboard-sticky .col-rail .sticky{top:250px}.ad-tag:not(#ad-div-inline1sponsor,#ad-div-inline2sponsor){text-align:center;line-height:0}.ad-tag:not(#ad-div-inline1sponsor,#ad-div-inline2sponsor)>div,.ad-tag:not(#ad-div-inline1sponsor,#ad-div-inline2sponsor) iframe{margin-left:auto;margin-right:auto}#content-well .editorial-body{word-break:break-word}#content-well .editorial-body p:not(.ad-disclaimer){margin-bottom:1.5rem;font-size:1.125rem;line-height:1.75}#content-well .sidebar-section p:last-child{margin-bottom:0}.editorial-body ul,ul.list{list-style-type:disc}.editorial-body ul,.page-body ol,ul.list{margin-bottom:1.5rem;list-style-position:inside;padding-inline-start:30px}.page-body ol{list-style-type:decimal}.editorial-body ul li,.page-body ol li{padding-bottom:.5rem;font-size:1.125rem}.ad-inline iframe{margin:0 auto}.sidebar-section{clear:both}.sidebar-section.loaded{background-image:url(https://cdn.hswstatic.com/en-us/hsw/img/memphis-pattern-tan.png)}.instagram-post iframe{margin:0 auto}.theme-hsw .bg-tan a{color:#127271}@media print{#editorial-body p:not(.ad-disclaimer){line-height:1.375}.sidebar-section{margin-left:auto;margin-right:auto;width:75%}.sidebar-section li,.sidebar-section p{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}}.imageBoxRight .credit{--tw-bg-opacity:1;background-color:rgb(237 232 222/var(--tw-bg-opacity));padding:.5rem 1rem;font-size:.75rem;text-transform:uppercase}.theme-hsw .imageBoxRight .credit a{color:#127271}.imageBoxRight .credit{display:table-caption;caption-side:bottom}.imageBoxRight .caption{--tw-bg-opacity:1;background-color:rgb(237 232 222/var(--tw-bg-opacity));padding:.5rem 1rem;font-size:.875rem}.theme-hsw .imageBoxRight .caption a{color:#127271}.imageBoxRight .caption{display:table-caption;caption-side:bottom}.imageBoxRight{margin-bottom:2rem;display:table;--tw-bg-opacity:1;background-color:rgb(237 232 222/var(--tw-bg-opacity))}.theme-hsw .imageBoxRight a{color:#127271}.imageBoxRight br{display:none}@media (min-width:768px){.imageBoxRight{float:left;margin-right:1rem;margin-bottom:1rem}}.editorial-body table{font-size:.87em;width:100%;border:2px solid var(--color-accent-1)}.editorial-body td,.editorial-body th{padding:2px 5px;border:1px solid var(--color-grad-5)}.editorial-body td p{margin-bottom:3px}.sideBoxRight{margin-bottom:2rem}.sideBoxRight td{--tw-bg-opacity:1;background-color:rgb(237 232 222/var(--tw-bg-opacity));padding:2rem}.theme-hsw .sideBoxRight td a{color:#127271}.sideBoxRight td{background-image:url(https://cdn.hswstatic.com/en-us/hsw/img/memphis-pattern-tan.png)}.sideBoxRight .titleBlue{margin-bottom:1rem;font-size:2.25rem}.sideBoxRight .body{font-size:1.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{top:0;bottom:0}.-left-12{left:-3rem}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.right-5{right:1.25rem}.top-0{top:0}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-14{top:3.5rem}.top-5{top:1.25rem}.top-56{top:56px}.top-99{top:99px}.top-n56{top:-56px}.z-10{z-index:10}.z-20{z-index:20}.order-1{order:1}.order-2{order:2}.clear-both{clear:both}.m-2{margin:.5rem}.m-4{margin:1rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-auto{margin-top:auto;margin-bottom:auto}.-ml-1{margin-left:-.25rem}.-ml-2{margin-left:-.5rem}.-mt-2{margin-top:-.5rem}.-mt-24{margin-top:-6rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-8{margin-left:2rem}.mr-1{margin-right:.25rem}.mr-16{margin-right:4rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-6{margin-right:1.5rem}.mr-8{margin-right:2rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-11{margin-top:2.75rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.hidden{display:none}.h-12{height:3rem}.h-14{height:3.5rem}.h-24{height:6rem}.h-4{height:1rem}.h-44{height:11rem}.h-4px{height:4px}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-auto{height:auto}.h-full{height:100%}.min-h-24{min-height:24rem}.min-h-3{min-height:3rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-11\/12{width:91.666667%}.w-12{width:3rem}.w-4{width:1rem}.w-44{width:11rem}.w-5{width:1.25rem}.w-5\/6{width:83.333333%}.w-56{width:14rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.w-min{width:-moz-min-content;width:min-content}.min-w-225{min-width:225px}.min-w-3{min-width:3rem}.min-w-3\/4{min-width:75%}.min-w-300{min-width:300px}.max-w-500{max-width:500px}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-screen-xl{max-width:1280px}.flex-1{flex:1 1 0%}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.origin-top-right{transform-origin:top right}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-4{--tw-translate-y:1rem}.-rotate-90,.translate-y-4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate:-90deg}.rotate-180{--tw-rotate:180deg}.rotate-45,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate:45deg}.rotate-90{--tw-rotate:90deg}.-scale-100,.rotate-90{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-scale-100{--tw-scale-x:-1;--tw-scale-y:-1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fadein{0%{opacity:0}to{opacity:1}}.animate-fadein{animation:fadein .75s linear 0s}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}@keyframes wiggle{0%,to{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}.animate-wiggle{animation:wiggle .5s linear 0s 3}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-inside{list-style-position:inside}.list-outside{list-style-position:outside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-center{justify-items:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-scroll{overflow-x:scroll}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-b-5{border-bottom-width:5px}.border-l-0{border-left-width:0}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r-2{border-right-width:2px}.border-t-6{border-top-width:6px}.border-accent-5{border-color:var(--color-accent-5)}.border-gray{--tw-border-opacity:1;border-color:rgb(221 221 221/var(--tw-border-opacity))}.border-gray-dark{--tw-border-opacity:1;border-color:rgb(119 119 119/var(--tw-border-opacity))}.border-gray-light{--tw-border-opacity:1;border-color:rgb(234 234 234/var(--tw-border-opacity))}.border-green{--tw-border-opacity:1;border-color:rgb(30 162 160/var(--tw-border-opacity))}.border-light-gray{--tw-border-opacity:1;border-color:rgb(234 234 234/var(--tw-border-opacity))}.border-mid-gray{--tw-border-opacity:1;border-color:rgb(44 44 44/var(--tw-border-opacity))}.border-primary{border-color:var(--color-primary)}.border-quiz-gray-2{--tw-border-opacity:1;border-color:rgb(221 221 221/var(--tw-border-opacity))}.border-tan{--tw-border-opacity:1;border-color:rgb(237 232 222/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.bg-accent-1{background-color:var(--color-accent-1)}.bg-accent-2{background-color:var(--color-accent-2)}.bg-accent-3{background-color:var(--color-accent-3)}.bg-accent-4{background-color:var(--color-accent-4)}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-blue{--tw-bg-opacity:1;background-color:rgb(12 81 153/var(--tw-bg-opacity))}.bg-dark-blue{--tw-bg-opacity:1;background-color:rgb(21 21 56/var(--tw-bg-opacity))}.bg-gray{--tw-bg-opacity:1;background-color:rgb(221 221 221/var(--tw-bg-opacity))}.bg-gray-dark{--tw-bg-opacity:1;background-color:rgb(119 119 119/var(--tw-bg-opacity))}.bg-gray-darkest{--tw-bg-opacity:1;background-color:rgb(4 4 4/var(--tw-bg-opacity))}.bg-gray-light{--tw-bg-opacity:1;background-color:rgb(234 234 234/var(--tw-bg-opacity))}.bg-green{--tw-bg-opacity:1;background-color:rgb(30 162 160/var(--tw-bg-opacity))}.bg-light-blue{--tw-bg-opacity:1;background-color:rgb(40 161 216/var(--tw-bg-opacity))}.bg-light-gray{--tw-bg-opacity:1;background-color:rgb(234 234 234/var(--tw-bg-opacity))}.bg-lighter-gray{--tw-bg-opacity:1;background-color:rgb(247 247 247/var(--tw-bg-opacity))}.bg-mid-blue{--tw-bg-opacity:1;background-color:rgb(42 112 224/var(--tw-bg-opacity))}.bg-primary{background-color:var(--color-primary)}.bg-quiz-error{background-color:var(--color-quiz-error)}.bg-quiz-gray-1{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.bg-quiz-success{background-color:var(--color-quiz-success)}.bg-red{--tw-bg-opacity:1;background-color:rgb(230 31 31/var(--tw-bg-opacity))}.bg-royal-blue{--tw-bg-opacity:1;background-color:rgb(43 43 92/var(--tw-bg-opacity))}.bg-tan{--tw-bg-opacity:1;background-color:rgb(237 232 222/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-65{--tw-bg-opacity:0.65}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-escher-overlay{background-image:linear-gradient(102deg,rgba(43,43,92,.7),rgba(21,115,166,.7) 27%,rgba(21,114,165,.7) 76%,rgba(22,111,162,.7) 85%,rgba(21,115,166,.7) 89%,rgba(30,162,160,.7));}.bg-gradient-to-r{background-image:linear-gradient(90deg,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(0deg,var(--tw-gradient-stops))}.bg-hsw-gradient{background-image:linear-gradient(94deg,#2b2b5c,#1b6193 33%,#1573a6 50%,#1ea2a0 91%,#1ea2a0)}.bg-theme-gradient{background-image:linear-gradient(94deg,var(--color-grad-1),var(--color-grad-2) 33%,var(--color-grad-3) 50%,var(--color-grad-4) 91%,var(--color-grad-5))}.from-black{--tw-gradient-from:#000 var(--tw-gradient-from-position);--tw-gradient-to:transparent var(--tw-gradient-to-position)}.from-black,.from-royal-blue{--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-royal-blue{--tw-gradient-from:#2b2b5c var(--tw-gradient-from-position);--tw-gradient-to:rgba(43,43,92,0) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-scroll{background-attachment:scroll}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-current{fill:currentColor}.stroke-accent-1{stroke:var(--color-accent-1)}.stroke-current{stroke:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-7{padding:1.75rem}.p-8{padding:2rem}.px-11{padding-left:2.75rem;padding-right:2.75rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-14{padding-top:3.5rem}.pt-16{padding-top:4rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-headline{font-family:Lato,Roboto,sans-serif}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.text-8xl{font-size:6rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-sm{font-size:.875rem}.text-xl{font-size:1.25rem}.text-xs{font-size:.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-relaxed-more{line-height:1.75}.leading-tight{line-height:1.25}.leading-tighter{line-height:1.1}.text-accent-1{color:var(--color-accent-1)}.text-accent-2{color:var(--color-accent-2)}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-brown{--tw-text-opacity:1;color:rgb(119 101 65/var(--tw-text-opacity))}.text-dark-blue{--tw-text-opacity:1;color:rgb(21 21 56/var(--tw-text-opacity))}.text-dark-gray{--tw-text-opacity:1;color:rgb(4 4 4/var(--tw-text-opacity))}.text-gray-dark{--tw-text-opacity:1;color:rgb(119 119 119/var(--tw-text-opacity))}.text-gray-darker{--tw-text-opacity:1;color:rgb(73 82 89/var(--tw-text-opacity))}.text-gray-darkest{--tw-text-opacity:1;color:rgb(4 4 4/var(--tw-text-opacity))}.text-green{--tw-text-opacity:1;color:rgb(30 162 160/var(--tw-text-opacity))}.text-lighter-gray{--tw-text-opacity:1;color:rgb(247 247 247/var(--tw-text-opacity))}.text-mid-gray{--tw-text-opacity:1;color:rgb(44 44 44/var(--tw-text-opacity))}.text-primary{color:var(--color-primary)}.text-quiz-error{color:var(--color-quiz-error)}.text-quiz-success{color:var(--color-quiz-success)}.text-red-error{--tw-text-opacity:1;color:rgb(177 55 55/var(--tw-text-opacity))}.text-royal-blue{--tw-text-opacity:1;color:rgb(43 43 92/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-zoo-gray{--tw-text-opacity:1;color:rgb(42 46 56/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.placeholder-gray-dark::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(119 119 119/var(--tw-placeholder-opacity))}.placeholder-gray-dark::placeholder{--tw-placeholder-opacity:1;color:rgb(119 119 119/var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-53{opacity:.53}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px -1px rgba(0,0,0,0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -4px rgba(0,0,0,0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 8px 10px -6px rgba(0,0,0,0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline{outline-style:solid}.outline-offset-0{outline-offset:0}.outline-gray{outline-color:#ddd}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.ring-primary{--tw-ring-color:var(--color-primary)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,0.1)) drop-shadow(0 1px 1px rgba(0,0,0,0.06))}.drop-shadow,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-none{transition-property:none}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-opacity{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-250{transition-duration:.25s}.duration-300{transition-duration:.3s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-3{-webkit-line-clamp:3}.line-clamp-3,.line-clamp-4{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.line-clamp-4{-webkit-line-clamp:4}.\[shown\:1\]{shown:1}.h-50{height:50px}.h-90{height:90px}.h-200{height:200px}.h-275{height:275px}.h-max-90{max-height:90px}.h-max-200{max-height:200px}.h-max-250{max-height:250px}.h-max-600{max-height:600px}.h-min-90{min-height:90px}.h-min-200{min-height:200px}.h-min-250{min-height:250px}.h-min-400{min-height:400px}.h-min-600{min-height:600px}.h-min-1000{min-height:1000px}.w-168{width:168px}.w-300{width:300px}.w-1200{width:1200px}.w-1600{width:1600px}.w-max-1200{max-width:1200px}.w-max-1600{max-width:1600px}.z-999{z-index:999}.z-1050{z-index:1050}.image-mask{mask-image:linear-gradient(180deg,#000 50%,transparent);-webkit-mask-image:linear-gradient(180deg,#000 50%,transparent)}@media print{.image-mask{mask-image:none;-webkit-mask-image:none}}.before\:mr-2:before{content:var(--tw-content);margin-right:.5rem}.before\:h-4px:before{content:var(--tw-content);height:4px}.before\:flex-1:before{content:var(--tw-content);flex:1 1 0%}.before\:bg-green:before{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(30 162 160/var(--tw-bg-opacity))}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-0:after{content:var(--tw-content);left:0}.after\:top-full:after{content:var(--tw-content);top:100%}.after\:ml-2:after{content:var(--tw-content);margin-left:.5rem}.after\:h-4px:after{content:var(--tw-content);height:4px}.after\:h-5px:after{content:var(--tw-content);height:5px}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:flex-1:after{content:var(--tw-content);flex:1 1 0%}.after\:bg-green:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(30 162 160/var(--tw-bg-opacity))}.after\:bg-primary:after{content:var(--tw-content);background-color:var(--color-primary)}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.after\:bg-theme-gradient:after{content:var(--tw-content);background-image:linear-gradient(94deg,var(--color-grad-1),var(--color-grad-2) 33%,var(--color-grad-3) 50%,var(--color-grad-4) 91%,var(--color-grad-5))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.hover\:border-primary:hover{border-color:var(--color-primary)}.hover\:bg-accent-1:hover{background-color:var(--color-accent-1)}.hover\:bg-gray-light:hover{--tw-bg-opacity:1;background-color:rgb(234 234 234/var(--tw-bg-opacity))}.hover\:bg-green:hover{--tw-bg-opacity:1;background-color:rgb(30 162 160/var(--tw-bg-opacity))}.hover\:bg-lighter-gray:hover{--tw-bg-opacity:1;background-color:rgb(247 247 247/var(--tw-bg-opacity))}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:font-bold:hover{font-weight:700}.hover\:text-accent-1:hover{color:var(--color-accent-1)}.hover\:text-accent-4:hover{color:var(--color-accent-4)}.hover\:text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.hover\:text-green:hover{--tw-text-opacity:1;color:rgb(30 162 160/var(--tw-text-opacity))}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:text-royal-blue:hover{--tw-text-opacity:1;color:rgb(43 43 92/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:opacity-100:hover{opacity:1}.focus\:text-accent-1:focus{color:var(--color-accent-1)}.focus\:text-green:focus{--tw-text-opacity:1;color:rgb(30 162 160/var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus\:ring-royal-blue:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(43 43 92/var(--tw-ring-opacity))}.group:hover .group-hover\:flex{display:flex}.group:hover .group-hover\:bg-green{--tw-bg-opacity:1;background-color:rgb(30 162 160/var(--tw-bg-opacity))}.group:hover .group-hover\:bg-primary{background-color:var(--color-primary)}.group:hover .group-hover\:from-dark-blue{--tw-gradient-from:#151538 var(--tw-gradient-from-position);--tw-gradient-to:rgba(21,21,56,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.group:hover .group-hover\:text-green{--tw-text-opacity:1;color:rgb(30 162 160/var(--tw-text-opacity))}.group:hover .group-hover\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.group:focus .group-focus\:opacity-75,.group:hover .group-hover\:opacity-75{opacity:.75}@media (min-width:640px){.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:order-3{order:3}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:row-span-2{grid-row:span 2/span 2}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:mb-0{margin-bottom:0}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-3{margin-left:.75rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-screen{height:100vh}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:translate-y-0{--tw-translate-y:0px}.sm\:scale-100,.sm\:translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x:1;--tw-scale-y:1}.sm\:scale-95{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-fs-md{grid-template-columns:2fr 1fr}.sm\:grid-cols-fsr-md{grid-template-columns:1fr 2fr}.sm\:grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.sm\:grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.sm\:grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:gap-8{gap:2rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:align-middle{vertical-align:middle}.sm\:text-2xl{font-size:1.5rem}.sm\:text-sm{font-size:.875rem}.sm\:leading-5{line-height:1.25rem}.sm\:line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}}@media (min-width:768px){.md\:relative{position:relative}.md\:float-left{float:left}.md\:mx-0{margin-left:0;margin-right:0}.md\:mx-4{margin-left:1rem;margin-right:1rem}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:-mt-36{margin-top:-9rem}.md\:-mt-4{margin-top:-1rem}.md\:mb-0{margin-bottom:0}.md\:mb-4{margin-bottom:1rem}.md\:mb-8{margin-bottom:2rem}.md\:ml-0{margin-left:0}.md\:mr-6{margin-right:1.5rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-20{height:5rem}.md\:min-h-30{min-height:30rem}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:w-11\/12{width:91.666667%}.md\:w-2\/3{width:66.666667%}.md\:w-auto{width:auto}.md\:max-w-1014{max-width:1014px}.md\:flex-1{flex:1 1 0%}.md\:shrink{flex-shrink:1}.md\:shrink-0{flex-shrink:0}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.md\:grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-nowrap{flex-wrap:nowrap}.md\:items-stretch{align-items:stretch}.md\:justify-start{justify-content:flex-start}.md\:justify-center{justify-content:center}.md\:overflow-x-visible{overflow-x:visible}.md\:px-0{padding-left:0;padding-right:0}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:py-12{padding-top:3rem;padding-bottom:3rem}.md\:pb-0{padding-bottom:0}.md\:pr-10{padding-right:2.5rem}.md\:pt-0{padding-top:0}.md\:pt-6{padding-top:1.5rem}.md\:text-left{text-align:left}.md\:text-right{text-align:right}.md\:text-2xl{font-size:1.5rem}.md\:text-3xl{font-size:1.875rem}.md\:text-4xl{font-size:2.25rem}.md\:text-5xl{font-size:3rem}.md\:font-bold{font-weight:700}.md\:font-normal{font-weight:400}.md\:leading-tight{line-height:1.25}}@media (min-width:1024px){.lg\:order-3{order:3}.lg\:order-4{order:4}.lg\:order-5{order:5}.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:row-span-2{grid-row:span 2/span 2}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mx-6{margin-left:1.5rem;margin-right:1.5rem}.lg\:mx-8{margin-left:2rem;margin-right:2rem}.lg\:my-0{margin-top:0}.lg\:mb-0,.lg\:my-0{margin-bottom:0}.lg\:mb-11{margin-bottom:2.75rem}.lg\:mb-2{margin-bottom:.5rem}.lg\:mb-4{margin-bottom:1rem}.lg\:mb-8{margin-bottom:2rem}.lg\:ml-auto{margin-left:auto}.lg\:mr-0{margin-right:0}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-20{height:5rem}.lg\:min-h-2{min-height:2rem}.lg\:w-1\/2{width:50%}.lg\:w-1\/4{width:25%}.lg\:w-11\/12{width:91.666667%}.lg\:w-3\/4{width:75%}.lg\:w-auto{width:auto}.lg\:min-w-2{min-width:2rem}.lg\:min-w-300{min-width:300px}.lg\:max-w-195{max-width:195px}.lg\:max-w-xs{max-width:20rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-fs-lg{grid-template-columns:2fr 1fr 1fr}.lg\:grid-cols-fsr-lg{grid-template-columns:1fr 1fr 2fr}.lg\:grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.lg\:grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:items-stretch{align-items:stretch}.lg\:gap-8{gap:2rem}.lg\:gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.lg\:gap-y-6{row-gap:1.5rem}.lg\:self-start{align-self:flex-start}.lg\:p-8{padding:2rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-3{padding-top:.75rem;padding-bottom:.75rem}.lg\:py-4{padding-top:1rem;padding-bottom:1rem}.lg\:pr-4{padding-right:1rem}.lg\:pt-8{padding-top:2rem}.lg\:text-2xl{font-size:1.5rem}.lg\:text-4xl{font-size:2.25rem}.lg\:text-lg{font-size:1.125rem}.lg\:text-xl{font-size:1.25rem}}@media (min-width:1280px){.xl\:mb-4{margin-bottom:1rem}.xl\:mb-5{margin-bottom:1.25rem}.xl\:mb-8{margin-bottom:2rem}.xl\:block{display:block}.xl\:inline-block{display:inline-block}.xl\:flex{display:flex}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:p-8{padding:2rem}.xl\:px-10{padding-left:2.5rem;padding-right:2.5rem}.xl\:py-3{padding-top:.75rem;padding-bottom:.75rem}.xl\:pl-10{padding-left:2.5rem}.xl\:text-6xl{font-size:4rem}.xl\:text-base{font-size:1rem}.xl\:text-lg{font-size:1.125rem}.xl\:line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}}@media (min-width:1536px){.\32xl\:mr-5{margin-right:1.25rem}.\32xl\:text-2xl{font-size:1.5rem}}@media print{.print\:block{display:block}.print\:hidden{display:none}.print\:h-auto{height:auto}.print\:overflow-auto{overflow:auto}}@media (min-width:1600px){.xxl\:min-h-35{min-height:35rem}} </style> <link rel="alternate" type="application/rss+xml" title="Subscribe to What's New / HowStuffWorks RSS" href="https://syndication.howstuffworks.com/rss/HSW" /><link rel="icon" href="//cdn.hswstatic.com/en-us/hsw/img/icons/favicon.svg"> <link rel="apple-touch-icon" href="//cdn.hswstatic.com/en-us/hsw/img/icons/apple-touch.png"> <link rel="manifest" href="/manifest.json"> <link rel="mask-icon" href="//cdn.hswstatic.com/en-us/hsw/img/icons/favicon-mask.svg" color="#000033"> <meta name="theme-color" content="#151538"> <script> setTimeout( function() { (function(d) { var e = d.createElement('script'); e.src = d.location.protocol + '//tag.wknd.ai/6044/i.js'; e.async = true; d.getElementsByTagName("head")[0].appendChild(e); }(document)); },3000); </script> </head> <body class="hsw-page theme-hsw pt-14 md:pt-0 leaderboard-sticky computer cid-8894 interior editorial-content editorial single-page" > <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NXHP8V" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <div id="header" x-data="{ showMobileMenu : false, showMobileSearch : false, showNewsletterBanner : false, showNewsletterChatbox : false }" class="fixed top-0 w-full md:relative z-1050 print:hidden"> <header class="bg-royal-blue text-white max-w-full h-14 lg:h-20" data-track-gtm="Header"> <div class="w-full px-2 md:px-4 lg:px-5 w-max-1600 mx-auto"> <div class="flex justify-between items-center h-14 lg:h-20"> <div class="shrink lg:hidden self-center"> <a class=" text-white hover:text-white focus:text-green" @click.prevent="showMobileMenu = !showMobileMenu" href="#" aria-controls="mobile-nav" :aria-expanded="showMobileMenu.toString()" data-cy="mobile-menu-icon" > <svg class="fill-current stroke-current" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="21" viewBox="0 0 32 21"> <title>Mobile Menu</title> <defs> <clipPath id="clip-path"> <rect width="32" height="21" fill="none"/> </clipPath> </defs> <g id="Repeat_Grid_60" data-name="Repeat Grid 60" clip-path="url(#clip-path)"> <g transform="translate(-158 -87)"> <line id="Line_7" data-name="Line 7" x2="29" transform="translate(159.5 89.5)" fill="none" stroke-linecap="round" stroke-width="2"/> </g> <g transform="translate(-158 -79)"> <line id="Line_7-2" data-name="Line 7" x2="29" transform="translate(159.5 89.5)" fill="none" stroke-linecap="round" stroke-width="2"/> </g> <g transform="translate(-158 -71)"> <line id="Line_7-3" data-name="Line 7" x2="29" transform="translate(159.5 89.5)" fill="none" stroke-linecap="round" stroke-width="2"/> </g> </g> </svg> </a> </div> <div class="text-center px-4 md:text-left lg:px-0"> <a class="pt-1 text-white hover:text-white" href="//www.howstuffworks.com/" data-track-gtm="Logo"> <svg class="fill-current w-168 mx-auto lg:w-auto lg:max-w-195 lg:mx-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 90.1" width="195" height="35.139"><title>HowStuffWorks</title><g fill-rule="evenodd" clip-rule="evenodd" fill="#FFF"><path d="M379.4 51.3c12 0 20.2 7.9 20.2 19.3S391.2 90 379.4 90c-12.1 0-20.3-7.9-20.3-19.3-.1-11.5 8.2-19.4 20.3-19.4zm107.3-.1c4.2-.1 8.3 1.3 11.5 3.9l-4.9 6c-1.6-1.5-3.7-2.3-5.9-2.4-1.9-.2-3.6 1.2-3.8 3 0 1.8.9 2.4 5.6 4.1 8.4 3 10.8 5.6 10.8 11.4 0 7.7-6.2 13-14.8 13-5.2 0-10.1-2.2-13.5-6.1l5.2-6.2c2 2.6 5.1 4.1 8.4 4.3 2.3.2 4.3-1.5 4.5-3.8v-.1c0-2.2-1-2.9-5.5-4.6-8.4-3.1-10.3-5.1-10.3-10.7 0-7 5.2-11.8 12.7-11.8zm-157.2.3l9.7 22.4 9.6-21.4h11.1l-18.3 37.2H337l-9.6-22.2-9.4 22.2h-4.6l-18.2-37.2h11.1l9.3 21 9.7-22.1 4.2.1zm96.4-.2c1.5 0 2.9.3 4.3.8l-1.4 9.6c-1.4-.9-3-1.3-4.7-1.3-5.8 0-8.6 3.5-8.6 10.9V89h-9.9V52.5h9.9V58c1.8-4.1 5.9-6.7 10.4-6.7zm17.4-25.4v39.9l13.3-13.3H470l-16.6 16 18 20.5h-13.6l-13.4-15.6-1.1 1.1V89h-9.9V26l9.9-.1zm-64 34.6c-5.6-.1-10.3 4.4-10.4 10.1-.1 5.6 4.4 10.3 10.1 10.4 5.6.1 10.3-4.4 10.4-10.1v-.1c0-5.6-4.5-10.2-10.1-10.3zM381.9 0c9.4 0 18.5 5.3 18.5 17.1 0 14.7-14.8 16.3-14.8 26.4v1.8h-11.5v-2.6c0-13.7 14.3-15.2 14.3-25.5.2-3.5-2.5-6.5-6-6.8h-.9c-4.8 0-7.2 3.2-7.2 7.9v1h-11.5C362.9 7.4 370.2 0 381.9 0zM60.5 51.3c12 0 20.2 7.9 20.2 19.3S72.3 90 60.5 90c-12.1 0-20.3-7.9-20.3-19.3-.1-11.5 8.2-19.4 20.3-19.4zm53.9.2l9.7 22.4 9.6-21.4h11.1l-18.4 37.2h-4.6l-9.6-22.2-9.4 22.2h-4.6L80 52.5h11.1l9.3 21 9.7-22.1 4.3.1zM9.9 25.9v31.3c2.4-3.8 6.6-6.1 11.1-5.9 3.9-.1 7.7 1.5 10.3 4.5 2.1 2.5 2.8 5 2.8 10.3V89h-9.9V69c0-6.5-1.9-9-6.8-9-5.1 0-7.5 3.3-7.5 10.3V89H0V26h9.9zm50.5 34.6c-5.6-.1-10.3 4.4-10.4 10.1-.1 5.6 4.4 10.3 10.1 10.4 5.6.1 10.3-4.4 10.4-10.1v-.1c0-5.6-4.5-10.2-10.1-10.3zM160.4 51.2c4.2-.1 8.3 1.3 11.5 3.9l-4.9 6c-1.6-1.5-3.7-2.3-5.9-2.4-1.9-.2-3.6 1.2-3.8 3 0 1.8.9 2.4 5.6 4.1 8.4 3 10.8 5.6 10.8 11.4 0 7.7-6.2 13-14.8 13-5.2 0-10.1-2.2-13.5-6.1l5.2-6.2c2 2.6 5.1 4.1 8.4 4.3 2.3.2 4.3-1.5 4.5-3.8v-.1c0-2.2-1-2.9-5.5-4.6-8.4-3.1-10.3-5.1-10.3-10.7 0-7 5.3-11.8 12.7-11.8zm53.2 1.3v20.6c0 5.5 2.5 8.3 7.2 8.3s7.2-2.9 7.2-8.3V52.5h10v22.3c0 9.8-6.2 15.3-17.2 15.3s-17.1-5.5-17.1-15.3V52.5h9.9zm-22.1-12.4v12.4h7v8.7h-7V89h-9.9V61.3h-3.9v-8.7h3.9V40.1h9.9zm70.2-15.2c1.8 0 3.6.4 5.2 1.3v9.3c-1.4-.9-3-1.3-4.6-1.4-3.3 0-4.6 2.3-4.6 8.2v10.2h9.2v8.7h-9.2V89h-9.9V61.3H244v-8.7h3.8V40.8c0-6.2 1.2-9.5 4.8-12.4 2.5-2.2 5.7-3.4 9.1-3.5zm25.8 0c1.8 0 3.6.4 5.2 1.3v9.3c-1.4-.9-3-1.3-4.6-1.4-3.3 0-4.6 2.3-4.6 8.2v10.2h9.2v8.7h-9.2V89h-9.9V61.3h-3.8v-8.7h3.8V40.8c0-6.2 1.2-9.5 4.8-12.4 2.5-2.2 5.7-3.4 9.1-3.5z"/></g></svg> </a> </div><div class="hidden lg:block w-full md:w-11/12 w-max-1600 px-6 print:hidden"> <nav class="navbar text-white pt-3" data-cy="header-navbar" aria-label="Desktop Menu"> <div class="pl-2 flex" data-track-gtm="Channel"><a class="pr-4 text-white hover:text-white hover:font-bold" href="https://science.howstuffworks.com/" data-text="Science">Science</a> <a class="pr-4 text-white font-bold hover:text-white hover:font-bold" href="https://electronics.howstuffworks.com/tech" data-text="Tech">Tech</a> <a class="pr-4 text-white hover:text-white hover:font-bold" href="https://home.howstuffworks.com/" data-text="Home &amp; Garden">Home &amp; Garden</a> <a class="pr-4 text-white hover:text-white hover:font-bold" href="https://auto.howstuffworks.com/" data-text="Auto">Auto</a> <a class="pr-4 text-white hover:text-white hover:font-bold" href="https://people.howstuffworks.com/culture" data-text="Culture">Culture</a><div id="header-more-dropdown" class="relative inline-block" x-data="{ open: false }" data-cy="nav-more-dropdown" > <button type="button" @click="open = true" class="focus:ring-primary inline-flex justify-center w-full" :class="{ 'font-bold' : open }" > More <span class="inline-block align-middle my-auto ml-2 mr-1"><svg xmlns="http://www.w3.org/2000/svg" width="28.396" height="13.211" viewBox="0 0 28.396 13.211" style="width: 14px; height: 9px;"><title>More</title><path d="M4398.8,5158.252l13.224,10.507,12.357-10.507" transform="translate(-4397.399 -5156.842)" fill="none" stroke="#f7f7f7" stroke-linecap="round" stroke-width="2"/></svg></span> </button> <div x-show="open" @click.away="open = false" class="origin-top-right absolute right-0 mt-2 w-56 border-t-6 border-green z-10"> <div class="bg-royal-blue shadow-xs"> <div class="py-1" role="menu" aria-orientation="vertical" aria-labelledby="header-more-dropdown"> <a class="block text-white hover:text-white hover:font-bold px-4 py-2 leading-5 " role="menuitem" href="https://health.howstuffworks.com/" data-text="Health">Health</a> <a class="block text-white hover:text-white hover:font-bold px-4 py-2 leading-5 " role="menuitem" href="https://money.howstuffworks.com/" data-text="Money">Money</a> <a class="block text-white hover:text-white hover:font-bold px-4 py-2 leading-5 " role="menuitem" href="https://animals.howstuffworks.com/" data-text="Animals">Animals</a> <a class="block text-white hover:text-white hover:font-bold px-4 py-2 leading-5 " role="menuitem" href="https://lifestyle.howstuffworks.com/" data-text="Lifestyle">Lifestyle</a> <a class="block text-white hover:text-white hover:font-bold px-4 py-2 leading-5 " role="menuitem" href="https://entertainment.howstuffworks.com/" data-text="Entertainment">Entertainment</a> <a class="block text-white hover:text-white hover:font-bold px-4 py-2 leading-5 " role="menuitem" href="https://play.howstuffworks.com/" data-text="Quizzes">Quizzes</a> <a class="block text-white hover:text-white hover:font-bold px-4 py-2 leading-5 " role="menuitem" href="https://coupons.howstuffworks.com/" data-text="Coupons">Coupons</a> </div> </div> </div> </div> </div> </nav> </div><div id="nlcb" class="hidden"> <div id="nlcb-icon" class="flex-none md:hidden self-center mt-1 mr-3"> <a class="flex cursor-pointer" @click.prevent="showNewsletterChatbox = !showNewsletterChatbox; cancelTimers(); startDialogue();" href="#" aria-controls="newsletter-chatbox" :aria-expanded="showNewsletterChatbox.toString()"> <svg xmlns="http://www.w3.org/2000/svg" width="24.259" height="19.261" viewBox="0 0 24.259 19.261"> <title>Mobile Newsletter</title> <defs><style>.nla{fill:none;stroke:#eaeaea;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs> <g transform="translate(1.029 0.75)"> <path class="nla" d="M5.22,6H22.981A2.227,2.227,0,0,1,25.2,8.22V21.541a2.227,2.227,0,0,1-2.22,2.22H5.22A2.227,2.227,0,0,1,3,21.541V8.22A2.227,2.227,0,0,1,5.22,6Z" transform="translate(-3 -6)"/> <path class="nla" d="M25.2,9,14.1,15.654,3,9" transform="translate(-3 -6.532)"/></g> </svg> <div id="nlcb-dot" class="bg-red invisible rounded-full h-4 w-4 flex items-center justify-center -ml-2 -mt-2"> <span class="text-white text-xs">1</span> </div> </a> </div> </div><div class="text-right"> <form action="https://s.howstuffworks.com/serp" method="get" class="hidden lg:block mb-0"> <div class="flex"> <input id="keywords" name="q" class="focus:ring-primary flex-1 block px-4 py-2 min-w-225 placeholder-gray-dark text-dark-gray transition duration-150 ease-in-out text-sm leading-5" placeholder="Search..."> <button type="submit" class="inline-flex items-center self-center text-sm bg-green text-white transition-colors duration-300 ease-in-out hover:bg-primary px-3 py-2"> <svg class="fill-current" class="cursor-pointer" xmlns="http://www.w3.org/2000/svg" width="25.537" height="25.543" viewbox="0 0 25.537 25.543"> <path d="M29.737,28.187l-7.1-7.169A10.121,10.121,0,1,0,21.1,22.575L28.154,29.7a1.093,1.093,0,0,0,1.543.04A1.1,1.1,0,0,0,29.737,28.187ZM14.681,22.661a7.992,7.992,0,1,1,5.653-2.341A7.943,7.943,0,0,1,14.681,22.661Z" transform="translate(-4.5 -4.493)"/> </svg> <span class="sr-only">Submit Search</span> </button> </div> </form><a class="lg:hidden text-white hover:text-white focus:text-green" :class="{ 'hidden' : showMobileSearch }" @click.prevent="showMobileSearch = true" href="#" data-cy="mobile-search-open" > <svg class="fill-current" xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"> <path d="M29.737,28.187l-7.1-7.169A10.121,10.121,0,1,0,21.1,22.575L28.154,29.7a1.093,1.093,0,0,0,1.543.04A1.1,1.1,0,0,0,29.737,28.187ZM14.681,22.661a7.992,7.992,0,1,1,5.653-2.341A7.943,7.943,0,0,1,14.681,22.661Z" transform="translate(-4.5 -4.493)"/> </svg> <span class="sr-only">Search</span> </a><a x-cloak class="lg:hidden text-white hover:text-white focus:text-green" :class="{ 'hidden' : !showMobileSearch }" @click.prevent="showMobileSearch = false" href="#" data-cy="mobile-search-close" > <svg class="fill-current" xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"> <g transform="translate(-3.375 -3.375)"> <path d="M23.295,21.705,19.589,18l3.705-3.705a1.124,1.124,0,0,0-1.589-1.589L18,16.411l-3.705-3.705a1.124,1.124,0,0,0-1.589,1.589L16.411,18l-3.705,3.705a1.086,1.086,0,0,0,0,1.589,1.116,1.116,0,0,0,1.589,0L18,19.589l3.705,3.705a1.129,1.129,0,0,0,1.589,0A1.116,1.116,0,0,0,23.295,21.705Z" transform="translate(-2.123 -2.123)"/> <path d="M15.875,5.058a10.813,10.813,0,1,1-7.65,3.167,10.746,10.746,0,0,1,7.65-3.167m0-1.683a12.5,12.5,0,1,0,12.5,12.5,12.5,12.5,0,0,0-12.5-12.5Z"/> </g> </svg> <span class="sr-only">Close Search</span> </a> </div> </div> </div> </header><nav x-cloak :class="{ 'hidden' : !showMobileMenu }" class="bg-dark-blue text-white p-4 text-lg fixed w-full top-14 print:hidden" :aria-expanded="showMobileMenu.toString()" id="mobile-nav" data-cy="mobile-menu" aria-label="Mobile Menu" > <ul class="list-none border-b border-primary mb-2 pb-2"> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://science.howstuffworks.com/">Science</a></li> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://electronics.howstuffworks.com/tech">Tech</a></li> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://home.howstuffworks.com/">Home &amp; Garden</a></li> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://auto.howstuffworks.com/">Auto</a></li> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://people.howstuffworks.com/culture">Culture</a></li> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://health.howstuffworks.com/">Health</a></li> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://money.howstuffworks.com/">Money</a></li> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://animals.howstuffworks.com/">Animals</a></li> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://lifestyle.howstuffworks.com/">Lifestyle</a></li> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://entertainment.howstuffworks.com/">Entertainment</a></li> </ul> <ul class="list-none"> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://play.howstuffworks.com/">Quizzes</a></li> <li class="my-2"><a class="text-white hover:text-white hover:font-bold" href="https://coupons.howstuffworks.com/">Coupons</a></li> </ul> </nav><div x-cloak :class="{ 'hidden' : !showMobileSearch }" class="bg-dark-blue text-white p-4 fixed w-full top-14"> <form action="https://s.howstuffworks.com/serp" method="get"> <div class="flex"> <input id="keywords-mobile" name="q" class="focus:ring-primary flex-1 block px-4 py-2 w-full placeholder-gray-dark text-dark-gray transition duration-150 ease-in-out sm:text-sm sm:leading-5" placeholder="Search..."> <button type="submit" class="inline-flex items-center self-center text-sm bg-green text-white px-3 py-2"> <svg class="fill-current" class="cursor-pointer" xmlns="http://www.w3.org/2000/svg" width="25.537" height="25.543" viewbox="0 0 25.537 25.543"> <path d="M29.737,28.187l-7.1-7.169A10.121,10.121,0,1,0,21.1,22.575L28.154,29.7a1.093,1.093,0,0,0,1.543.04A1.1,1.1,0,0,0,29.737,28.187ZM14.681,22.661a7.992,7.992,0,1,1,5.653-2.341A7.943,7.943,0,0,1,14.681,22.661Z" transform="translate(-4.5 -4.493)"/> </svg> <span class="sr-only">Submit Search</span> </button> </div> </form> </div><div id="nlcb-banner" class="hidden relative flex-col items-center mt-11 group" data-cy="mobile-newsletter-banner"> <div class="absolute bottom-0 flex flex-col items-center group-hover:flex bg-primary w-full"> <div class="w-5 h-5 -mt-2 self-end mr-16 rotate-45 transform bg-primary"></div> <div class="relative z-10 p-2 -mt-2 mb-2 text-lg font-bold leading-none text-white whitespace-no-wrap"> <a id="nlcb-banner-opencb" @click.prevent="showNewsletterChatbox = true; startDialogue();" class="text-white hover:text-white" href="#">Sign up for our Newsletter!</a> </div> <div class="absolute top-1/4 right-5"> <a id="nlcb-banner-close" class="text-white hover:text-white" href="#"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"> <title>Mobile Newsletter banner close</title> <defs><style>.nlb{fill:#fff;}</style></defs> <g transform="translate(-3.375 -3.375)"> <path class="nlb" d="M19.93,18.828l-2.565-2.565L19.93,13.7a.778.778,0,0,0-1.1-1.1l-2.565,2.565L13.7,12.6a.778.778,0,0,0-1.1,1.1l2.565,2.565L12.6,18.828a.752.752,0,0,0,0,1.1.773.773,0,0,0,1.1,0l2.565-2.565,2.565,2.565a.782.782,0,0,0,1.1,0A.773.773,0,0,0,19.93,18.828Z" transform="translate(-2.889 -2.888)"/> <path class="nlb" d="M13.375,4.721a8.65,8.65,0,1,1-6.12,2.534,8.6,8.6,0,0,1,6.12-2.534m0-1.346a10,10,0,1,0,10,10,10,10,0,0,0-10-10Z"/> </g> </svg> </a> </div> </div> </div><div id="newsletter-chatbox" x-cloak :class="{ 'hidden' : !showNewsletterChatbox }" x-init="initNewsletterChatbox($dispatch)" class="print:hidden" :aria-expanded="showNewsletterChatbox.toString()"> <div class="flex items-end justify-center pt-0 px-4 pb-20 sm:block sm:p-0"> <div x-description="Background overlay, show/hide based on chatbox state." x-transition:enter="ease-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="fixed inset-0 bg-black bg-opacity-75 transition-opacity"> </div><span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">&#8203;</span> <div class="inline-block left-0 mt-0 mx-auto w-11/12 rounded-lg shadow transform transition-all"> <div class="bg-blue p-2 text-white font-bold text-md rounded-t-lg"> <div class="flex items-center justify-items-center justify-between"> <div class="justify-self-start"><img src="//cdn.hswstatic.com/en-us/hsw/img/hsw-avatar-sm.png" width="29px"/></div> <div class="whitespace-nowrap">HowStuffWorks Newsletter</div> <div class="justify-self-end"> <svg @click="showNewsletterChatbox = false; document.getElementById('nlcb-dot').classList.add('invisible');" class="fill-current" xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"> <title>Mobile Newsletter chat close</title> <g transform="translate(-3.375 -3.375)"> <path d="M23.295,21.705,19.589,18l3.705-3.705a1.124,1.124,0,0,0-1.589-1.589L18,16.411l-3.705-3.705a1.124,1.124,0,0,0-1.589,1.589L16.411,18l-3.705,3.705a1.086,1.086,0,0,0,0,1.589,1.116,1.116,0,0,0,1.589,0L18,19.589l3.705,3.705a1.129,1.129,0,0,0,1.589,0A1.116,1.116,0,0,0,23.295,21.705Z" transform="translate(-2.123 -2.123)"></path> <path d="M15.875,5.058a10.813,10.813,0,1,1-7.65,3.167,10.746,10.746,0,0,1,7.65-3.167m0-1.683a12.5,12.5,0,1,0,12.5,12.5,12.5,12.5,0,0,0-12.5-12.5Z"></path> </g> </svg> </div> </div> </div> <div class="bg-gray-light text-gray-darkest min-h-24"> <div class="px-2 py-3"> <div id="cbc-0" class=" items-start hidden"> <div class="pr-3 flex-none"><img src="//cdn.hswstatic.com/en-us/hsw/img/hsw-avatar-sm.png" width="40" height="40"/></div> <div id="cbt-0" class="flex rounded-xl p-2 shadow bg-white"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="8" viewBox="0 0 28 8"> <title>Mobile Newsletter chat dots</title> <defs><style>.nlda{fill:#c0c1c5;}.nldb{fill:#939197;}</style></defs> <g transform="translate(-83 -81)"> <circle class="nlda" cx="4" cy="4" r="4" transform="translate(83 81)"/> <circle class="nlda" cx="4" cy="4" r="4" transform="translate(103 81)"/> <circle class="nldb" cx="4" cy="4" r="4" transform="translate(93 81)"/> </g> </svg> </div> </div> <div id="cbc-1" class=" items-start mt-3 hidden"> <div class="pr-3 flex-none"><img src="//cdn.hswstatic.com/en-us/hsw/img/hsw-avatar-sm.png" width="40" height="40"/></div> <div id="cbt-1" class="flex rounded-xl p-2 shadow bg-white"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="8" viewBox="0 0 28 8"> <title>Mobile Newsletter chat dots</title> <defs><style>.nlda{fill:#c0c1c5;}.nldb{fill:#939197;}</style></defs> <g transform="translate(-83 -81)"> <circle class="nlda" cx="4" cy="4" r="4" transform="translate(83 81)"/> <circle class="nlda" cx="4" cy="4" r="4" transform="translate(103 81)"/> <circle class="nldb" cx="4" cy="4" r="4" transform="translate(93 81)"/> </g> </svg> </div> </div> <div id="cbc-2" class=" items-start mt-3 hidden"> <div class="pr-3 flex-none"><img src="//cdn.hswstatic.com/en-us/hsw/img/hsw-avatar-sm.png" width="40" height="40"/></div> <div id="cbt-2" class="flex rounded-xl p-2 shadow bg-white"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="8" viewBox="0 0 28 8"> <title>Mobile Newsletter chat dots</title> <defs><style>.nlda{fill:#c0c1c5;}.nldb{fill:#939197;}</style></defs> <g transform="translate(-83 -81)"> <circle class="nlda" cx="4" cy="4" r="4" transform="translate(83 81)"/> <circle class="nlda" cx="4" cy="4" r="4" transform="translate(103 81)"/> <circle class="nldb" cx="4" cy="4" r="4" transform="translate(93 81)"/> </g> </svg> </div> </div> <div id="cbc-3" class="mt-3 hidden items-start justify-end"> <div id="cbt-3" class="rounded-2xl p-2 shadow bg-light-blue text-white"></div> <div class="pl-3 flex-none"> <div class="bg-primary rounded-2xl"> <svg class="p-1" xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 22.045 25.917"> <title>Mobile Newsletter chat avatar</title> <defs><style>.nluser{fill:#fff;}</style></defs> <path class="nluser" d="M142.589,13.965h.172a4.952,4.952,0,0,0,3.784-1.637c2.066-2.329,1.723-6.322,1.685-6.7-.134-2.861-1.487-4.229-2.6-4.868A5.967,5.967,0,0,0,142.739,0h-.091a5.976,5.976,0,0,0-2.887.735c-1.127.639-2.5,2.007-2.635,4.889-.038.381-.381,4.374,1.685,6.7A4.932,4.932,0,0,0,142.589,13.965Zm-4.031-8.206c0-.016.005-.032.005-.043.177-3.848,2.909-4.261,4.079-4.261h.064c1.449.032,3.913.623,4.079,4.261a.1.1,0,0,0,.005.043c.005.038.381,3.687-1.326,5.608a3.518,3.518,0,0,1-2.764,1.149h-.054a3.506,3.506,0,0,1-2.759-1.149C138.188,9.457,138.553,5.791,138.559,5.759Z" transform="translate(-131.661)"/> <path class="nluser" d="M58.116,265.918V265.9c0-.043-.005-.086-.005-.134-.032-1.063-.1-3.548-2.431-4.342l-.054-.016a15.488,15.488,0,0,1-4.455-2.029.724.724,0,1,0-.832,1.186,16.715,16.715,0,0,0,4.9,2.238c1.25.445,1.39,1.782,1.428,3.005a1.077,1.077,0,0,0,.005.134,9.742,9.742,0,0,1-.113,1.658,19.752,19.752,0,0,1-9.462,2.2,19.865,19.865,0,0,1-9.467-2.206,9.222,9.222,0,0,1-.113-1.658c0-.043.005-.086.005-.134.038-1.224.177-2.56,1.428-3.005a16.872,16.872,0,0,0,4.9-2.238.724.724,0,1,0-.832-1.186,15.315,15.315,0,0,1-4.455,2.029c-.021.005-.038.011-.054.016-2.329.8-2.4,3.285-2.431,4.342a1.078,1.078,0,0,1-.005.134v.016a8.23,8.23,0,0,0,.274,2.431.688.688,0,0,0,.279.338A20.3,20.3,0,0,0,47.1,271.248a20.361,20.361,0,0,0,10.476-2.565.718.718,0,0,0,.279-.338A8.635,8.635,0,0,0,58.116,265.918Z" transform="translate(-36.073 -245.331)"/> </svg> </div> </div> </div> <div id="cbc-4" class="items-start mt-3 hidden"> <div class="pr-3 flex-none"><img src="//cdn.hswstatic.com/en-us/hsw/img/hsw-avatar-sm.png" width="40" height="40"/></div> <div id="chatbox-success" class="flex rounded-xl p-2 shadow bg-white"></div> </div> </div> </div> <div class="bg-white border border-gray-light rounded-b-lg"> <form id="chatbox-form"> <input type="hidden" name="formloc" value="Chatbox"> <input type="hidden" name="c" x-data="{ c : userData.country }" :value="c" /> <div style="position: absolute; left: -5000px;" aria-hidden="true"><input name="website" type="text" autocomplete="off" tabindex="-1" value="" /></div> <div class="p-1 flex items-center"> <input type="email" value="" name="email" placeholder="Enter your email" class="w-5/6 text-md p-3 placeholder-gray-dark text-gray-darkest focus:outline-none required"> <button id="chatbox-subscribe" class="p-1 m-2 text-green"> <svg class="fill-current" xmlns="http://www.w3.org/2000/svg" width="26.833" height="23" viewBox="0 0 26.833 23"> <title>Mobile Newsletter chat subscribe</title> <path d="M3.013,27.5,29.833,16,3.013,4.5,3,13.444,22.167,16,3,18.556Z" transform="translate(-3 -4.5)"/> </svg> </button> </div> </form> </div> </div> </div> </div> </div> <div class="print:hidden md:hidden fixed bottom-0 left-0 right-0 bg-light-gray h-50 z-999"> <div id="ad-wrap-mobadhesion" class="print:hidden md:hidden "><div id="ad-div-mobadhesion" class="ad-tag text-center"></div></div> </div> <main> <div class="hidden print:hidden leaderboard-banner lg:block bg-primary max-w-full text-center text-white text-xs py-2"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 hidden md:block">Advertisement</p> <div id="ad-wrap-bannerTop" class="print:hidden hidden md:block h-min-90 bg-primary"><div id="ad-div-bannerTop" class="ad-tag "></div></div> <script> (function () { var mw = 1024; if (!dfpSettings.isMobile && HSW.utilities.getViewportWidth() < mw) { var el = document.getElementById('ad-wrap-bannerTop'); var d = el.previousElementSibling; el.parentNode.removeChild(el); if (d.classList.contains('ad-disclaimer')) { d.parentNode.removeChild(d); } } })(); </script> </div> <div class="w-full md:w-11/12 w-max-1200 mx-auto px-4 pt-4 md:pt-6" id="page" data-track-gtm="Page"> <nav aria-label="Breadcrumb Links"> <div class="flex items-center divider mb-3 xl:mb-4 overflow-x-scroll md:overflow-x-visible" data-track-gtm="Breadcrumbs"> <div itemscope itemtype="https://schema.org/BreadcrumbList" class="flex flex-nowrap"> <div itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="hidden print:block md:block breadcrumb-item mr-8 relative whitespace-nowrap"> <a class="text-primary hover:text-royal-blue" itemprop="item" href="https://www.howstuffworks.com/"><span itemprop="name"> HowStuffWorks</span></a> <meta itemprop="position" content="1" /> </div> <div itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class=" breadcrumb-item mr-8 relative whitespace-nowrap"> <a class="text-primary hover:text-royal-blue" itemprop="item" href="https://electronics.howstuffworks.com/tech"><span itemprop="name"> Tech</span></a> <meta itemprop="position" content="2" /> </div> <div itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class=" breadcrumb-item mr-8 relative whitespace-nowrap"> <a class="text-primary hover:text-royal-blue" itemprop="item" href="https://computer.howstuffworks.com/"><span itemprop="name"> Computer</span></a> <meta itemprop="position" content="3" /> </div> <div itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class=" breadcrumb-item mr-8 relative whitespace-nowrap"> <a class="text-primary hover:text-royal-blue" itemprop="item" href="https://computer.howstuffworks.com/computer-hardware-channel.htm"><span itemprop="name"> Computer Hardware</span></a> <meta itemprop="position" content="4" /> </div> <div itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class=" breadcrumb-item mr-8 relative whitespace-nowrap"> <a class="text-primary hover:text-royal-blue" itemprop="item" href="https://computer.howstuffworks.com/computer-networking-channel.htm"><span itemprop="name"> Networking</span></a> <meta itemprop="position" content="5" /> </div> </div> </div> </nav> <div id="rampjs_slot1" class="mb-6 rsoc-above-title"></div> <div id="fb-root"></div> <div class="md:flex md:flex-nowrap"> <div id="content-well" class="relative w-full md:flex-1 md:w-auto md:pr-10 col-main " data-track-gtm="Body"> <div class="page-title flex flex-rows items-center mb-4"><h1 class="flex-grow font-headline text-3xl md:text-5xl text-royal-blue leading-tighter">NAT: How Network Address Translation Works</h1> </div> <div class="mb-4"> <div class="mb-4 w-100 flex justify-between"> <div> By: Jeff Tyson &nbsp;|&nbsp; <span class="content-date byline-segment">Updated: Mar 25, 2024</span> </div> </div> <div class="bg-theme-gradient w-100 h-4px mb-4"></div> <script> function contentShare(e){return{get emailBody(){let e=document.getElementById("share-email-template").innerHTML;var t={url:Alpine.store("share").url,title:Alpine.store("share").title};return encodeURIComponent(function(e,t){for(const n in e){var r=new RegExp("<% "+n+" %>","g");t=t.replace(r,e[n])}return t}(t,e)).replace(/amp%3B/g,"")}}}document.addEventListener("alpine:init",()=>{Alpine.store("share",{url:location.href+"?utm_medium=share&utm_campaign=hsw_share",title:pageMetricsData.title,image:pageMetricsData.image,site:document.querySelector("meta[property='og:site_name']").getAttribute("content")})}); </script><div id="share-float" x-data="contentShare()" x-init="this.id = 'left'" x-cloak class="sticky top-5 print:hidden" > <div class="relative xs:hidden"> <div id="share-bar-left" class="absolute -left-12"> <ul class="flex flex-col justify-between md:flex-nowrap md:justify-start"> <li class="mt-6"> <a target="_blank" class="share-facebook text-accent-1 hover:text-accent-1" data-track-gtm="Facebook" :href="'https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent($store.share.url) + '%26utm_source%3Dfacebook'" title="Share Content on Facebook"> <svg class="fill-current opacity-53 hover:opacity-100" xmlns="http://www.w3.org/2000/svg" width="28.299" height="27.47" viewBox="0 0 28.299 27.47" aria-labelledby="shareFacebookTitle" role="img"> <title id="shareFacebookTitle">Share Content on Facebook</title> <path id="facebook-icon" d="M28.3,13.819A13.987,13.987,0,0,0,14.149,0,13.987,13.987,0,0,0,0,13.819,13.927,13.927,0,0,0,11.939,27.47V17.813H8.346V13.819h3.593V10.774c0-3.463,2.112-5.376,5.344-5.376a22.265,22.265,0,0,1,3.167.27v3.4H18.666a2.021,2.021,0,0,0-2.306,2.158v2.592h3.924l-.627,3.995h-3.3V27.47A13.927,13.927,0,0,0,28.3,13.819Z" /> </svg> </a> </li> <li class="mt-6"> <a target="_blank" class="share-linkedin text-accent-1 hover:text-accent-1" data-track-gtm="LinkedIn" :href="'https://www.linkedin.com/shareArticle?mini=true&url=' + encodeURIComponent($store.share.url) + '%26utm_source%3Dlinkedin&amp;title=' + encodeURIComponent($store.share.title)" title="Share Content on LinkedIn"> <svg class="fill-current opacity-53 hover:opacity-100" xmlns="http://www.w3.org/2000/svg" width="28.301" height="27.64" viewBox="0 0 28.301 27.64" aria-labelledby="shareLinkedInTitle" role="img"> <title id="shareLinkedInTitle">Share Content on LinkedIn</title> <path id="linkedin-icon" d="M24.111,23.554H19.92V17.14c0-1.529-.032-3.5-2.184-3.5-2.185,0-2.519,1.664-2.519,3.385v6.526H11.027V10.365h4.026v1.8h.054a4.437,4.437,0,0,1,3.974-2.131c4.246,0,5.032,2.729,5.032,6.282v7.239ZM6.293,8.56A2.378,2.378,0,1,1,8.727,6.182,2.4,2.4,0,0,1,6.293,8.56Zm2.1,14.993h-4.2V10.365h4.2ZM26.208,0H2.088A2.041,2.041,0,0,0,0,1.991V25.649A2.04,2.04,0,0,0,2.088,27.64H26.2a2.048,2.048,0,0,0,2.1-1.991V1.991A2.049,2.049,0,0,0,26.2,0Z" /> </svg> </a> </li> <li class="mt-6"> <a target="_blank" class="share-flipboard text-accent-1 hover:text-accent-1" data-track-gtm="Flipboard" :href="'https://share.flipboard.com/bookmarklet/popout?url=' + encodeURIComponent($store.share.url) + '%26utm_source%3Dflipboard&amp;title=' + encodeURIComponent($store.share.title)" title="Share Content on Flipboard"> <svg class="fill-current opacity-53 hover:opacity-100 " xmlns="http://www.w3.org/2000/svg" width="28.299" height="28.299" viewBox="0 0 28.299 28.299" aria-labelledby="shareFlipboardTitle" role="img"> <title id="shareFlipboardTitle">Share Content on Flipboard</title> <path id="flipboard-icon" d="M0,0V28.3H28.3V0ZM22.639,11.32h-5.66v5.66H11.32v5.66H5.66V5.66H22.639Z" /> </svg> </a> </li> <li class="mt-6"> <a target="_blank" class="share-reddit text-accent-1 hover:text-accent-1" data-track-gtm="Reddit" :href="'https://www.reddit.com/submit?url=' + encodeURIComponent($store.share.url) + '%26utm_source%3Dreddit&amp;title=' + encodeURIComponent($store.share.title)" title="Share Content on Reddit"> <svg class="fill-current opacity-53 hover:opacity-100" xmlns="http://www.w3.org/2000/svg" width="28.3" height="28.3" viewBox="0 0 28.3 28.3" aria-labelledby="shareRedditTitle" role="img"> <title id="shareRedditTitle">Share Content on Reddit</title> <g id="reddit-Icon" transform="translate(-0.617 -0.617)"> <circle id="Ellipse_6" cx="14.15" cy="14.15" r="14.15" transform="translate(0.617 0.617)" /> <path id="Path_98" d="M25.344,17.9a.477.477,0,0,1,.568-.359l3.9.862a1.542,1.542,0,1,1-.162.862l-3.532-.783-1.2,5.15a11.116,11.116,0,0,1,6.4,2.119,2.269,2.269,0,0,1,3.482.274,2.218,2.218,0,0,1,.121.215,2.354,2.354,0,0,1-1.059,3.149,5.5,5.5,0,0,1-2.354,5.15,11.652,11.652,0,0,1-6.957,2.1,11.646,11.646,0,0,1-6.957-2.1,5.5,5.5,0,0,1-2.354-5.15,2.216,2.216,0,0,1-.215-.121,2.354,2.354,0,0,1-.724-3.237,2.434,2.434,0,0,1,.265-.312,2.278,2.278,0,0,1,3.217.032,11.119,11.119,0,0,1,6.236-2.116Zm1.292,11.007a1.557,1.557,0,1,0,.456-1.1A1.56,1.56,0,0,0,26.636,28.909Zm1.857,4.3a.359.359,0,0,0-.383-.589,6.08,6.08,0,0,1-7.116,0,.359.359,0,0,0-.383.589,6.669,6.669,0,0,0,7.881,0Zm-9.144-4.3a1.557,1.557,0,1,0,.456-1.1A1.56,1.56,0,0,0,19.349,28.909Z" transform="translate(-9.278 -11.812)" fill="#fff"/> </g> </svg> </a> </li> <li class="mt-6"> <a target="_blank" class="share-email text-accent-1 hover:text-accent-1" data-track-gtm="Email" :href="'mailto:?subject=' + encodeURIComponent($store.share.title) + '+-+' + encodeURIComponent($store.share.site) + '&body=' + emailBody" title="Share Content via Email"> <svg class="fill-current opacity-53 hover:opacity-100" xmlns="http://www.w3.org/2000/svg" width="28.1569" height="22" viewBox="0 0 23.584 18.427" aria-labelledby="shareEmailTitle" role="img"> <title id="shareEmailTitle">Share Content via Email</title> <path d="M24.226,6H5.358A2.328,2.328,0,0,0,3.012,8.3L3,22.123a2.338,2.338,0,0,0,2.358,2.3H24.226a2.338,2.338,0,0,0,2.358-2.3V8.3A2.338,2.338,0,0,0,24.226,6Zm0,4.607-9.434,5.758L5.358,10.607V8.3l9.434,5.758L24.226,8.3Z" transform="translate(-3 -6)"/> </svg> </a> </li> </ul> </div> </div> <script id="share-email-template" type="text/template"> Hi, I thought you would like this: <% url %>?utm_source=email&utm_medium=share&utm_campaign=hsw_share <% title %> </script> </div> <div id="editorial-main"> <div class="editorial-header"> </div> <article id="editorial-body" class="editorial-body infinite-container break-words"> <script defer src="https://rampjs-cdn.system1.com/ramp.js"></script> <script> HSW.utilities.docReady(() => { const rsocSegments = {"default":"c2showstuffworks0004","EXPO1922_ABOVE_TITLE":"c2showstuffworks0014","EXPO1922_BELOW_IMAGE":"c2showstuffworks0024"}; if (GACtest === 'EXPO1922_CONTROL' || typeof rsocSegments[GACtest] === 'undefined') { return; } (function(w,r){w[r]=w[r]||function(){(w[r]['q']=w[r]['q']||[]).push(arguments)},w[r]['t']=1*new Date()})(window,'_rampJs'); let rampSetup = { content_experiment_id: GACtest, init: { segment: rsocSegments[GACtest] }, terms: rampKeywords }; if (HSW.env != 'prod') { rampSetup.referrer = "https://howstuffworks.com/"; rampSetup.testMode = true; } _rampJs(rampSetup); }); </script> <div class="page-content"> <div class="page-body se" id="page0" data-slide="0" data-track-gtm="Content"> <div class="editorial-sidebar mx-auto mb-6 md:float-left md:ml-0 md:mr-6 md:mb-4" style="max-width:290px;" data-track-gtm="Editorial Sidebar"> <figure class="fragment-media lead-image media-vertical" style="max-width: 290px;" > <picture> <source " srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1yb3V0ZXIuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyOTB9LCJ0b0Zvcm1hdCI6ImF2aWYifX0=" type="image/avif"> <source " srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1yb3V0ZXIuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyOTB9fX0="> <img class=" "src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1yb3V0ZXIuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyOTB9fX0=" alt="Diagram&#x20;of&#x20;a&#x20;NAT&#x20;router&#x20;directing&#x20;traffic&#x20;in&#x20;between&#x20;private&#x20;and&#x20;public&#x20;networks." width="290" height="105" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1yb3V0ZXIuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyOTB9fX0=" width="290" alt="Diagram&#x20;of&#x20;a&#x20;NAT&#x20;router&#x20;directing&#x20;traffic&#x20;in&#x20;between&#x20;private&#x20;and&#x20;public&#x20;networks." border="0">" </noscript> <figcaption class="media-body-wrap bg-accent-3 p-4 w-max-full text-sm text-left"> Network Address Translation helps improve security by reusing IP addresses. The NAT router translates traffic coming into and leaving the private network. See more <a href="https://computer.howstuffworks.com/computer-networking-pictures.htm">pictures of computer networking</a>. </figcaption> </figure> </div> <div id="rampjs_slot1" class="primary-slot inset mb-6 rsoc-slot rsoc-after-lead"></div> <p>If you are reading this article, you are most likely connected to the internet and viewing it at the HowStuffWorks website. Therefore, it's very probable that you are using Network Address Translation (<b>NAT</b>) right now.</p> <p>The Internet has grown larger than anyone ever imagined it could be. Although the exact size is unknown, the current estimate is that there are more than <a href="https://www.statista.com/statistics/617136/digital-population-worldwide/" class="ext-link">5.35 billion</a> users actively on the internet. So what does the size of the internet have to do with NAT? Everything! In this article, you will learn how NAT can benefit you. But first, let's take a closer look at NAT and exactly what it can do...</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline1" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline1" class="ad-tag h-max-250"></div></div> </div> </div> <div id="rampjs_slot1" class="secondary-slot mb-6 rsoc-slot rsoc-after-lead"></div> <div class="hidden lg:block print:hidden mb-6 text-center w-full clear-both" id="inline-video-wrap" style="height: 403px;"> <div class="mx-auto w-min"> <div id="unruly-video-container" style="width: 717px; height: 403px;"></div> </div> </div> <script> (function () { if (!HSW.utilities.isMobile() && HSW.utilities.hashArgs['video-ad'] !== 'off' && userData.adsActive) { HSW.utilities.delayLoad(() => { HSW.pq.add(() => { if (userData.adsActive) { HSW.utilities.loadScript('https://tg1.unrulyvideo.com/api/adserver/spt?AV_TAGID=642d0774bf980e733c0bdd08&AV_PUBLISHERID=63a310da17f8afa0e105a8f5', true, () => {}); } else { console.log('Unruly player blocked'); } }); }); } else { let el = document.getElementById('inline-video-wrap'); el.parentNode.removeChild(el); } })(); </script> </div> </div> <div class="clear-both"> <div class="toc inline-block bg-accent-4 py-4 px-8 text-2xl text-lighter-gray mb-8 print:hidden" data-track-gtm="TOC"> <strong>Contents</strong> <ol class="list-outside list-decimal text-lg mt-2 ml-8 text-primary font-bold"> <li class="pb-2 pl-2 text-lg"> <a data-target="pt1" class="text-lighter-gray hover:text-green font-normal" href="#pt1">When the Global IP Address Pool Runs Dry</a> </li> <li class="pb-2 pl-2 text-lg"> <a data-target="pt2" class="text-lighter-gray hover:text-green font-normal" href="#pt2">What Does NAT Do?</a> </li> <li class="pb-2 pl-2 text-lg"> <a data-target="pt3" class="text-lighter-gray hover:text-green font-normal" href="#pt3">NAT Configuration</a> </li> <li class="pb-2 pl-2 text-lg"> <a data-target="pt4" class="text-lighter-gray hover:text-green font-normal" href="#pt4">The Connections of a NAT Overload</a> </li> <li class="pb-2 pl-2 text-lg"> <a data-target="pt5" class="text-lighter-gray hover:text-green font-normal" href="#pt5">Dynamic Network Address Translation</a> </li> <li class="pb-2 pl-2 text-lg"> <a data-target="pt6" class="text-lighter-gray hover:text-green font-normal" href="#pt6">How NAT Overloading Works</a> </li> <li class="pb-2 pl-2 text-lg"> <a data-target="pt7" class="text-lighter-gray hover:text-green font-normal" href="#pt7">Stub Domains</a> </li> <li class="pb-2 pl-2 text-lg"> <a data-target="pt8" class="text-lighter-gray hover:text-green font-normal" href="#pt8">How IP Address Information is Classified</a> </li> <li class="pb-2 pl-2 text-lg"> <a data-target="pt9" class="text-lighter-gray hover:text-green font-normal" href="#pt9">Security and Administration</a> </li> <li class="pb-2 pl-2 text-lg"> <a data-target="pt10" class="text-lighter-gray hover:text-green font-normal" href="#pt10">A Note on Proxy Servers</a> </li> <li class="pb-2 pl-2 text-lg"> <a data-target="pt11" class="text-lighter-gray hover:text-green font-normal" href="#pt11">Multi-homing</a> </li> </ol> </div> </div> <div class="page-content relative clear-both" id="page-wrap1" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt1"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="1" data-logged="false" data-page-url="nat1.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page1" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>When the Global IP Address Pool Runs Dry</span> </span> </h2> <div class="page-body se" id="page1" data-slide="1" data-track-gtm="Content" x-show.transition="pageVisible === true"> <p>For a computer to communicate with other computers and <a href="https://computer.howstuffworks.com/web-server.htm">web servers</a> on the internet, it must have an IP address. An IP address (IP stands for Internet Protocol) is a unique 32-bit number that identifies the location of your computer on a network. Basically, it works like your street address — as a way to find out exactly where you are and deliver information to you.</p> <p>When IP addressing first came out, everyone thought that there were plenty of addresses to cover any need. Theoretically, you could have <a href="https://computer.howstuffworks.com/internet/basics/what-is-an-ip-address.htm">4,294,967,296 unique addresses</a> (2<sup>32</sup>). The actual number of public IP addresses is smaller (somewhere between 3.2 and 3.3 billion) because of the way that the addresses are separated into classes, and because some addresses are set aside for multicasting, testing, or other special uses.</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline3" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline3" class="ad-tag h-max-250"></div></div> </div> </div> <p>With the explosion of the Internet and the increase in <a href="https://computer.howstuffworks.com/home-network.htm">home networks</a> and business networks, the number of available IP addresses is simply not enough. The obvious solution is to redesign the public IP address format to allow for more possible addresses. This is being developed (called IPv6), but will take several years to implement because it requires modification of the entire infrastructure of the internet.</p> <p>­ This is where NAT (<a href="http://www.faqs.org/rfcs/rfc1631.html" class="ext-link">RFC 1631</a>) comes to the rescue. Network Address Translation allows a single device, such as a <a href="https://computer.howstuffworks.com/router.htm">router</a>, to act as an agent between the Internet (or &quot;public network&quot;) and a local (or &quot;private&quot;) network. This means that only a single, unique IP address is required to represent an entire group of computers. But the shortage of public IP addresses is only one reason to use NAT.</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-14"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline4" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline4" class="ad-tag "></div></div> </div> </div> </div> </div> <div class="page-content relative clear-both" id="page-wrap2" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt2"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="2" data-logged="false" data-page-url="nat2.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page2" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>What Does NAT Do?</span> </span> </h2> <div class="page-body se" id="page2" data-slide="2" data-track-gtm="Content" x-show.transition="pageVisible === true"> <p>NAT is like the receptionist in a large office. Let's say you have left instructions with the receptionist not to forward any calls to you unless you request it. Later on, you call a potential client and leave a message for that client to call you back. You tell the receptionist that you are expecting a call from this client and to put her through.</p> <p>The client calls the main number to your office, which is the only number the client knows. When the client tells the receptionist that she is looking for you, the receptionist checks a lookup table that matches your name with your extension. The receptionist knows that you requested this call, and therefore forwards the caller to your extension.</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline5" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline5" class="ad-tag h-max-250"></div></div> </div> </div> <p>Developed by Cisco, Network Address Translation is used by a device (<a href="https://computer.howstuffworks.com/firewall.htm">firewall</a>, router, or computer that sits between an internal network and the rest of the world). NAT has many forms and can work in several ways:</p> <figure class="fragment-media clear-both w-max-full mx-auto mb-6 md:float-left md:ml-0 md:mr-6 md:mb-4" style="max-width: 285px;" style="max-width: 285px;"> <picture class="lazyload"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1zdGF0aWMuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyODV9LCJ0b0Zvcm1hdCI6ImF2aWYifX0=" type="image/avif"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1zdGF0aWMuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyODV9fX0="> <img class=" bg-gray-light bg-opacity-50" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEElEQVR42mNkIAAYRxWAAQAG9gAKqv6+AwAAAABJRU5ErkJggg==" data-src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1zdGF0aWMuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyODV9fX0=" alt="Diagram&#x20;showing&#x20;how&#x20;IP&#x20;addresses&#x20;translate&#x20;in&#x20;static&#x20;NAT." width="285" height="92" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1zdGF0aWMuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyODV9fX0=" width="285" alt="Diagram&#x20;showing&#x20;how&#x20;IP&#x20;addresses&#x20;translate&#x20;in&#x20;static&#x20;NAT." border="0">" </noscript> <figcaption class="media-body-wrap bg-accent-3 p-4 w-max-full text-sm text-left"> In static NAT, the computer with the IP address of 192.168.32.10 will always translate to 213.18.123.110. </figcaption> </figure> <div class="list"> <ul><li><span><b>Static NAT</b> - Mapping an unregistered IP address to a registered IP address on a one-to-one basis. Particularly useful when a device needs to be accessible from outside the network.</span></li></ul> </div> <figure class="fragment-media clear-both w-max-full mx-auto mb-6 md:float-left md:ml-0 md:mr-6 md:mb-4" style="max-width: 285px;" style="max-width: 285px;"> <picture class="lazyload"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1keW5hbWljLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6Mjg1fSwidG9Gb3JtYXQiOiJhdmlmIn19" type="image/avif"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1keW5hbWljLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6Mjg1fX19"> <img class=" bg-gray-light bg-opacity-50" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEElEQVR42mNkIAAYRxWAAQAG9gAKqv6+AwAAAABJRU5ErkJggg==" data-src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1keW5hbWljLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6Mjg1fX19" alt="Diagram&#x20;showing&#x20;how&#x20;IP&#x20;addresses&#x20;translate&#x20;in&#x20;static&#x20;NAT." width="285" height="127" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1keW5hbWljLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6Mjg1fX19" width="285" alt="Diagram&#x20;showing&#x20;how&#x20;IP&#x20;addresses&#x20;translate&#x20;in&#x20;static&#x20;NAT." border="0">" </noscript> <figcaption class="media-body-wrap bg-accent-3 p-4 w-max-full text-sm text-left"> In dynamic NAT, the computer with the IP address 192.168.32.10 will translate to the first available address in the range from 213.18.123.100 to 213.18.123.150. </figcaption> </figure> <div class="list"> <ul><li><span><b>Dynamic NAT</b> - Maps an unregistered IP address to a registered IP address from a group of registered IP addresses.</span></li></ul> </div> <div class="list"> <ul><li><span><b>Overloading</b> - A form of dynamic NAT that maps multiple unregistered IP addresses to a single registered IP address by using different ports. This is known also as PAT (Port Address Translation), single IP address NAT or port-level multiplexed NAT.</span></li></ul> </div> <figure class="fragment-media clear-both w-max-full mx-auto mb-6 md:float-left md:ml-0 md:mr-6 md:mb-4" style="max-width: 285px;" style="max-width: 285px;"> <picture class="lazyload"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vdmVybG9hZC5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjI4NX0sInRvRm9ybWF0IjoiYXZpZiJ9fQ==" type="image/avif"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vdmVybG9hZC5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjI4NX19fQ=="> <img class=" bg-gray-light bg-opacity-50" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEElEQVR42mNkIAAYRxWAAQAG9gAKqv6+AwAAAABJRU5ErkJggg==" data-src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vdmVybG9hZC5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjI4NX19fQ==" alt="Diagram&#x20;showing&#x20;how&#x20;each&#x20;computer&#x20;is&#x20;translated&#x20;to&#x20;the&#x20;same&#x20;IP&#x20;address&#x20;in&#x20;NAT&#x20;overloading." width="285" height="92" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vdmVybG9hZC5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjI4NX19fQ==" width="285" alt="Diagram&#x20;showing&#x20;how&#x20;each&#x20;computer&#x20;is&#x20;translated&#x20;to&#x20;the&#x20;same&#x20;IP&#x20;address&#x20;in&#x20;NAT&#x20;overloading." border="0">" </noscript> <figcaption class="media-body-wrap bg-accent-3 p-4 w-max-full text-sm text-left"> In overloading, each computer on the private network is translated to the same IP address (213.18.123.100), but with a different port number assignment. </figcaption> </figure> <div class="list"> <ul><li><span><b>Overlapping</b> - When the IP addresses used on your internal network are registered IP addresses in use on another network, the router must maintain a lookup table of these addresses so that it can intercept them and replace them with registered unique IP addresses. It is important to note that the NAT router must translate the &quot;internal&quot; addresses to registered unique addresses as well as translate the &quot;external&quot; registered addresses to addresses that are unique to the private network. This can be done either through static NAT or by using <a href="https://computer.howstuffworks.com/dns.htm">DNS</a> and implementing dynamic NAT.</span></li></ul> </div> <figure class="fragment-media clear-both w-max-full mx-auto mb-6 md:float-left md:ml-0 md:mr-6 md:mb-4" style="max-width: 285px;" style="max-width: 285px;"> <picture class="lazyload"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vdmVybGFwLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6Mjg1fSwidG9Gb3JtYXQiOiJhdmlmIn19" type="image/avif"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vdmVybGFwLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6Mjg1fX19"> <img class=" bg-gray-light bg-opacity-50" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEElEQVR42mNkIAAYRxWAAQAG9gAKqv6+AwAAAABJRU5ErkJggg==" data-src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vdmVybGFwLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6Mjg1fX19" alt="Diagram&#x20;of&#x20;NAT&#x20;router&#x20;translating&#x20;IP&#x20;addresses." width="285" height="99" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vdmVybGFwLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6Mjg1fX19" width="285" alt="Diagram&#x20;of&#x20;NAT&#x20;router&#x20;translating&#x20;IP&#x20;addresses." border="0">" </noscript> <figcaption class="media-body-wrap bg-accent-3 p-4 w-max-full text-sm text-left"> The internal IP range (237.16.32.xx) is also a registered range used by another network. Therefore, the router is translating the addresses to avoid a potential conflict with another network. It will also translate the registered global IP addresses back to the unregistered local IP addresses when information is sent to the internal network. </figcaption> </figure> <p>The internal network is usually a LAN (Local Area Network), commonly referred to as the stub domain. A stub domain is a LAN that uses IP addresses internally. Most of the network traffic in a stub domain is local, so it doesn't travel outside the internal network. An internal IP address can be either registered or unregistered, and a stub domain can include it. Of course, any computers that use unregistered IP addresses must use NAT to communicate with the rest of the world.</p> <p>In the next section we'll look at the different ways NAT can be configured.</p> <div id="sidebar-page2-el22" class="sidebar-section lazyload bg-tan p-6 mb-6" > <div class="text-3xl lg:text-4xl mb-2 text-royal-blue">Thank You</div> <p class="text-base">Special thanks to <a href="http://www.cisco.com" class="ext-link"><b>Cisco</b></a> for its support in creating this article.</p> </div> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-14"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline6" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline6" class="ad-tag "></div></div> </div> </div> </div> </div> <div class="page-content relative clear-both" id="page-wrap3" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt3"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="3" data-logged="false" data-page-url="nat3.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page3" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>NAT Configuration</span> </span> </h2> <div class="page-body se" id="page3" data-slide="3" data-track-gtm="Content" x-show.transition="pageVisible === true"> <div class="editorial-sidebar mx-auto mb-6 md:float-left md:ml-0 md:mr-6 md:mb-4" style="max-width:290px;" data-track-gtm="Editorial Sidebar"> <figure class="fragment-media lead-image media-vertical" style="max-width: 290px;" > <picture class="lazyload"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1hZGRyZXNzLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6MjkwfSwidG9Gb3JtYXQiOiJhdmlmIn19" type="image/avif"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1hZGRyZXNzLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6MjkwfX19"> <img class=" bg-gray-light bg-opacity-50" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEElEQVR42mNkIAAYRxWAAQAG9gAKqv6+AwAAAABJRU5ErkJggg==" data-src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1hZGRyZXNzLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6MjkwfX19" alt="Diagram&#x20;of&#x20;NAT&#x20;router&#x20;directing&#x20;global&#x20;and&#x20;private&#x20;IP&#x20;networks." width="290" height="106" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1hZGRyZXNzLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6MjkwfX19" width="290" alt="Diagram&#x20;of&#x20;NAT&#x20;router&#x20;directing&#x20;global&#x20;and&#x20;private&#x20;IP&#x20;networks." border="0">" </noscript> <figcaption class="media-body-wrap bg-accent-3 p-4 w-max-full text-sm text-left"> IP addresses have different designations based on whether they are on the private network (stub domain) or on the public network (Internet), and whether the traffic is incoming or outgoing. </figcaption> </figure> </div> <p>NAT can be configured in various ways. In the example below, the NAT router is configured to translate unregistered (inside, local) IP addresses, that reside on the private (inside) network, to registered IP addresses. This happens whenever a device on the inside with an unregistered address needs to communicate with the public (outside) network.</p> <div class="list"> <ul><li><span>An ISP assigns a range of IP addresses to your company. The assigned block of addresses are registered, unique IP addresses and are called inside global addresses. Unregistered, private IP addresses are split into two groups. One is a small group (outside local addresses) that will be used by the NAT routers. The other, much larger group, known as inside local IP addresses, will be used on the stub domain. The outside local addresses are used to translate the unique IP addresses, known as outside global addresses, of devices on the public network.</span></li></ul> </div> <div class="list"> <ul><li><span>Most computers on the stub domain communicate with each other using the inside local addresses.</span></li><li><span>Some computers on the stub domain communicate a lot outside the network. These computers have inside global addresses, which means that they do not require translation.</span></li><li><span>When a computer on the stub domain that has an inside local address wants to communicate outside the network, the packet goes to one of the NAT routers.</span></li><li><span>The NAT router checks the routing table to see if it has an entry for the destination address. If it does, the NAT device then translates the packet and creates an entry for it in the address translation table. If the destination address is not in the routing table, the packet is dropped.</span></li><li><span>Using an inside global address, the router sends the packet on to its destination.</span></li><li><span>A computer on the public network sends a packet to the private network. The source address on the packet is an outside global address. The destination address is an inside global address.</span></li><li><span>The NAT router looks at the address translation table and determines that the destination IP address is in there, mapped to a computer on the stub domain.</span></li><li><span>The NAT router translates the inside global address of the packet to the inside local address, and sends it to the destination computer.</span></li></ul> </div> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline7" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline7" class="ad-tag h-max-250"></div></div> </div> </div> </div> </div> <div class="page-content relative clear-both" id="page-wrap4" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt4"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="4" data-logged="false" data-page-url="nat4.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page4" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>The Connections of a NAT Overload</span> </span> </h2> <div class="page-body se" id="page4" data-slide="4" data-track-gtm="Content" x-show.transition="pageVisible === true"> <p>NAT overloading utilizes a feature of the <a href="https://computer.howstuffworks.com/web-server.htm">TCP/IP protocol stack</a>, multiplexing, that allows a computer to maintain several concurrent connections with a remote computer (or computers) using different TCP or UDP ports. An IP packet has a header that contains the following information:</p> <div class="list"> <ul><li><span><b>Source Address</b> - The IP address of the originating computer, such as 201.3.83.132</span></li><li><span><b>Source Port</b> - The TCP or UDP port number assigned by the originating computer for this packet, such as Port 1080</span></li><li><span><b>Destination Address</b> - The IP address of the receiving computer, such as 145.51.18.223</span></li><li><span><b>Destination Port</b> - The TCP or UDP port number that the originating computer is asking the receiving computer to open, such as Port 3021</span></li></ul> </div> <p>The addresses specify the two machines at each end, while the port numbers ensure that the connection between the two computers has a unique identifier. The combination of these four port numbers defines a single TCP/IP connection. Each port number uses 16 bits, which means that there are a possible 65,536 (2<sup>16</sup>) values. Realistically, since different manufacturers map the ports in slightly different ways, you can expect to have about 4,000 ports available.</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline9" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline9" class="ad-tag h-max-250"></div></div> </div> </div> </div> </div> <div class="page-content relative clear-both" id="page-wrap5" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt5"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="5" data-logged="false" data-page-url="nat5.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page5" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>Dynamic Network Address Translation</span> </span> </h2> <div class="page-body se" id="page5" data-slide="5" data-track-gtm="Content" x-show.transition="pageVisible === true"> <p>Here's how dynamic NAT works:</p> <div class="list"> <ul><li><span>An internal network (stub domain) has been set up with IP addresses that were not specifically allocated to that company by IANA (<a href="http://www.iana.org" class="ext-link">Internet Assigned Numbers Authority</a>), the global authority that hands out IP addresses. These addresses should be considered non-routable since they are not unique.</span></li><li><span>The company sets up a NAT-enabled router. The router has a range of unique IP addresses given to the company by IANA.</span></li><li><span>A computer on the stub domain attempts to connect to a computer outside the network, such as a web server.</span></li><li><span>The router receives the packet from the computer on the stub domain.</span></li><li><span>The router saves the computer's non-routable IP address to an address translation table. The router replaces the sending computer's non-routable IP address with the first available IP address out of the range of unique IP addresses. The translation table now has a mapping of the computer's non-routable IP address matched with the one of the unique IP addresses.</span></li><li><span>When a packet comes back from the destination computer, the router checks the destination address on the packet. It then looks in the address translation table to see which computer on the stub domain the packet belongs to. It changes the destination address to the one saved in the address translation table and sends it to that computer. If it doesn't find a match in the table, it drops the packet.</span></li><li><span>The computer receives the packet from the router. The process repeats as long as the computer is communicating with the external system.</span></li></ul> </div> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline11" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline11" class="ad-tag h-max-250"></div></div> </div> </div> </div> </div> <div class="page-content relative clear-both" id="page-wrap6" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt6"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="6" data-logged="false" data-page-url="nat6.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page6" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>How NAT Overloading Works</span> </span> </h2> <div class="page-body se" id="page6" data-slide="6" data-track-gtm="Content" x-show.transition="pageVisible === true"> <p>Here's how overloading works:</p> <div class="list"> <ul><li><span>An internal network (stub domain) has been set up with non-routable IP addresses that were not specifically allocated to that company by IANA.</span></li><li><span>The company sets up a NAT-enabled router. The router has a unique IP address given to the company by IANA.</span></li><li><span>A computer on the stub domain attempts to connect to a computer outside the network, such as a Web server.</span></li><li><span>The router receives the packet from the computer on the stub domain.</span></li><li><span>The router saves the computer's non-routable IP address and port number to an address translation table. The router replaces the sending computer's non-routable IP address with the router's IP address. The router replaces the sending computer's source port with the port number that matches where the router saved the sending computer's address information in the address translation table. The translation table now has a mapping of the computer's non-routable IP address and port number along with the router's IP address.</span></li><li><span>When a packet comes back from the destination computer, the router checks the destination port on the packet. It then looks in the address translation table to see which computer on the stub domain the packet belongs to. It changes the destination address and destination port to the ones saved in the address translation table and sends it to that computer.</span></li><li><span>The computer receives the packet from the router. The process repeats as long as the computer is communicating with the external system.</span></li><li><span>Since the NAT router now has the computer's source address and source port saved to the address translation table, it will continue to use that same port number for the duration of the connection. A timer is reset each time the router accesses an entry in the table. If the entry is not accessed again before the timer expires, the entry is removed from the table.</span></li></ul> </div> <p>In the next section we'll look at the organization of stub domains.</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline13" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline13" class="ad-tag h-max-250"></div></div> </div> </div> </div> </div> <div class="page-content relative clear-both" id="page-wrap7" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt7"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="7" data-logged="false" data-page-url="nat7.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page7" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>Stub Domains</span> </span> </h2> <div class="page-body se" id="page7" data-slide="7" data-track-gtm="Content" x-show.transition="pageVisible === true"> <p>Look below to see how the computers on a stub domain might appear to external networks.</p> <h3 class="font-bold text-xl mb-2">Source Computer A</h3> <p>IP Address: 192.168.32.10</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline15" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline15" class="ad-tag h-max-250"></div></div> </div> </div> <p>Computer Port: 400</p> <p>NAT Router IP Address: 215.37.32.203</p> <p>NAT Router Assigned Port Number: 1</p> <h3 class="font-bold text-xl mb-2">Source Computer B</h3> <p>IP Address: 192.168.32.13</p> <p>Computer Port: 50</p> <p>NAT Router IP Address: 215.37.32.203</p> <p>NAT Router Assigned Port Number: 2</p> <h3 class="font-bold text-xl mb-2">Source Computer C</h3> <p>IP Address: 192.168.32.15</p> <p>Computer Port: 3750</p> <p>NAT Router IP Address: 215.37.32.203</p> <p>NAT Router Assigned Port Number: 3</p> <h3 class="font-bold text-xl mb-2">Source Computer D</h3> <p>IP Address: 192.168.32.18</p> <p>Computer Port: 206</p> <p>NAT Router IP Address: 215.37.32.203</p> <p>NAT Router Assigned Port Number: 4</p> <p>As you can see, the NAT router stores the IP address and port number of each computer. It then replaces the IP address with its own registered IP address and the port number corresponding to the location, in the table, of the entry for that packet's source computer. So any external network sees the NAT router's IP address and the port number assigned by the router as the source-computer information on each packet.</p> <p>You can still have some computers on the stub domain that use dedicated IP addresses. You can create an access list of IP addresses that tells the router which computers on the network require NAT. All other IP addresses will pass through untranslated.</p> <p>The number of simultaneous translations that a router will support are determined mainly by the amount of DRAM (Dynamic Random Access Memory) it has. But since a typical entry in the address-translation table only takes about 160 bytes, a router with 4 MB of DRAM could theoretically process 26,214 simultaneous translations, which is more than enough for most applications.</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-14"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline16" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline16" class="ad-tag "></div></div> </div> </div> </div> </div> <div class="page-content relative clear-both" id="page-wrap8" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt8"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="8" data-logged="false" data-page-url="nat8.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page8" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>How IP Address Information is Classified</span> </span> </h2> <div class="page-body se" id="page8" data-slide="8" data-track-gtm="Content" x-show.transition="pageVisible === true"> <p>IANA has set aside specific ranges of IP addresses for use as non-routable, internal network addresses. These addresses are considered unregistered (for more information check out <a href="http://www.ietf.org/rfc/rfc1918.txt" class="ext-link">RFC 1918: Address Allocation for Private Internets</a>, which defines these address ranges). No company or agency can claim ownership of unregistered addresses or use them on public computers.</p> <p>Routers are designed to discard (instead of forward) unregistered addresses. What this means is that a packet from a computer with an unregistered address could reach a registered destination computer, but the reply would be discarded by the first router it came to.</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline17" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline17" class="ad-tag h-max-250"></div></div> </div> </div> <p>There is a range for each of the three classes of IP addresses used for networking:</p> <div class="list"> <ul><li><span>Range 1: Class A - 10.0.0.0 through 10.255.255.255</span></li><li><span>Range 2: Class B - 172.16.0.0 through 172.31.255.255</span></li><li><span>Range 3: Class C - 192.168.0.0 through 192.168.255.255</span></li></ul> </div> <p>Although each range is in a different class, your are not required to use any particular range for your internal network. It is a good practice, though, because it greatly diminishes the chance of an IP address conflict.</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-14"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline18" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline18" class="ad-tag "></div></div> </div> </div> </div> </div> <div class="page-content relative clear-both" id="page-wrap9" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt9"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="9" data-logged="false" data-page-url="nat9.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page9" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>Security and Administration</span> </span> </h2> <div class="page-body se" id="page9" data-slide="9" data-track-gtm="Content" x-show.transition="pageVisible === true"> <div class="editorial-sidebar mx-auto mb-6 md:float-left md:ml-0 md:mr-6 md:mb-4" style="max-width:290px;" data-track-gtm="Editorial Sidebar"> <figure class="fragment-media lead-image media-vertical" style="max-width: 290px;" > <picture class="lazyload"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1zdGF0aWMuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyOTB9LCJ0b0Zvcm1hdCI6ImF2aWYifX0=" type="image/avif"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1zdGF0aWMuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyOTB9fX0="> <img class=" bg-gray-light bg-opacity-50" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEElEQVR42mNkIAAYRxWAAQAG9gAKqv6+AwAAAABJRU5ErkJggg==" data-src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1zdGF0aWMuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyOTB9fX0=" alt="Diagram&#x20;showing&#x20;Static&#x20;NAT&#x20;directing&#x20;traffic&#x20;toward&#x20;a&#x20;public&#x20;network." width="290" height="94" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1zdGF0aWMuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyOTB9fX0=" width="290" alt="Diagram&#x20;showing&#x20;Static&#x20;NAT&#x20;directing&#x20;traffic&#x20;toward&#x20;a&#x20;public&#x20;network." border="0">" </noscript> <figcaption class="media-body-wrap bg-accent-3 p-4 w-max-full text-sm text-left"> Static NAT (inbound mapping) allows a computer on the stub domain to maintain a specific address when communicating with devices outside the network. </figcaption> </figure> </div> <p>Implementing dynamic NAT automatically creates a firewall between your internal network and outside networks, or between your internal network and the Internet. NAT only allows connections that originate inside the stub domain.</p> <p>Essentially, this means that a computer on an external network cannot connect to your computer unless your computer has initiated the contact. You can browse the Internet and connect to a site, and even download a file; but somebody else cannot latch onto your IP address and use it to connect to a port on your computer.</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline19" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline19" class="ad-tag h-max-250"></div></div> </div> </div> <p>In specific circumstances, Static NAT, also called inbound mapping, allows external devices to initiate connections to computers on the stub domain. For instance, if you wish to go from an inside global IP address to a specific inside local IP address that is assigned to your web server, Static NAT would enable the connection.</p> <p>Some NAT routers provide for extensive filtering and traffic logging. Filtering allows your company to control what type of sites employees visit on the web, preventing them from viewing questionable material. You can use traffic logging to create a log file of what sites are visited and generate various reports from it.</p> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-14"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline20" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline20" class="ad-tag "></div></div> </div> </div> </div> </div> <div class="page-content relative clear-both" id="page-wrap10" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt10"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="10" data-logged="false" data-page-url="nat10.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page10" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>A Note on Proxy Servers</span> </span> </h2> <div class="page-body se" id="page10" data-slide="10" data-track-gtm="Content" x-show.transition="pageVisible === true"> <p>NAT is sometimes confused with proxy servers, but there are definite differences between them. NAT is transparent to the source and to destination computers. Neither one realizes that it is dealing with a third device. But a proxy server is not transparent.</p> <p>The source computer knows that it is making a request to the proxy server and must be configured to do so. The destination computer thinks that the proxy server <b>IS</b> the source computer, and deals with it directly. Also, proxy servers usually work at layer 4 (transport) of the <a href="https://computer.howstuffworks.com/osi.htm">OSI Reference Model</a> or higher, while NAT is a layer 3 (network) protocol. Working at a higher layer makes proxy servers slower than NAT devices in most cases.</p> <figure class="fragment-media clear-both w-max-full mx-auto mb-6 md:float-left md:ml-0 md:mr-6 md:mb-4" style="max-width: 285px;" style="max-width: 285px;"> <picture class="lazyload"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vc2kuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyODV9LCJ0b0Zvcm1hdCI6ImF2aWYifX0=" type="image/avif"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vc2kuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyODV9fX0="> <img class=" bg-gray-light bg-opacity-50" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEElEQVR42mNkIAAYRxWAAQAG9gAKqv6+AwAAAABJRU5ErkJggg==" data-src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vc2kuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyODV9fX0=" alt="Diagram&#x20;of&#x20;OSI&#x20;reference&#x20;model,&#x20;showing&#x20;NAT&#x20;at&#x20;layer&#x20;3&#x20;&#x28;the&#x20;Network&#x20;layer&#x29;." width="285" height="325" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL25hdC1vc2kuanBnIiwiZWRpdHMiOnsicmVzaXplIjp7IndpZHRoIjoyODV9fX0=" width="285" alt="Diagram&#x20;of&#x20;OSI&#x20;reference&#x20;model,&#x20;showing&#x20;NAT&#x20;at&#x20;layer&#x20;3&#x20;&#x28;the&#x20;Network&#x20;layer&#x29;." border="0">" </noscript> <figcaption class="media-body-wrap bg-accent-3 p-4 w-max-full text-sm text-left"> NAT operates at the Network layer (layer 3) of the OSI Reference Model -- this is the layer that routers work at. </figcaption> </figure> <p>A real benefit of NAT is apparent in network administration. For example, you can move your Web server or FTP server to another host computer without having to worry about broken links. Simply change the inbound mapping at the router to reflect the new host. You can also make changes to your internal network easily, because the only external IP address either belongs to the router or comes from a pool of global addresses.</p> <p>NAT and DHCP (dynamic host configuration protocol ) are a natural fit. You can choose a range of unregistered IP addresses for your stub domain and have the DHCP server dole them out as necessary. It also makes it much easier to scale up your network as your needs grow. You don't have to request more IP addresses from IANA. Instead, you can just increase the range of available IP addresses configured in DHCP to immediately have room for additional computers on your network.</p> </div> </div> <div class="page-content relative clear-both" id="page-wrap11" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt11"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold se" data-page-nbr="11" data-logged="false" data-page-url="nat11.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page11" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>Multi-homing</span> </span> </h2> <div class="page-body se" id="page11" data-slide="11" data-track-gtm="Content" x-show.transition="pageVisible === true"> <p>As businesses rely more and more on the Internet, having multiple points of connection to the Internet is fast becoming an integral part of their network strategy. Multiple connections, known as multi-homing, reduces the chance of a potentially catastrophic shutdown if one of the connections should fail.</p> <p>In addition to maintaining a reliable connection, multi-homing allows a company to perform load-balancing by lowering the number of computers connecting to the Internet through any single connection. Distributing the load through multiple connections optimizes the performance and can significantly decrease wait times.</p> <p>Multi-homed networks are often connected to several different ISPs (Internet Service Providers). Each ISP assigns an IP address (or range of IP addresses) to the company. Routers use BGP (Border Gateway Protocol), a part of the TCP/IP protocol suite, to route between networks using different protocols. In a multi-homed network, the router utilizes IBGP (Internal Border Gateway Protocol) on the stub domain side, and EBGP (External Border Gateway Protocol) to communicate with other routers.</p> <p>Multi-homing really makes a difference if one of the connections to an ISP fails. As soon as the router assigned to connect to that ISP determines that the connection is down, it will reroute all data through one of the other routers.</p> <p>NAT can be used to facilitate scalable routing for multi-homed, multi-provider connectivity. For more on multi-homing, see <a href="http://www.cisco.com/warp/public/cc/pd/iosw/ioft/ionetn/tech/emios_wp.htm" class="ext-link">Cisco: Enabling Enterprise Multihoming</a>.</p> <p>For lots more information on NAT and related topics, check out the links on the next page.</p> </div> </div> <style> .faq { color: #707070; font-size: 1.125rem; line-height: 1.75; border-color: #a2d4d3; } .faq h3 { display: flex; align-items: center; font-weight: bold; color: #2B2B5C; font-size: 1.25rem; margin-bottom: 1.25rem; } .faq h3::before { content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 26 26'%3E%3Cpath d='M27.7,8.2H25.1V19.9H8.2v2.6a1.3,1.3,0,0,0,1.3,1.3H23.8L29,29V9.5A1.3,1.3,0,0,0,27.7,8.2ZM22.5,16V4.3A1.3,1.3,0,0,0,21.2,3H4.3A1.3,1.3,0,0,0,3,4.3V22.5l5.2-5.2h13A1.3,1.3,0,0,0,22.5,16Z' transform='translate(-3 -3)' fill='%2336a2a0'/%3E%3C/svg%3E"); color: #36A2A0; width: 26px; height: 26px; margin-right: 12px; } .faq h3::after { content: ''; height: 1px; background-color: #36A2A0; flex: 1 1 0%; margin-left: 12px; } .faq h5 { font-weight: bold; margin-bottom: 0.75rem; } .faq p { margin-bottom: 0.75rem; font-size: 1rem; line-height: 1.25; } .faq .questionContainer { margin-bottom: 1.5rem; } .faq .questionContainer:last-child { margin-bottom: 0; } </style> <div class="faq p-6 mt-6 mb-6 clear-both border"> <h3>Network Address Translation (NAT) FAQ</h3> <div class="questionContainer" itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> <h5 class="question" itemprop="name">What is a Network Address Translation?</h5> <div class="answerContainer" itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer"> <div class="answer" itemprop="text">A Network Address Translation or NAT is a mapping method of providing internet connection to local servers and hosts. In NAT, you take several local IPs and map them to one single global IP to transmit information across a routing device.</div> </div> </div> <div class="questionContainer" itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> <h5 class="question" itemprop="name">Does NAT affect Internet speed?</h5> <div class="answerContainer" itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer"> <div class="answer" itemprop="text">NAT only affects a little bit of your internet speed. It is barely noticeable if you’re using a reasonable router for translating your IPs. </div> </div> </div> <div class="questionContainer" itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> <h5 class="question" itemprop="name">What benefits are offered by Network Address Translation?</h5> <div class="answerContainer" itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer"> <div class="answer" itemprop="text">With NAT enabled, it is easier to re-use your personal IP addresses with extra security. Moreover, NAT allows you to keep your external and internal IP addresses private and secure. You can also save the memory of your IP address by connecting several hosts via the internet using only a few external IPs.</div> </div> </div> <div class="questionContainer" itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> <h5 class="question" itemprop="name">What is difference between NAT and PAT?</h5> <div class="answerContainer" itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer"> <div class="answer" itemprop="text">NAT stands for Network Address Translation while PAT stands for Port Address Translation. As the names suggest, both NAT and PAT are used to translate private IPs into public IPs to save space and connect multiple devices. The difference is that PAT uses port numbers to map IP addresses whereas NAT doesn’t.</div> </div> </div> <div class="questionContainer" itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> <h5 class="question" itemprop="name">How many types of NAT exist?</h5> <div class="answerContainer" itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer"> <div class="answer" itemprop="text">There are many forms of NAT. Static NAT maps an unregistered IP address to a registered IP address on a one-to-one basis; Dynamic NAT maps an unregistered IP address to a registered IP address from a group of registered IP addresses; Overloading maps multiple unregistered IP addresses to a single registered IP address by using different ports; Overlapping happens when a device on one network is assigned an IP address on the same subnet as another device on the internet or external network.</div> </div> </div>   </div> <div class="page-content relative clear-both" id="page-wrap12" x-data="{ pageVisible : true }"><a class="absolute left-0 top-n56" name="pt12"></a> <h2 class="page-title firePageview text-2xl mb-6 font-bold" data-page-nbr="12" data-logged="false" data-page-url="nat12.htm"> <span class="flex cursor-pointer " @click="pageVisible = !pageVisible" aria-expanded="true" aria-controls="page12" role="button"> <svg class="mt-3 mr-3 print:hidden shrink-0 fill-current stroke-current transition ease-in-out duration-200 transform" :class="{ 'rotate-180' : !pageVisible, '' : pageVisible }" xmlns='http://www.w3.org/2000/svg' width='22' height='10' viewbox='0 0 28.396 13.211'><path d='M4398.8,5158.252l13.224,10.507,12.357-10.507' transform='translate(-4397.399 -5156.842)' fill='none' stroke-linecap='round' stroke-width='2'/></svg> <span>Lots More Information</span> </span> </h2> <div class="page-body" id="page12" data-slide="12" data-track-gtm="Content" x-show.transition="pageVisible === true"> <h3 class="font-bold text-xl mb-2">Related Articles</h3> <div class="list"> <ul><li><span><a href="https://computer.howstuffworks.com/web-server.htm">How Web Servers Work</a></span></li><li><span><a href="https://computer.howstuffworks.com/lan-switch.htm">How LAN Switches Work</a></span></li><li><span><a href="https://computer.howstuffworks.com/router.htm">How Routers Work</a></span></li><li><span><a href="https://computer.howstuffworks.com/ethernet.htm">How Ethernet Works</a></span></li><li><span><a href="https://computer.howstuffworks.com/home-network.htm">How Home Networking Works</a></span></li><li><span><a href="https://computer.howstuffworks.com/osi.htm">How OSI Works</a></span></li></ul> </div> <h3 class="font-bold text-xl mb-2">More Great Links</h3> <div class="list"> <ul><li><span><a href="http://www.vicomsoft.com/knowledge/reference/nat.html" class="ext-link">Network Address Translation FAQ</a></span></li><li><span><a href="http://www.netsizer.com/" class="ext-link">Netsizer: Realtime Internet Growth</a></span></li><li><span>Cisco: Network Address Translation</span></li><li><span><a href="http://www.safety.net/nattech.html" class="ext-link">NAT Technical Discussion</a></span></li><li><span><a href="http://www.cisco.com/univercd/cc/td/doc/product/software/ios120/12cgcr/np1_c/1cprt2/1cipadr.htm" class="ext-link">Cisco: Configuring IP Addressing</a></span></li><li><span><a href="http://www.cisco.com/warp/public/556/3.html" class="ext-link">Cisco: NAT Overlapping</a></span></li><li><span><a href="http://www.cisco.com/warp/public/556/5.html" class="ext-link">Cisco: NAT Order of Operation</a></span></li><li><span><a href="http://www.cisco.com/warp/public/759/ipj_3-4/ipj_3-4_nat.html" class="ext-link">IP Journal: The Trouble With NAT</a></span></li><li><span><a href="http://www.cisco.com/warp/public/cc/pd/iosw/ioft/ionetn/tech/emios_wp.htm" class="ext-link">Cisco: Enabling Enterprise Multihoming</a></span></li><li><span><a href="http://www.faqs.org/rfcs/rfc1631.html" class="ext-link">RFC 1631: The IP Network Address Translator (NAT)</a></span></li><li><span><a href="http://www.ietf.org/rfc/rfc1918.txt" class="ext-link">RFC 1918: Address Allocation for Private Internets</a></span></li></ul> </div> </div> </div> </article> <div id="modal-citation-modal" x-cloak x-data="{ open: false }" x-show="open" @citation-modal.window="open = !open" class="fixed z-10 inset-0 overflow-y-auto" aria-modal="true"> <div class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"><div x-show="open" x-description="Background overlay, show/hide based on modal state." x-transition:enter="ease-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="fixed inset-0 bg-black bg-opacity-75 transition-opacity" aria-hidden="true"> </div><span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">&#8203;</span><div x-show="open" x-description="Modal panel, show/hide based on modal state." x-transition:enter="ease-out duration-300" x-transition:enter-start="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95" x-transition:enter-end="opacity-100 translate-y-0 sm:scale-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100 translate-y-0 sm:scale-100" x-transition:leave-end="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95" class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" role="dialog" aria-modal="true" aria-labelledby="modal-headline" @click.away="open = false"> <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> <div class="text-left"> <div class="text-xl font-bold" id="modal-headline"> Cite This! </div> <div class="mt-2"> <p class="font-bold">Please copy/paste the following text to properly cite this HowStuffWorks.com article:</p> <aside id="citationText" class="w-max-full mt-4 bg-accent-3 border border-accent-5"> <div class="relative p-7"> <div class="absolute top-0 right-0"> <button onclick="copyCitation()" class="inline-flex items-center self-center btn text-xs p-1"> <svg class="fill-current cursor-pointer" xmlns="http://www.w3.org/2000/svg" width="17" height="20" viewBox="0 0 23.625 29.25"> <path d="M20.813,3.375h-8.4A2.812,2.812,0,0,0,9.563,6.152v.6H9.035A2.812,2.812,0,0,0,6.188,9.527v20.25a2.872,2.872,0,0,0,2.848,2.848H23.66a2.812,2.812,0,0,0,2.777-2.848V29.25h.6A2.812,2.812,0,0,0,29.813,26.4V12.375Zm0,3.136,5.864,5.864H20.813Zm3.375,23.266a.568.568,0,0,1-.527.6H9.035a.626.626,0,0,1-.6-.6V9.527A.568.568,0,0,1,9.035,9h.527V26.965a2,2,0,0,0,2.285,2.285h12.34ZM27.563,26.4a.568.568,0,0,1-.527.6H12.41a.626.626,0,0,1-.6-.6V6.152a.568.568,0,0,1,.6-.527h6.152v9h9Z" transform="translate(-6.188 -3.375)"/> </svg> <span id="copyState" class="items-center self-center pl-2">Copy</span> </button> </div> <div> Jeff Tyson "NAT: How Network Address Translation Works" 2 February 2001.<br/>HowStuffWorks.com. &lt;https://computer.howstuffworks.com/nat.htm&gt; 28 November 2024 </div> </div> </aside> <script> function copyCitation() { var copyText = document.getElementById('citationText').innerHTML;copyText = copyText.replace(/(<([^>]+)>)/ig, ' ').replace(/\s+/ig, ' ').replace(/^\s+/,'');var e = document.createElement('textarea'); e.innerHTML = copyText; copyText = e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue; var copyState = document.getElementById('copyState'); copyToClipboard(copyText); copyState.innerHTML = 'Copied'; setTimeout(() => { copyState.innerHTML = 'Copy'; }, 1000); } const copyToClipboard = str => { const el = document.createElement('textarea'); el.value = str; el.setAttribute('readonly', ''); el.style.position = 'absolute'; el.style.left = '-9999px'; document.body.appendChild(el); el.select(); document.execCommand('copy'); document.body.removeChild(el); }; </script> </div> </div> </div> <div class="bg-lighter-gray px-4 py-3 sm:px-6 flex flex-row-reverse"><span class="flexrounded-md shadow-sm"> <button @click="open = false" type="button" class="inline-flex justify-center btn py-2 px-7 xl:py-3 xl:px-10 text-sm xl:text-lg"> Close </button> </span> </div> </div> </div> </div> <div class="bg-accent-3 p-6 xl:p-8 mb-8 lg:mb-11 clear-both print:hidden"> <div class="flex flex-col md:flex-row"> <div class="shrink self-center" id="share-bar-bottom"></div> <div class="flex-grow text-center pt-6 md:text-right md:pt-0 self-center font-bold text-lg"> <a class="text-black underline" data-track-gtm="Citation" id="citation-link-8894" x-data @click.prevent="$dispatch('citation-modal')" href="#">Citation</a> </div> </div> </div><script id="share-html-bottom" type="text/template"> <ul class="flex flex-wrap justify-between md:flex-nowrap md:justify-start"> <li class="flex-none w-full mb-4 text-center md:shrink md:w-auto md:mr-6 md:mb-0 mb:text-left self-center"><span class="font-bold text-royal-blue">Share:</span></li> <li class="mr-6 self-center"> <a target="_blank" class="share-facebook text-accent-1" data-track-gtm="Facebook" href="<% facebookURL %>" title="Share Content on Facebook"> <svg class="fill-current" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 35.997 35.779" aria-labelledby="shareBarFacebookTitle" role="img"> <title id="shareBarFacebookTitle">Share Content on Facebook</title> <path d="M36,18a18,18,0,1,0-20.811,17.78V23.2h-4.57V18h4.57V14.033c0-4.511,2.687-7,6.8-7a27.68,27.68,0,0,1,4.029.352v4.429H23.744a2.6,2.6,0,0,0-2.933,2.811V18H25.8L25,23.2H20.811V35.779A18,18,0,0,0,36,18Z"/> </svg> </a> <li class="mr-6 self-center"> <a target="_blank" class="share-linkedin text-accent-1" data-track-gtm="LinkedIn" href="<% linkedInURL %>" title="Share Content on LinkedIn"> <svg class="fill-current" xmlns="http://www.w3.org/2000/svg" width="28.301" height="27.64" viewBox="0 0 28.301 27.64" aria-labelledby="shareBarLinkedInTitle" role="img"> <title id="shareBarLinkedInTitle">Share Content on LinkedIn</title> <path d="M24.111,23.554H19.92V17.14c0-1.529-.032-3.5-2.184-3.5-2.185,0-2.519,1.664-2.519,3.385v6.526H11.027V10.365h4.026v1.8h.054a4.437,4.437,0,0,1,3.974-2.131c4.246,0,5.032,2.729,5.032,6.282v7.239ZM6.293,8.56A2.378,2.378,0,1,1,8.727,6.182,2.4,2.4,0,0,1,6.293,8.56Zm2.1,14.993h-4.2V10.365h4.2ZM26.208,0H2.088A2.041,2.041,0,0,0,0,1.991V25.649A2.04,2.04,0,0,0,2.088,27.64H26.2a2.048,2.048,0,0,0,2.1-1.991V1.991A2.049,2.049,0,0,0,26.2,0Z"/> </svg> </a> </li> <li class="md:mr-6 self-center"> <a class="share-email text-accent-1" data-track-gtm="Email" href="<% emailURL %>" title="Share Content via Email"> <svg class="fill-current" xmlns="http://www.w3.org/2000/svg" width="28.1569" height="22" viewBox="0 0 23.584 18.427" aria-labelledby="shareBarEmailTitle" role="img"> <title id="shareBarEmailTitle">Share Content via Email</title> <path d="M24.226,6H5.358A2.328,2.328,0,0,0,3.012,8.3L3,22.123a2.338,2.338,0,0,0,2.358,2.3H24.226a2.338,2.338,0,0,0,2.358-2.3V8.3A2.338,2.338,0,0,0,24.226,6Zm0,4.607-9.434,5.758L5.358,10.607V8.3l9.434,5.758L24.226,8.3Z" transform="translate(-3 -6)"/> </svg> </a> </li> </ul> </script> <script id="share-email-bottom" type="text/template"> Hi, I thought you would like this: <% url %>?utm_source=email&utm_medium=share&utm_campaign=hsw_share <% title %> </script> <script> var loadShare = function () { var s = HSW.assetUrl + 'js/share.min.js'; function initShare () { HSW.share.init('bottom', 'https://computer.howstuffworks.com/nat.htm', 'NAT\u003A\u0020How\u0020Network\u0020Address\u0020Translation\u0020Works', '', { }); } if (typeof HSW.share !== 'undefined') { initShare(); } else { HSW.utilities.loadScript(HSW.assetUrl + 'js/share.min.js', true, initShare); } }; HSW.utilities.delayLoad(loadShare); </script> </div> <script>const relatedIds = [8351, 4558, 526023], contArticleIds = [8351, 4558, 526023]</script> <script>function setupRelated(e,t,n){return{content:[],promoted:!1,parentContentId:e,parentContentLocale:t,paginatedSetupFn:n,init(){if("undefined"!=typeof relatedContent)this.setupModule(relatedContent);else{let e=this,t=HSW.site.toLowerCase();HSW.utilities.loadJson(`${HSW.domainApi}/related/${t}/${this.parentContentId}?w=300&locale=${this.parentContentLocale}`,t=>{e.setupModule(t)})}},setupModule(e){this.content=e.filter(e=>!relatedIds.contains(e.id));let t=this.content.filter(e=>void 0!==e.category),n=t.filter(e=>["article","list","article-with-html-code","article-structured"].includes(e.type.toLowerCase())),i=contArticleIds.concat(n.map(e=>e.id));i.length>0?this.$dispatch("populate-pending",{items:i}):this.$dispatch("disable-continuous",{disabled:!0});let a={event:"raw-event",eventCategory:"page-interaction",eventAction:"loaded"};if(dataLayer.push({...a,...{eventLabel:"related-programmatic"}}),relatedIds.length){let e={eventLabel:"related-editorial"};dataLayer.push({...a,...e})}if("undefined"!=typeof promotedRecirc&&3==promotedRecirc.length&&0==HSW.utilities.isMobile()){this.promoted=!0,this.content.unshift(promotedRecirc[0],promotedRecirc[1],promotedRecirc[2]);let e={eventLabel:"related-promoted"};dataLayer.push({...a,...e}),this.$nextTick(()=>{let e=document.querySelectorAll(".promoted-recirc-item"),t=new IntersectionObserver((e,t)=>{e.forEach(e=>{if(e.isIntersecting){let n=e.target,i=n.getAttribute("href"),a=parseInt(n.dataset.block)+1;dataLayer.push({event:"raw-event",eventCategory:"page-interaction",eventAction:"viewed",eventLabel:i,eventValue:a}),t.unobserve(n)}})},{threshold:.75});e.forEach(e=>{t.observe(e)})})}try{"function"==typeof this.paginatedSetupFn&&this.paginatedSetupFn(t[0].href)}catch(e){console.warn(e)}this.$nextTick(()=>{let e=document.getElementById("related-hero").querySelectorAll(".lazyload");HSW.utilities.lazyLoadElements(e),dataLayer.push({event:"object-load",eventAction:"related-content"})})}}}</script> <div id="related-hero" class="mb-6 lg:mb-11 print:hidden" data-track-gtm="Related Content" x-cloak x-data="setupRelated(8894, 'en-us', null)" x-show="!HSW.utilities.isMobile() || !pageMetricsData.continuousUX" > <div class="flex items-center mb-4 after:bg-theme-gradient after:flex-1 after:content-[''] after:h-4px" :class="{ 'hidden' : !content.length }"> <div class="mr-3 mb-0 text-3xl font-bold font-headline text-royal-blue">More Awesome Stuff</div> </div> <a class="print:hidden" href="https://computer.howstuffworks.com/internet/basics/what-is-an-ip-address.htm" data-track-gtm="Feature 1"> <div class="flex up-next flex-col lg:flex-row lg:items-stretch mb-8"> <picture class="lazyload"> <source media="(max-width: 320px)" data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2lwLWFkZHJlc3MtMS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjMyMH0sInRvRm9ybWF0IjoiYXZpZiJ9fQ==" type="image/avif"><source media="(min-width: 321px) and (max-width: 599px)" data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2lwLWFkZHJlc3MtMS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjQyMH0sInRvRm9ybWF0IjoiYXZpZiJ9fQ==" type="image/avif"><source media="(min-width: 600px)" data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2lwLWFkZHJlc3MtMS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjYwMH0sInRvRm9ybWF0IjoiYXZpZiJ9fQ==" type="image/avif"> <source media="(max-width: 320px)" data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2lwLWFkZHJlc3MtMS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjMyMH19fQ=="><source media="(min-width: 321px) and (max-width: 599px)" data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2lwLWFkZHJlc3MtMS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjQyMH19fQ=="><source media="(min-width: 600px)" data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2lwLWFkZHJlc3MtMS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjYwMH19fQ=="> <img class="bg-tan bg-gray-light bg-opacity-50" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEElEQVR42mNkIAAYRxWAAQAG9gAKqv6+AwAAAABJRU5ErkJggg==" data-src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2lwLWFkZHJlc3MtMS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjYwMH19fQ==" alt="woman&#x20;in&#x20;wheelchair&#x20;at&#x20;computer" width="600" height="337" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2lwLWFkZHJlc3MtMS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjYwMH19fQ==" width="600" alt="woman&#x20;in&#x20;wheelchair&#x20;at&#x20;computer" border="0">" </noscript> <div class="bg-tan p-4 lg:min-w-300 flex-grow"> <div class="hidden md:block font-bold text-black">Up Next</div> <div class="text-xl font-bold mb-2">What Is an IP Address?</div> <span class="btn inline-block lg:hidden xl:inline-block py-2 px-7 xl:text-base">Explore More</span> </div> </div> </a> <div class="grid grid-cols-1 grid-rows-6 lg:grid-cols-3 lg:grid-rows-2 gap-8 mb-8"> <template x-for="(c, i) in content.slice(0, 6)" :key="i"> <a class="flex flex-col text-white group transition-none bg-gray" :data-track-gtm="(promoted && i < 3 ? 'Promoted' : '')" :class="(promoted && i < 3 ? 'promoted-recirc-item' : '')" :href="c.href + (c.query_string ? '?' + c.query_string : '')" :target="(c.href.indexOf(HSW.domain + '.com') === -1 ? '_blank' : '_self')" :data-block="i" > <picture class="lazyload"> <img decoding="async" src="" :data-src="c.hero_image" :alt="c.hero_image_specs.alt_tag ? c.hero_image_specs.alt_tag : c.title" :width="c.hero_image_specs.width" :height="c.hero_image_specs.height" class="block object-cover w-100 group-hover:opacity-75 mx-auto" style="min-height: 10.9375rem; height: 8.75rem; transition: opacity 0.25s ease-in-out;"> </picture> <div class="flex-1 overflow-hidden text-lg font-bold font-headline bg-accent-2 mb-0 py-2 px-3 pb-4 group-hover:text-white md:leading-tight"> <span class="inline-block text-sm mb-2" x-text="c.category ? c.category.title : (c.site ? c.site.title : (c.curation_category ? c.curation_category[1].title : ''))"></span> <div class="line-clamp-3" x-text="c.title"></div> </div> </a> </template> </div> <a class="print:hidden" href="https://computer.howstuffworks.com/home-network.htm" data-track-gtm="Feature 2"> <div class="flex up-next flex-col lg:flex-row lg:items-stretch mb-8"> <picture class="lazyload"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2hvdy10by1vcmdhbml6ZS1ob21lLW9mZmljZS0xLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6MzYwfSwidG9Gb3JtYXQiOiJhdmlmIn19" type="image/avif"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2hvdy10by1vcmdhbml6ZS1ob21lLW9mZmljZS0xLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6MzYwfX19"> <img class="bg-tan bg-gray-light bg-opacity-50" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEElEQVR42mNkIAAYRxWAAQAG9gAKqv6+AwAAAABJRU5ErkJggg==" data-src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2hvdy10by1vcmdhbml6ZS1ob21lLW9mZmljZS0xLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6MzYwfX19" alt="Business&#x20;man&#x20;working&#x20;on&#x20;laptop&#x20;computer&#x20;at&#x20;home." width="360" height="240" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL2hvdy10by1vcmdhbml6ZS1ob21lLW9mZmljZS0xLmpwZyIsImVkaXRzIjp7InJlc2l6ZSI6eyJ3aWR0aCI6MzYwfX19" width="360" alt="Business&#x20;man&#x20;working&#x20;on&#x20;laptop&#x20;computer&#x20;at&#x20;home." border="0">" </noscript> <div class="bg-tan p-4 lg:min-w-300 flex-grow"> <div class="hidden md:block font-bold text-black">You May Like</div> <div class="text-xl font-bold mb-2">How Home Networking Works</div> <span class="btn inline-block lg:hidden xl:inline-block py-2 px-7 xl:text-base">Explore More</span> </div> </div> </a> <div class="grid grid-cols-1 grid-rows-6 lg:grid-cols-3 lg:grid-rows-2 gap-8 mb-8"> <template x-for="(c, i) in content.slice(6, 12)" :key="i"> <a class="flex flex-col text-white group transition-none bg-gray" :href="c.href + (c.query_string ? '?' + c.query_string : '')" :target="(c.href.indexOf(HSW.domain + '.com') === -1 ? '_blank' : '_self')" :data-block="i" > <picture class="lazyload"> <img decoding="async" src="" :data-src="c.hero_image" :alt="c.hero_image_specs.alt_tag ? c.hero_image_specs.alt_tag : c.title" :width="c.hero_image_specs.width" :height="c.hero_image_specs.height" class="block object-cover w-100 group-hover:opacity-75 mx-auto" style="min-height: 10.9375rem; height: 8.75rem; transition: opacity 0.25s ease-in-out;"> </picture> <div class="flex-1 overflow-hidden text-lg font-bold font-headline bg-accent-2 mb-0 py-2 px-3 pb-4 group-hover:text-white md:leading-tight"> <span class="inline-block text-sm mb-2" x-text="c.category ? c.category.title : (c.site ? c.site.title : (c.curation_category ? c.curation_category[1].title : ''))"></span> <div class="line-clamp-3" x-text="c.title"></div> </div> </a> </template> </div> <a class="print:hidden" href="https://electronics.howstuffworks.com/how-to-tech/how-to-surf-the-web-anonymously.htm" data-track-gtm="Feature 3"> <div class="flex up-next flex-col lg:flex-row lg:items-stretch mb-8"> <picture class="lazyload"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL3N1cmYtd2ViLWFub255bW91c2x5MS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjQwMH0sInRvRm9ybWF0IjoiYXZpZiJ9fQ==" type="image/avif"> <source " data-srcset="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL3N1cmYtd2ViLWFub255bW91c2x5MS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjQwMH19fQ=="> <img class="bg-tan bg-gray-light bg-opacity-50" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEElEQVR42mNkIAAYRxWAAQAG9gAKqv6+AwAAAABJRU5ErkJggg==" data-src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL3N1cmYtd2ViLWFub255bW91c2x5MS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjQwMH19fQ==" alt="Women&#x20;using&#x20;laptops&#x20;outdoors." width="400" height="267" border="0"> </picture> <noscript> "<img src="https://media.hswstatic.com/eyJidWNrZXQiOiJjb250ZW50Lmhzd3N0YXRpYy5jb20iLCJrZXkiOiJnaWZcL3N1cmYtd2ViLWFub255bW91c2x5MS5qcGciLCJlZGl0cyI6eyJyZXNpemUiOnsid2lkdGgiOjQwMH19fQ==" width="400" alt="Women&#x20;using&#x20;laptops&#x20;outdoors." border="0">" </noscript> <div class="bg-tan p-4 lg:min-w-300 flex-grow"> <div class="hidden md:block font-bold text-black">Keep Reading</div> <div class="text-xl font-bold mb-2">How to Surf the Web Anonymously</div> <span class="btn inline-block lg:hidden xl:inline-block py-2 px-7 xl:text-base">Explore More</span> </div> </div> </a> </div> <p class="ad-disclaimer clear-both text-xs text-center mb-1 hidden md:block">Advertisement</p> <div id="ad-wrap-inline1" class="print:hidden hidden md:block ad-inline mb-8 bg-gray w-max-full h-min-90 text-center"><div id="ad-div-inline1" class="ad-tag "></div></div> <script> (function () { var mw = 1200; if (!dfpSettings.isMobile && HSW.utilities.getViewportWidth() < mw) { var el = document.getElementById('ad-wrap-inline1'); var d = el.previousElementSibling; el.parentNode.removeChild(el); if (d.classList.contains('ad-disclaimer')) { d.parentNode.removeChild(d); } } })(); </script> <div class="sticky-container ad-container print:hidden md:hidden h-min-400 mb-6"> <div class="sticky top-99"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 md:hidden">Advertisement</p> <div id="ad-wrap-mobinline0" class="print:hidden md:hidden ad-inline ad-mobinline bg-gray w-max-full h-min-250"><div id="ad-div-mobinline0" class="ad-tag h-max-250"></div></div> </div> </div> <script> (function () { if (HSW.utilities.isMobile() && pageMetricsData.continuousUX) { const nodes = document.querySelectorAll('.ad-mobinline'); var maxId = 0; nodes.forEach((n) => { let idStr = n.getAttribute('id'); let id = parseInt(idStr.replace('ad-wrap-mobinline', '')); maxId = Math.max(maxId, id); }); const newId = maxId + 1; document.getElementById('ad-wrap-mobinline0').setAttribute('id', 'ad-wrap-mobinline' + newId); document.getElementById('ad-div-mobinline0').setAttribute('id', 'ad-div-mobinline' + newId); } })(); </script><div class="mb-8" id="continuous-load" x-data="continuousLoad()" x-init="init()" x-show="pendingItems" @populate-pending.window="pendingItems = $event.detail.items" @disable-continuous.window="if ($event.detail.disabled) { shutdown() }"> <div id="continuously-loaded"></div> <div class="h-64 w-full flex text-royal-blue items-center justify-center" id="continuous-load-trigger"> <svg class="animate-spin -ml-1 mr-3 h-5 w-5 " xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24"> <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> </svg> <span>Loading...</span> </div> </div> <script> function continuousLoad(){return{originalUrl:null,originalPageMetricsData:null,triggerElement:null,observer:null,orgObserver:null,pendingItems:[],items:[],newContentObserver:null,fetching:!1,disabled:!1,init(){const t=this;this.originalUrl=location.href,this.originalPageMetricsData={...pageMetricsData},this.triggerElement=document.querySelector("#continuous-load-trigger"),this.loadedDiv=document.querySelector("#continuously-loaded"),"off"!==HSW.utilities.hashArgs.continuous?this.disabled?this.triggerElement.parentNode.removeChild(this.triggerElement):(this.observer=new IntersectionObserver(function(e){!0===e[0].isIntersecting&&t.getNextContent()},{rootMargin:"1000px 0px",threshold:0}),this.observer.observe(this.triggerElement),this.newContentObserver=new IntersectionObserver(function(e){var i=null;if(e.forEach(t=>{t.isIntersecting&&t.intersectionRatio>0&&(i=t.target)}),i){let e=i.dataset.contentId;if(pageMetricsData.contentid==e)return;let a=t.itemByContentId(e);if(!1===a)return;if(pageMetricsData={...a},history.pushState&&location.href!=pageMetricsData.href)try{history.pushState(null,pageMetricsData.title+" | HowStuffWorks",pageMetricsData.href)}catch(t){console.warn(t)}document.title=pageMetricsData.title+" | HowStuffWorks",Alpine.store("share",{title:pageMetricsData.title,url:pageMetricsData.href,image:pageMetricsData.image})}},{threshold:[0]})):this.triggerElement.parentNode.removeChild(this.triggerElement)},itemByContentId(t){var e=!1;return this.items.forEach(i=>{i.contentid==t&&(e=i)}),e},getNextContent(){if(!this.pendingItems||!this.pendingItems.length||this.disabled)return;if(this.fetching)return;this.fetching=!0;const t=this;0===this.items.length&&history.pushState&&null===this.orgObserver&&(this.orgObserver=new IntersectionObserver(function(e){if(!1===e[0].isIntersecting&&history.pushState&&location.href!=t.originalUrl){let e={...t.originalPageMetricsData};pageMetricsData=e,document.title=pageMetricsData.title+" | HowStuffWorks",history.pushState(null,document.title,t.originalUrl),Alpine.store("share",{title:pageMetricsData.title,url:location.href,image:pageMetricsData.image})}},{threshold:[0]}),this.orgObserver.observe(document.getElementById("continuously-loaded")));const e=this.pendingItems.shift(),i=this.items.length+2;if(HSW.utilities.isMobile()){var a=0;document.querySelectorAll(".ad-mobinline").forEach(t=>{let e=t.getAttribute("id"),i=parseInt(e.replace("ad-wrap-mobinline",""));a=Math.max(a,i)});var r=a+1}try{fetch(`${HSW.domainApi}/continuous/${e}`).then(t=>t.json()).then(a=>{let n=function(t){var e=`<div id="content-loaded-${t.id}" class="new-content-loaded" style="contain: layout;">\n\t\t\t\t<div class="page-title flex flex-rows items-center mb-4">\n\t\t\t\t\t<h1 class="flex-grow font-headline text-3xl md:text-5xl text-royal-blue leading-tighter">${t.title}</h1>\n\t\t\t\t</div>\n\n\t\t\t\t<p class="mb-4">`;t.byline_authors_html&&(e+=`By: ${t.byline_authors_html}`),t.byline_authors_html&&t.byline_date_html&&(e+="&nbsp;|&nbsp;"),t.byline_date_html&&(e+=t.byline_date_html);var i=t.body_html.replaceAll('"pt','"pt'+t.id+"_");return e+=`\n\t\t\t\t</p>\n\t\t\t\t<div class="bg-hsw-gradient w-100 mb-4"></div>\n\n\t\t\t\t<div class="editorial-body mb-8">${i=i.replaceAll("#pt","#pt"+t.id+"_")}</div>\n\n\t\t\t</div>`}(a);this.loadedDiv.innerHTML+=n,document.title=a.title+" | HowStuffWorks";let s="content-loaded-"+a.id,l=document.getElementById(s);l.dataset.contentId=a.id;let o=l.querySelectorAll(".lazyload");HSW.utilities.lazyLoadElements(o),HSW.ux.editorial.init({twitter:!0,facebook:!0,instagram:!0}),l.querySelectorAll(".toc a").forEach(t=>{t.addEventListener("click",t=>{t.preventDefault();let e=t.target.dataset.target,i=document.querySelector("a[name='"+e+"']");i?i.scrollIntoView({behavior:"auto"}):console.error("Unable to locate target with name "+e)})});try{if(userData.adsActive)if(HSW.utilities.isMobile()){l.querySelectorAll(".ad-mobinline").forEach(t=>{t.setAttribute("id","ad-wrap-mobinline"+r),t.childNodes[0].setAttribute("id","ad-div-mobinline"+r),void 0!==HSW.ads&&HSW.pq.add(()=>{HSW.ads.addNewUnits(["ad-div-mobinline"+r])},"ads"),r++})}else{let t=document.createElement("div");t.setAttribute("id","ad-after-"+e),t.classList.add("ad-inline","mb-8","bg-gray","w-max-full","h-min-90","text-center");let a=document.createElement("div");a.setAttribute("id","ad-div-inline"+i),t.appendChild(a),l.after(t),void 0!==HSW.ads&&HSW.pq.add(()=>{HSW.ads.addNewUnits(["ad-div-inline"+i])},"ads")}}catch(t){console.error(t)}if(window.setupSinglePageUX(l),history.pushState)try{history.pushState(null,a.title+" | HowStuffWorks",a.href)}catch(t){console.warn(t)}var c=[];a.taxonomy.forEach((t,e)=>{c[e]=t.title.toLowerCase()});var d=c.join("/"),h=[];a.authors.forEach((t,e)=>{h[e]=t.first_name.toLowerCase()+" "+t.last_name.toLowerCase()});var g=h.join(",");pageMetricsData.href=a.href,pageMetricsData.title=a.title,pageMetricsData.tax=d,pageMetricsData.aType=a.asset_type,pageMetricsData.cType=a.type+"-continuous",pageMetricsData.template=a.template,pageMetricsData.source=a.source,pageMetricsData.sponsor=a.sponsor,pageMetricsData.author=g,pageMetricsData.contentid=a.id,pageMetricsData.image=a.hero_image,pageMetricsData.page=0,pageMetricsData.pubDate=a.publish_date.slice(0,10),pageMetricsData.editDate=a.last_editorial_date.slice(0,10);const u=/[^\da-z_]/i;let p=HSW.utilities.isMobile()?"hsw_lite":"hsw";a.taxonomy.slice(1,3).forEach((t,e)=>{p+="|"+t.title.replace(u,"").toLowerCase()}),pageMetricsData.adUnit=p,Alpine.store("share",{title:pageMetricsData.title,url:pageMetricsData.href,image:pageMetricsData.image}),function(t,e){let i=t.href.split(".com/").pop();dataLayer.push({event:"virtual-page-view",virtualPageUrl:i,virtualPageTitle:document.title,pageNbr:0}),dataLayer.push({event:"raw-event-interactive",eventCategory:"page-interaction",eventAction:"continuous-load",eventLabel:"new-content",eventValue:e+1,virtualPageUrl:t.href})}(a,this.items.length);const m={...pageMetricsData};t.items.push(m);for(var f=document.getElementsByClassName("new-content-loaded"),v=0;v<f.length;v++)t.newContentObserver.observe(f[v]);t.fetching=!1})}catch(e){console.error(e),t.fetching=!1}var n;0===this.pendingItems.length&&((n=this).observer.unobserve(n.triggerElement),n.triggerElement.parentNode.removeChild(n.triggerElement),n.$dispatch("disable-ad-fill",{disabled:!0}))},shutdown(){this.triggerElement.parentNode.removeChild(this.triggerElement)}}} </script> </div> </div><div class="hidden print:hidden md:shrink-0 md:block relative flex-none col-rail" style="width: 300px; max-width: 300px;" data-track-gtm="Rail"> <div class="sticky-container ad-container print:hidden hidden md:block h-min-1000 mb-8"> <div class="sticky top-0"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 hidden md:block">Advertisement</p> <div id="ad-wrap-rail1" class="print:hidden hidden md:block bg-gray w-max-full h-min-250"><div id="ad-div-rail1" class="ad-tag h-max-600"></div></div> </div> </div> <div class="sticky-container ad-container print:hidden hidden md:block h-min-1000 mb-8"> <div class="sticky top-0"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 hidden md:block">Advertisement</p> <div id="ad-wrap-rail2" class="print:hidden hidden md:block bg-gray w-max-full h-min-250"><div id="ad-div-rail2" class="ad-tag h-max-600"></div></div> </div> </div> <div class="sticky-container ad-container print:hidden hidden md:block h-min-1000 mb-8"> <div class="sticky top-0"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 hidden md:block">Advertisement</p> <div id="ad-wrap-rail3" class="print:hidden hidden md:block bg-gray w-max-full h-min-250"><div id="ad-div-rail3" class="ad-tag h-max-600"></div></div> </div> </div> <div class="mb-8" id="ad-fill" x-data="adFill()" x-init="init(4)" @disable-ad-fill.window="disabled = $event.detail.disabled"> <div id="rr-ad-fill"></div> <div class="h-64 w-full" id="continuous-ad-load-trigger"></div> </div> <script> var railAdTemplate = ` <div class="sticky-container ad-container print:hidden hidden md:block h-min-1000 mb-8"> <div class="sticky top-0"> <p class="ad-disclaimer clear-both text-xs text-center mb-1 hidden md:block">Advertisement</p> <div id="ad-wrap-rail9999" class="print:hidden hidden md:block bg-gray w-max-full h-min-250"><div id="ad-div-rail9999" class="ad-tag h-max-600"></div></div> </div> </div> `; var railAdLastTemplate = ` <p class="ad-disclaimer clear-both text-xs text-center mb-1 hidden md:block">Advertisement</p> <div id="ad-wrap-rail9999" class="print:hidden hidden md:block sticky top-0 mb-8 bg-gray w-max-full h-min-250"><div id="ad-div-rail9999" class="ad-tag h-max-600"></div></div> `; function adFill(){return{triggerElement:null,observer:null,isObserverPolyfilled:!1,nextIndex:0,maxIndex:30,disabled:!1,init(e){if("off"===HSW.utilities.hashArgs.ads)return;if("article-structured"==pageMetricsData.cType||HSW.utilities.isMobile()||!1===userData.adsActive)return;const t=this;this.triggerElement=document.querySelector("#continuous-ad-load-trigger"),this.nextIndex=e||this.nextIndex,"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"isIntersecting"in window.IntersectionObserverEntry.prototype&&"intersectionRatio"in window.IntersectionObserverEntry.prototype?(this.observer=new IntersectionObserver(function(e){!0===e[0].isIntersecting&&t.getNextAd()},{rootMargin:"1000px 0px",threshold:.01}),this.observer.observe(this.triggerElement)):(this.isObserverPolyfilled=!0,window.alpineInfiniteRRScroll={scrollFunc(){var e=t.triggerElement.getBoundingClientRect();e.top<window.innerHeight&&e.bottom>=0&&t.getNextAd()}},window.addEventListener("scroll",window.alpineInfiniteRRScroll.scrollFunc))},getNextAd(){if(this.disabled)return;var e=document.createElement("template");let t=document.querySelectorAll(".col-rail .sticky-container")[this.nextIndex-2];if(this.nextIndex<this.maxIndex){var i=railAdTemplate.replaceAll("rail9999","rail"+this.nextIndex).trim();e.innerHTML=i;var n=e.content.firstChild;t.after(n)}else{i=railAdLastTemplate.replaceAll("rail9999","rail"+this.nextIndex).trim();e.innerHTML=i;var r=e.content.firstChild;n=e.content.lastChild;t.after(n),t.after(r)}if(HSW.pq.add(()=>{try{HSW.ads.addNewUnits(["ad-div-rail"+this.nextIndex])}catch(e){}},"ads"),this.nextIndex==this.maxIndex)return this.isObserverPolyfilled?window.removeEventListener("scroll",window.alpineInfiniteRRScroll.scrollFunc):this.observer.unobserve(this.triggerElement),void this.triggerElement.parentNode.removeChild(this.triggerElement);this.nextIndex++}}} </script> </div> </div> </div> </main> <script>var nlValidLocs=["Newsletter","Popup","Footer","Chatbox"],nlIsLanding=["home page","landing page"].contains(pageMetricsData.aType),nlShown=!1,nlModalTimer=!1,nlIconTimer=!1,nlBannerTimer=!1,nlDialogueDone=!1;function ajaxNewsletterForm(e,t,n,i){var s=document.getElementById(e);document.getElementById(t).addEventListener("click",function(a){a.preventDefault();var l=document.getElementById(t);l.disabled=!0;var o=document.getElementById(i),r=document.getElementById(n);if(o.classList.add("hidden"),r.classList.add("hidden"),"chatbox-form"==e){var c=document.getElementById("cbc-3");document.getElementById("cbt-3").innerHTML=s.querySelector("input[type='email']").value,c.classList.remove("hidden");var d=document.getElementById("cbc-4")}if(isValidEmail(s)){var u=s.querySelector("input[name='website']");if(u.value&&u.value.length)return!1;"chatbox-success"==n?(r.innerHTML="Subscribing...",d.classList.remove("hidden")):(r.innerHTML="Subscribing...",r.classList.remove("hidden")),submitSubscribeForm(s,r,o)}else o.innerHTML="Please provide a valid email address.","chatbox-form"==e&&d.classList.remove("hidden"),o.classList.remove("hidden"),l.disabled=!1})}function submitSubscribeForm(e,t,n){var i=new XMLHttpRequest;i.open("POST","/newsletter/signup",!0),i.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");var s=new FormData(e),a=new URLSearchParams(s).toString();n.classList.add("hidden"),t.classList.add("hidden"),i.onload=function(){if(this.status>=200&&this.status<400){var i=JSON.parse(this.response);if(0==i.error){if("chatbox-success"==t.id){t.innerHTML='<div>You\'re subscribed!</div><div class="ml-1"><img src="https://cdn.hswstatic.com/en-us/hsw/img/raising-hands.png"/></div>';var s=e.querySelector("input[name='email']");s.classList.remove("text-gray-darkest"),s.classList.add("text-gray-dark"),s.value="You're subscribed!",document.getElementById("nlcb-dot").classList.add("invisible"),document.getElementById("nlcb-icon").classList.remove("animate-wiggle")}else t.innerHTML=i.message;t.classList.remove("hidden");var a=document.getElementById("signup-form");void 0!==a&&null!=a&&a.classList.add("hidden");var l=document.getElementById("signup-success");void 0!==l&&null!=l&&l.classList.remove("hidden");var o=e.querySelector("input[name='formloc']");dataLayer&&"object"==typeof o&&o.value&&o.value.length&&nlValidLocs.includes(o.value)&&dataLayer.push({url:location.pathname+location.hash,eventCategory:"page-interaction",eventAction:"subscribe",event:"raw-event-interactive",eventLabel:"MailChimp : "+o.value+" : Subscribe"}),setCookie("hsw_nlsub","Y",3154e7)}else{if(n.innerHTML=i.message,n.classList.remove("hidden"),"chatbox-success"==t.id)var r=e.querySelector("button");else r=e.querySelector("input[type='submit']");r.disabled=!1}}else n.innerHTML=i.message,n.classList.remove("hidden")},i.onerror=function(){n.innerHTML=data.message,n.classList.remove("hidden")},i.send(a)}function isValidEmail(e){var t=e.querySelector("input[type='email']");return!(""==t.value||!/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/gim.test(t.value))}function initNewsletterModal(e){!0!==HSW.utilities.isMobile()&&!0!==HSW.utilities.hasNewsletterCookie()&&!0!==fromNl&&!0!==nlIsLanding&&HSW.pq.add(()=>{nlModalTimer=setTimeout(function(){ajaxNewsletterForm("popup-form","popup-subscribe","popup-success","popup-failure"),e("newsletter-modal"),newsletterShown("Popup")},2e4)})}function initNewsletterChatbox(e){!1===HSW.utilities.isMobile()||!0===HSW.utilities.hasNewsletterCookie()||!0===fromNl||nlIsLanding||HSW.pq.add(()=>{document.getElementById("nlcb").classList.replace("hidden","flex");var t=document.referrer;t.includes("howstuffworks.com")||t.includes("hswinternal.com")?document.getElementById("nlcb-dot").classList.remove("invisible"):(nlIconTimer=setTimeout(function(){document.getElementById("nlcb-dot").classList.remove("invisible"),document.getElementById("nlcb-icon").classList.add("animate-wiggle")},5e3),nlBannerTimer=setTimeout(function(){var e=document.getElementById("nlcb-banner");e.classList.add("animate-fadein"),e.classList.replace("hidden","flex")},5200)),document.getElementById("nlcb-banner-close").addEventListener("click",function(e){e.preventDefault(),document.getElementById("nlcb-banner").classList.replace("flex","hidden")}),ajaxNewsletterForm("chatbox-form","chatbox-subscribe","chatbox-success","chatbox-success"),e("newsletter-chatbox")})}function newsletterShown(e){!1===window.nlShown&&(setCookie("hsw_nl","Y",2592e6),dataLayer&&nlValidLocs.includes(e)&&dataLayer.push({url:location.pathname+location.hash,eventCategory:"page-interaction",eventAction:"shown",event:"raw-event",eventLabel:"MailChimp : "+e+" : Shown"})),window.nlShown=!0}function cancelTimers(){clearTimeout(nlIconTimer),clearTimeout(nlBannerTimer)}function startDialogue(){newsletterShown("Chatbox"),document.getElementById("nlcb-banner").classList.replace("flex","hidden");document.getElementById("chatbox-success");if(0==nlDialogueDone){var e=1;['<div>Hey there!</div><div class="mt-1 ml-1"><img src="https://cdn.hswstatic.com/en-us/hsw/img/waving-hand-sign.png"/></div>',"<div>It's a crazy world out there. If you'd like to stay up to date (or go down really fun rabbit holes), we think you'd really like our newsletter. Unsubscribe anytime.</div>","<div>Enter your email to get our newsletter.</div>"].forEach(function(t,n){var i=document.getElementById("cbc-"+n);setTimeout(function(){i.classList.replace("hidden","flex")},e),e+=900;var s=document.getElementById("cbt-"+n);setTimeout(function(){s.innerHTML=t},e),e+=1100}),nlDialogueDone=!0}}</script> <div id="async-footer"></div> <script> HSW.utilities.docReady(function() { var request = new XMLHttpRequest(); var elm = document.getElementById('async-footer'); request.open('GET', 'https://www.howstuffworks.com/export/async-footer?nlPopup=1&nlFooter=1&locale=en-us', true); request.onload = function() { if (this.status >= 200 && this.status < 400) { elm.innerHTML = this.response; if (document.getElementById('subscribe-form') != null) { ajaxNewsletterForm('subscribe-form','subscribe-submit','subscribe-success','subscribe-failure'); } } else { elm.innerHTML = "an error occurred. status=" + this.status; } }; request.onerror = function() { elm.innerHTML = "an error occurred." + this.status; }; request.send(); }); </script> <script>HSW.utilities.loadScript(HSW.assetUrl + 'js/ux.editorial.min.js', true, function () { HSW.ux.editorial.init({ 'twitter' : false, 'facebook' : false, 'instagram' : false, }); });</script> <script>window.setupSinglePageUX=function(e){e=e||document;var t=new IntersectionObserver(function(e,t){Array.prototype.forEach.call(e,function(e){var a=e.target.dataset.logged,r=e.target.dataset.pageUrl,g=e.target.dataset.pageTitle||e.target.textContent.trim(),n=parseInt(e.target.dataset.pageNbr);e.isIntersecting&&"false"===a&&(dataLayer.push({event:"virtual-page-view",virtualPageUrl:r,virtualPageTitle:g,pageNbr:n}),e.target.dataset.logged="true",t.unobserve(e.target))})},{rootMargin:"0px",threshold:.5}),a=e.querySelectorAll(".firePageview");Array.prototype.forEach.call(a,function(e){t.observe(e)})},window.setupSinglePageUX();</script> <script> dfpSettings.ads = new Array; dfpSettings.ads.push('ad-div-bannerTop'); dfpSettings.ads.push('ad-div-mobadhesion'); dfpSettings.ads.push('ad-div-inline1'); dfpSettings.ads.push('ad-div-inline2'); dfpSettings.ads.push('ad-div-inline3'); dfpSettings.ads.push('ad-div-inline4'); dfpSettings.ads.push('ad-div-inline5'); dfpSettings.ads.push('ad-div-inline6'); dfpSettings.ads.push('ad-div-inline7'); dfpSettings.ads.push('ad-div-inline8'); dfpSettings.ads.push('ad-div-inline9'); dfpSettings.ads.push('ad-div-inline10'); dfpSettings.ads.push('ad-div-inline11'); dfpSettings.ads.push('ad-div-inline12'); dfpSettings.ads.push('ad-div-inline13'); dfpSettings.ads.push('ad-div-inline14'); dfpSettings.ads.push('ad-div-inline15'); dfpSettings.ads.push('ad-div-inline16'); dfpSettings.ads.push('ad-div-inline17'); dfpSettings.ads.push('ad-div-inline18'); dfpSettings.ads.push('ad-div-inline19'); dfpSettings.ads.push('ad-div-inline20'); dfpSettings.ads.push('ad-div-inline1sponsor'); dfpSettings.ads.push('ad-div-inline2sponsor'); dfpSettings.ads.push('ad-div-mobinline1'); dfpSettings.ads.push('ad-div-mobinline2'); dfpSettings.ads.push('ad-div-mobinline3'); dfpSettings.ads.push('ad-div-mobinline4'); dfpSettings.ads.push('ad-div-mobinline5'); dfpSettings.ads.push('ad-div-mobinline6'); dfpSettings.ads.push('ad-div-mobinline7'); dfpSettings.ads.push('ad-div-mobinline8'); dfpSettings.ads.push('ad-div-mobinline9'); dfpSettings.ads.push('ad-div-mobinline10'); dfpSettings.ads.push('ad-div-mobinline11'); dfpSettings.ads.push('ad-div-mobinline12'); dfpSettings.ads.push('ad-div-mobinline13'); dfpSettings.ads.push('ad-div-mobinline14'); dfpSettings.ads.push('ad-div-mobinline15'); dfpSettings.ads.push('ad-div-mobinline16'); dfpSettings.ads.push('ad-div-mobinline17'); dfpSettings.ads.push('ad-div-mobinline18'); dfpSettings.ads.push('ad-div-mobinline19'); dfpSettings.ads.push('ad-div-mobinline20'); dfpSettings.ads.push('ad-div-mobinline21'); dfpSettings.ads.push('ad-div-mobinline22'); dfpSettings.ads.push('ad-div-mobinline23'); dfpSettings.ads.push('ad-div-mobinline24'); dfpSettings.ads.push('ad-div-mobinline25'); dfpSettings.ads.push('ad-div-mobinline26'); dfpSettings.ads.push('ad-div-mobinline27'); dfpSettings.ads.push('ad-div-mobinline28'); dfpSettings.ads.push('ad-div-mobinline29'); dfpSettings.ads.push('ad-div-mobinline30'); dfpSettings.ads.push('ad-div-mobinline1sponsor'); dfpSettings.ads.push('ad-div-mobinline2sponsor'); dfpSettings.ads.push('ad-div-rail1'); dfpSettings.ads.push('ad-div-rail2'); dfpSettings.ads.push('ad-div-rail3'); dfpSettings.ads.push('ad-div-rail4'); dfpSettings.ads.push('ad-div-rail5'); dfpSettings.ads.push('ad-div-rail6'); dfpSettings.ads.push('ad-div-rail7'); dfpSettings.ads.push('ad-div-rail8'); dfpSettings.ads.push('ad-div-rail9'); dfpSettings.ads.push('ad-div-rail10'); dfpSettings.ads.push('ad-div-rail11'); dfpSettings.ads.push('ad-div-rail12'); dfpSettings.ads.push('ad-div-rail13'); dfpSettings.ads.push('ad-div-rail14'); dfpSettings.ads.push('ad-div-rail15'); dfpSettings.ads.push('ad-div-rail16'); dfpSettings.ads.push('ad-div-rail17'); dfpSettings.ads.push('ad-div-rail18'); dfpSettings.ads.push('ad-div-rail19'); dfpSettings.ads.push('ad-div-rail20'); dfpSettings.ads.push('ad-div-rail21'); dfpSettings.ads.push('ad-div-rail22'); dfpSettings.ads.push('ad-div-rail23'); dfpSettings.ads.push('ad-div-rail24'); dfpSettings.ads.push('ad-div-rail25'); dfpSettings.ads.push('ad-div-rail26'); dfpSettings.ads.push('ad-div-rail27'); dfpSettings.ads.push('ad-div-rail28'); dfpSettings.ads.push('ad-div-rail29'); dfpSettings.ads.push('ad-div-rail30'); </script> <script> HSW.pq.add(() => { if (userData.adsActive) { HSW.utilities.loadScript(HSW.assetUrl + 'js/ads.min.js'); } else { HSW.utilities.loadScript(HSW.assetUrl + 'js/fallback.min.js'); } }, 'ads'); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10