 
    
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Introduction Archives - Complete, Concrete, Concise</title>
	<atom:link href="https://complete-concrete-concise.com/category/tutorials/webdev/introduction/feed/" rel="self" type="application/rss+xml" />
	<link>https://complete-concrete-concise.com/category/tutorials/webdev/introduction/</link>
	<description>Practical Information Without The Bloat</description>
	<lastBuildDate>Sun, 12 Mar 2023 13:23:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>Understanding the Difference Between &#034;Front-End&#034;, &#034;Back-End&#034;, and &#034;Full-Stack&#034;.</title>
		<link>https://complete-concrete-concise.com/tutorials/webdev/introduction/understanding-the-difference-between-front-end-back-end-and-full-stack/</link>
		
		<dc:creator><![CDATA[richardsplanet]]></dc:creator>
		<pubDate>Fri, 16 Mar 2018 16:02:04 +0000</pubDate>
				<category><![CDATA[Introduction]]></category>
		<category><![CDATA[back-end]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[full-stack]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[understanding]]></category>
		<guid isPermaLink="false">https://complete-concrete-concise.com/?p=3435</guid>

					<description><![CDATA[<p>Learn what Front-End, Back-End, and Full-Stack mean.</p>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/introduction/understanding-the-difference-between-front-end-back-end-and-full-stack/">Understanding the Difference Between &quot;Front-End&quot;, &quot;Back-End&quot;, and &quot;Full-Stack&quot;.</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="preamble">
The terms <strong>Front-End</strong>, <strong>Back-End</strong>, and <strong>Full-Stack</strong> come up often in Web Development.<br />
What do they mean?
</div>
<h2 id="front-end">Front End</h2>
<p>Front-End, basically, means everything that happens in the browser. This includes the page design (layout, colours, typography), behaviour, and implementation.<br />
HTML, CSS, and JavaScript are the three main technologies used in front-end development:</p>
<ul>
<li>HTML is the foundation on which all webpages are built, so it is essential.</li>
<li>CSS allows you to customize the look of HTML. It is not essential, but webpages without CSS look very plain.</li>
<li>JavaScript is not essential, but it allows you to add special behaviour to a webpage that is not possible using HTML and CSS alone. Many websites can be built without using JavaScript.</li>
</ul>
<p>In addition to those three technologies, a front-end developer will likely use additional technology in the form of frameworks, libraries, and tools such as:</p>
<ul>
<li>jQuery</li>
<li>Bootstrap</li>
<li>express.js</li>
<li>SASS</li>
<li>LESS</li>
<li>YAML</li>
<li>AngularJS</li>
<li>AJAX</li>
</ul>
<p>Front-end development can be as simple as basic a webpage, as complicated as managing a database<a id="fnref1" class="footnote-ref" href="#fn1"><sup>1</sup></a>, or as challenging as writing a game.<br />
Front-end development can be, roughly, divided into:</p>
<ul>
<li><strong>Design</strong>: the layout, look, colours, typography, usability</li>
<li><strong>Implementation</strong>: turning the design into something functional</li>
</ul>
<p>As well, front-end development skills can also be used for writing browser extensions for Mozilla Firefox, Google Chrome, Microsoft Edge, and Apple Safari &#8211; because they all use HTML, CSS and JavaScript.<br />
In the past, there were more front-end technologies, but these are, effectively, obsolete:</p>
<ul>
<li>VBScript</li>
<li>ActionScript</li>
<li>Flash</li>
<li>Java</li>
<li>and others</li>
</ul>
<h2 id="back-end">Back-End</h2>
<p>Back-End, basically, means everything that happens on the server. This mostly involves database work and processing data on the server to be sent to the browser.<br />
A programming language (or two), a database, and server software are the main technologies used in back-end development. However, there is a lot more variety in back-end technology than in front-end technology.<br />
Much of the skills and knowledge of front-end development are also applicable for back-end work because the back-end (<strong>server</strong>) has to send HTML pages to the front-end (browser or <strong>client</strong>).<br />
In terms of programming languages, the following are commonly used for back-end development:</p>
<ul>
<li>PHP</li>
<li>Python</li>
<li>Ruby</li>
<li>Java</li>
<li>C#</li>
<li>C++</li>
<li>Perl</li>
<li>Scala</li>
<li>JavaScript</li>
<li>and many more</li>
</ul>
<p>Relational and non-relational databases are used (though, usually not on the same project):</p>
<ul>
<li>MySQL</li>
<li>MariaDB</li>
<li>MongoDB</li>
<li>and many others</li>
</ul>
<p>There is also the server technology that is used:</p>
<ul>
<li>Apache</li>
<li>nginx</li>
<li>node.js</li>
<li>and many more</li>
</ul>
<p>There are also many frameworks and libraries that are used:</p>
<ul>
<li>WordPress</li>
<li>Django</li>
<li>Ruby on Rails</li>
<li>Laravel</li>
<li>Symfony</li>
<li>CodeIgnitor</li>
<li>KOA</li>
<li>Flask</li>
<li>and many more</li>
</ul>
<p>Backend-end development can be, roughly, divided into:</p>
<ul>
<li><strong>Database Design</strong>: the structure of the database</li>
<li><strong>Application Coding</strong>: this is the algorithms, processing, and flow of data through the back-end. This may be even further subdivided.</li>
<li><strong>Glue Coding</strong>: this is code that binds the database, application, and server technology together</li>
<li><strong>Server</strong>: for most small installations, the default configuration of the server is often “good enough” (assuming it has been properly secured). However, for larger servers, or more complex tasks, there can be custom server development and configuration. While this could be lumped together with <strong>Application Coding</strong> it is a sufficiently complex task that needs to be done independently of everything else</li>
</ul>
<h2 id="full-stack">Full-Stack</h2>
<p>Full-Stack refers the <em>full-stack of technology</em>, which is everything from the front-end all the way to the back-end.<br />
So full-stack means everything that occurs on the server, in the browser and everything in between.<br />
While there is a lot of technology involved (not to mention design issues), it is possible to learn enough to be a proficient full-stack developer. It is not about learning everything, it is about learning enough to do what you need.</p>
<section class="footnotes">
<hr />
<ol>
<li id="fn1">HTML5 browsers have a database called IndexDB that can be used for managing data on the <strong>client</strong> side. A common use is to replicate much of the functionality of the <strong>server</strong> so that even if the <strong>client</strong> is not connected to the <strong>Internet</strong>, the web application can still be used. This is becoming increasingly important as people expect their apps to always work.<a class="footnote-back" href="#fnref1">↩</a></li>
</ol>
</section>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/introduction/understanding-the-difference-between-front-end-back-end-and-full-stack/">Understanding the Difference Between &quot;Front-End&quot;, &quot;Back-End&quot;, and &quot;Full-Stack&quot;.</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Understanding How the World Wide Web (WWW) Works</title>
		<link>https://complete-concrete-concise.com/tutorials/webdev/introduction/understanding-how-the-world-wide-web-www-works/</link>
		
		<dc:creator><![CDATA[richardsplanet]]></dc:creator>
		<pubDate>Tue, 06 Mar 2018 14:55:53 +0000</pubDate>
				<category><![CDATA[Introduction]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[understanding]]></category>
		<category><![CDATA[uri]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[world wide web]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://complete-concrete-concise.com/?p=3411</guid>

					<description><![CDATA[<p>A high level overview of the technologies that are the foundation of how the World Wide Web works.</p>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/introduction/understanding-how-the-world-wide-web-www-works/">Understanding How the World Wide Web (WWW) Works</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="preamble">The Internet and the World Wide Web are not the same things, even though people often use these terms interchangeably. The Web is a collection of webpages, videos, pictures, and applications that are all connected together, while the Internet is a global network of devices that can send and receive data.</div>
<h2 id="a-little-background">A Little Background</h2>
<p>In the 1980s, Sir Tim Berners-Lee was working at CERNfound it difficult to access documents and information from different computers:</p>
<blockquote><p>I found it frustrating that in those days, there was different information on different computers, but you had to log on to different computers to get at it. Also, sometimes you had to learn a different program on each computer. So finding out how things worked was really difficult.<a id="fnref1" class="footnote-ref" href="#fn1"><sup>1</sup></a></p></blockquote>
<p>In 1989, he proposed a <strong>hypertext</strong><a id="fnref2" class="footnote-ref" href="#fn2"><sup>2</sup></a> based system for accessing, sharing, and linking documents. At that time, the standard practice for document organization was a centralized repository. Sir Tim Berners-Lee proposed to do away with that:</p>
<blockquote><p>[T]he hope would be to allow a pool of information to develop which could grow and evolve with the organisation and the projects it describes. For this to be possible, the method of storage must not place its own restraints on the information. This is why a “web” of notes with links (like references) between them is far more useful than a fixed hierarchical system.<a id="fnref3" class="footnote-ref" href="#fn3"><sup>3</sup></a></p></blockquote>
<p>In 1990, he wrote the first <em>web browser</em> and <em>web server</em> and developed three fundamental technologies that form the foundation of the <strong>World Wide Web</strong>:</p>
<ul>
<li><strong>Hypertext Markup Language</strong> (HTML) &#8211; this is used to create webpages.</li>
<li><strong>Uniform Resource Locator</strong> (URL) &#8211; a string of characters used to identify a resource and its location.<a id="fnref4" class="footnote-ref" href="#fn4"><sup>4</sup></a></li>
<li><strong>Hypertext Transfer Protocol</strong> (HTTP) &#8211; the protocol by which <strong>HTML</strong> resources are accessed on the <strong>Internet</strong>.</li>
</ul>
<p>While Sir Tim Berners-Lee’s primary concern was for a web of interconnected <strong>hypertext</strong> documents, he realized that many other resources could be interlinked. His implementation was so successful that the <strong>World Wide Web</strong> includes:</p>
<ol type="1">
<li>Documents &#8211; like this webpage</li>
<li>Images &#8211; Flickr allows people to share and access photos</li>
<li>Video &#8211; YouTube allows people to share and access videos</li>
<li>Audio &#8211; Spotify allows people to listen to music</li>
<li>Applications &#8211; Google Docs is an online word processor</li>
</ol>
<p><a href="https://complete-concrete-concise.com/wp-content/uploads/2018/03/understanding-how-the-world-wide-web-work-1-compressor.jpg"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-3422" src="https://complete-concrete-concise.com/wp-content/uploads/2018/03/understanding-how-the-world-wide-web-work-1-compressor.jpg" alt="" width="600" height="424" /></a><br />
The <a href="http://info.cern.ch/hypertext/WWW/TheProject.html">first website</a> to go live was at CERN in 1991.<br />
By the end of 1991, there were a total of three websites worldwide:</p>
<ol type="1">
<li><a href="http://info.cern.ch/hypertext/WWW/TheProject.html">CERN</a></li>
<li><a href="http://vlib.org/">The World Wide Web Virtual Library</a> (also at CERN)</li>
<li><a href="https://www6.slac.stanford.edu/">Stanford Linear Accelerator Center</a> &#8211; the first North American website.</li>
</ol>
<p>By the end of 1992, there were a total of 10 websites worldwide.<br />
As of early 2023, there are almost 2 billion websites.</p>
<h2 id="the-world-wide-web">The World Wide Web</h2>
<p>The <strong>Internet</strong> is the global network of interconnected devices transferring datagrams<a id="fnref5" class="footnote-ref" href="#fn5"><sup>5</sup></a> using the <strong>Internet Protocol</strong> (IP). Most datagrams are transported using the <strong>Transmission Control Protocol</strong> (TCP) protocol.<a id="fnref6" class="footnote-ref" href="#fn6"><sup>6</sup></a><br />
The <strong>World Wide Web</strong> (WWW) is a service that runs on the <strong>Internet</strong>. It is the collection of documents<a id="fnref7" class="footnote-ref" href="#fn7"><sup>7</sup></a> written in <strong>Hypertext Markup Language</strong> (HTML)<a id="fnref8" class="footnote-ref" href="#fn8"><sup>8</sup></a>, identified by a <strong>Uniform Resource Locator</strong> (URL), and transferred using the <strong>Hypertext Transfer Protocol</strong> (HTTP). All of this is done on the <strong>Internet</strong> using <strong>TCP</strong> and <strong>IP</strong>.<br />
<strong>IP</strong> identifies devices on the Internet, <strong>TCP</strong> transports datagrams between them, and <strong>HTTP<a id="fnref9" class="footnote-ref" href="#fn9"><sup>9</sup></a></strong> is used to access content. <strong>TCP</strong> is like a delivery company that transports goods to the correct address, while <strong>HTTP</strong> packages resources so that they can be transported by <strong>TCP</strong> from one device to another. There are other application layer protocols like <strong>FTP</strong>,<a id="fnref10" class="footnote-ref" href="#fn10"><sup>10</sup></a> <strong>SSH</strong>,<a id="fnref11" class="footnote-ref" href="#fn11"><sup>11</sup></a> <strong>SMTP</strong>,<a id="fnref12" class="footnote-ref" href="#fn12"><sup>12</sup></a> <strong>POP3</strong>,<a id="fnref13" class="footnote-ref" href="#fn13"><sup>13</sup></a> that are used on the Internet, but <strong>HTTP</strong> is the most commonly used.</p>
<p><strong>HTTP</strong> is not the only <em>application layer</em> protocol in use on the <strong>Internet</strong>, but it is the most visible. Most people don’t notice (or even know about) other <em>application layer</em> protocols such as: <strong>FTP</strong>,<a id="fnref10" class="footnote-ref" href="#fn10"><sup>10</sup></a> <strong>SSH</strong>,<a id="fnref11" class="footnote-ref" href="#fn11"><sup>11</sup></a> <strong>SMTP</strong>,<a id="fnref12" class="footnote-ref" href="#fn12"><sup>12</sup></a> <strong>POP3</strong>,<a id="fnref13" class="footnote-ref" href="#fn13"><sup>13</sup></a> etc.</p>
<h2 id="hypertext-markup-language-html">Hypertext Markup Language (HTML)</h2>
<p><strong>HTML</strong> is used to write webpages and web applications. It is often combined with <strong>Cascading Style Sheets</strong> (CSS) and <strong>JavaScript</strong> (JS).<a id="fnref14" class="footnote-ref" href="#fn14"><sup>14</sup></a><br />
<strong>HTML</strong> documents are sent by <strong>web servers</strong> and <em>rendered</em> by <strong>web clients</strong> (web browsers) to display the contents of a webpage to a user.<br />
Here&#8217;s an example of a simple webpage:</p>
<div id="cb1" class="sourceCode">
<pre class="sourceCode html"><code class="sourceCode html"><a id="cb1-1" class="sourceLine" data-line-number="1"></a><span class="dt">&lt;!DOCTYPE </span>html<span class="dt">&gt;</span>
<a id="cb1-2" class="sourceLine" data-line-number="2"></a><span class="kw">&lt;html&gt;</span>
<a id="cb1-3" class="sourceLine" data-line-number="3"></a>  <span class="kw">&lt;head&gt;</span>
<a id="cb1-4" class="sourceLine" data-line-number="4"></a>    <span class="kw">&lt;title&gt;</span>A Simple Webpage<span class="kw">&lt;/title&gt;</span>
<a id="cb1-5" class="sourceLine" data-line-number="5"></a>  <span class="kw">&lt;/head&gt;</span>
<a id="cb1-6" class="sourceLine" data-line-number="6"></a>  <span class="kw">&lt;body&gt;</span>
<a id="cb1-7" class="sourceLine" data-line-number="7"></a>    <span class="kw">&lt;h1&gt;</span>This is important!<span class="kw">&lt;/h1&gt;</span>
<a id="cb1-8" class="sourceLine" data-line-number="8"></a>    <span class="kw">&lt;p&gt;</span>Check out this site:<span class="kw">&lt;/p&gt;</span>
<a id="cb1-9" class="sourceLine" data-line-number="9"></a>    <span class="kw">&lt;a</span><span class="ot"> href=</span><span class="st">"//example.com"</span><span class="kw">&gt;</span>Example<span class="kw">&lt;/a&gt;</span>
<a id="cb1-10" class="sourceLine" data-line-number="10"></a>  <span class="kw">&lt;/body&gt;</span>
<a id="cb1-11" class="sourceLine" data-line-number="11"></a><span class="kw">&lt;/html&gt;</span></code></pre>
</div>
<p>All <strong>HTML</strong> documents are composed of <strong>HTML</strong> tags which (usually) come in pairs. There is an opening tag, like <span class="kbd">&lt;html&gt;</span> and its corresponding closing tag <span class="kbd">&lt;/html&gt;</span>. These tags <strong>markup</strong> the document.<br />
<strong>HTML</strong> tags perform three different functions:</p>
<ul>
<li><strong>Structural Markup</strong> tags are used to indicate the structure and purpose of the text in the document. We can see that this page is divided into two parts: a <span class="kbd">&lt;head&gt;</span> that contains <em>metainformation</em><a id="fnref15" class="footnote-ref" href="#fn15"><sup>15</sup></a> about the page and a <span class="kbd">&lt;body&gt;</span> that contains the content displayed to the user. In the body, we see there is a <em>heading</em> (<span class="kbd">&lt;h1&gt;</span>) and a <em>paragraph</em> (<span class="kbd">&lt;p&gt;</span>).</li>
<li><strong>Presentational Markup</strong> is used to indicate how text should be displayed to the user &#8211; for example, <strong>bold</strong>, <em>italic</em>, <del>strikethrough</del>, etc. There is no presentation markup in this simple webpage. <strong>CSS</strong> is recommended for presentation markup.</li>
<li><strong>Hypertext Markup</strong> is used to create links inside the document to other documents or resources. In this page, there is a single hypertext link &#8211; the anchor tag <span class="kbd">&lt;a&gt;</span></li>
</ul>
<p>In general, <strong>HTML</strong> documents are plain text documents with special annotations (<strong>HTML</strong> tags) to describe the structure of the document. <strong>Web clients</strong> (web browsers) display the content to the user.</p>
<h2 id="uniform-resource-locator-url">Uniform Resource Locator (URL)</h2>
<p>A <strong>Uniform Resource Locator</strong> (URL) is used to access resources on the <strong>WWW</strong>. It has the following format:</p>
<pre class="url"><code>&lt;access protocol&gt;://&lt;host&gt;/&lt;location &amp; resource name&gt;</code></pre>
<ul>
<li><strong>access protocol</strong> specifies how the resource is to be accessed. For the <strong>WWW</strong> it is either <strong>HTTP</strong> or <strong>HTTPS</strong><a id="fnref16" class="footnote-ref" href="#fn16"><sup>16</sup></a>. There are many different access protocols for the <strong>Internet</strong>.<a id="fnref17" class="footnote-ref" href="#fn17"><sup>17</sup></a> Technically, you should always include the access protocol when you type the <strong>URL</strong> for a website. However, browsers (being helpful) will automatically prefix the protocol for you.</li>
<li><strong>host</strong> specifies which device on the <strong>Internet</strong> contains the resource. It can be an <strong>IP</strong> address (like <span class="kbd">127.0.0.1</span>) or, more commonly, a human readable string (like <span class="kbd">www.complete-concrete-concise.com</span>) which is translated by a <strong>Domain Name System</strong> (DNS) into an <strong>IP</strong> address.</li>
<li><strong>location &amp; resource name</strong> specifies the name of the resource and where it is located. If no resource name is given, <strong>web servers</strong> return <span class="kbd">index.html</span> by default.</li>
</ul>
<p>Let’s consider the following <strong>URL</strong>:</p>
<pre class="url"><code>https://complete-concrete-concise.com/sample/helloworld.html</code></pre>
<ul>
<li>The <strong>access protocol</strong> is <strong>https</strong>.</li>
<li>The <strong>host</strong> is <strong>complete-concrete-concise.com</strong>.</li>
<li>The <strong>location &amp; resource</strong> is <strong>/sample/helloworld.html</strong>.</li>
</ul>
<h2 id="hypertext-transfer-protocol-http">Hypertext Transfer Protocol (HTTP)</h2>
<p><strong>HTTP</strong> responses indicate the status of a request, with two common responses being 200 (OK) for a successful request and 404 (NOT FOUND) for when the requested resource cannot be found.</p>
<p><strong>HTTP</strong> is a <strong>request-response</strong> protocol for data transfer on the <strong>World Wide Web</strong>. It is most commonly used for transferring hypertext documents, like <strong>HTML</strong>, but can be used to transfer other types of content.</p>
<p>It operates on a <strong>client-server</strong> model. The <strong>client</strong> sends a <em>request</em> to a <strong>server</strong>. The <strong>server</strong> then <em>responds</em> to the <strong>client</strong>. For example, a web browser (<strong>client</strong>) that <em>requests</em> a webpage from a website (<strong>server</strong>); the website (<strong>server</strong>) <em>responds</em> by sending the webpage to the web browser (<strong>client</strong>).<a id="fnref18" class="footnote-ref" href="#fn18"><sup>18</sup></a></p>
<p>It is a stateless protocol.<a id="fnref21" class="footnote-ref" href="#fn21"><sup>19</sup></a> This means that each <strong>HTTP request</strong> is independent of all other <strong>HTTP requests</strong>. In other words, the current <em>request</em> knows nothing about previous requests: all information to fulfill the <em>request</em> must be contained in the request itself.</p>
<p>Two common <strong>HTTP</strong> requests are <strong>GET,</strong> used to request a resource from a server, and <strong>POST,</strong> used to send data to a server, such as when submitting a comment or form.</p>
<p><strong>HTTP</strong> responses indicate the status of a request, with two common responses being 200 (OK) for a successful request and 404 (NOT FOUND) for when the requested resource cannot be found.</p>
<h2 id="summary">Summary</h2>
<ol type="1">
<li>The <strong>World Wide Web</strong> is one of many services that run on top of the <strong>Internet</strong>.</li>
<li>The <strong>World Wide Web</strong> is the global collection of resources written using <strong>Hypertext Markup Language</strong> (HTML),<a id="fnref22" class="footnote-ref" href="#fn22"><sup>20</sup></a> identified using a <strong>Uniform Resource Locator</strong> (URL), and transferred using the <strong>Hypertext Transfer Protocol</strong> (HTTP).</li>
<li><strong>Clients</strong> <em>request</em> resources from <strong>servers</strong> using <strong>HTTP</strong>.</li>
<li><strong>Servers</strong> <em>respond</em> to <strong>clients</strong> using <strong>HTTP</strong>.</li>
<li><strong>HTTP</strong> is transported using <strong>TCP</strong> between devices adhering to the <strong>Internet Protocol</strong>.</li>
<li>The flexibility of <strong>HTTP</strong> has contributed to the <strong>World Wide Web</strong> becoming extremely popular because it handles all types of content: from documents to videos, from images to applications.</li>
</ol>
<h2 id="further-reading">Further Reading</h2>
<p>If you are interested in learning more about, check out the following resources:</p>
<h4 id="world-wide-web">World Wide Web</h4>
<ul>
<li><a href="https://www.w3.org/TR/webarch/">Architecture of the World Wide Web</a></li>
</ul>
<h4 id="uniform-resource-locators">Uniform Resource Locators</h4>
<ul>
<li><a href="https://www.w3.org/TR/uri-clarification/">URIs, URLs, and URNs: Clarifications and Recommendations</a></li>
</ul>
<h4 id="hypertext-transfer-protocol">Hypertext Transfer Protocol</h4>
<ul>
<li><a href="https://tools.ietf.org/html/rfc2616">RFC2616</a> &#8211; this is an older document about the <strong>HTTP/1.1</strong> specification. It is a good place to start because it is all in one place.</li>
</ul>
<p>If you want more information, then the following, more recent, documents give more information. They update RFC2616 and break it down into multiple documents, but may be information overload:</p>
<ul>
<li><a href="https://tools.ietf.org/html/rfc7230">RFC 7230</a> Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</li>
<li><a href="https://tools.ietf.org/html/rfc7231">RFC 7231</a> Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</li>
<li><a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a> Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</li>
<li><a href="https://tools.ietf.org/html/rfc7233">RFC 7233</a> Hypertext Transfer Protocol (HTTP/1.1): Range Requests</li>
<li><a href="https://tools.ietf.org/html/rfc7234">RFC 7234</a> Hypertext Transfer Protocol (HTTP/1.1): Caching</li>
<li><a href="https://tools.ietf.org/html/rfc7235">RFC 7235</a> Hypertext Transfer Protocol (HTTP/1.1): Authentication</li>
</ul>
<section class="footnotes">
<hr />
<ol>
<li id="fn1">From <a href="https://www.w3.org/People/Berners-Lee/Kids.html">Answers For Young People</a><a class="footnote-back" href="#fnref1">↩</a></li>
<li id="fn2">Hypertext is a type of document that contains links (called hyperlinks) to other documents. These links can be clicked to access the other documents.<a class="footnote-back" href="#fnref2">↩</a></li>
<li id="fn3">From <a href="https://www.w3.org/History/1989/proposal.html">Information Management: A Proposal</a><a class="footnote-back" href="#fnref3">↩</a></li>
<li id="fn4">Strictly speaking, this is untrue. Berners-Lee developed the <strong>Uniform Resource Identifier</strong> (URI). There are many kinds of URIs, two common ones are: <strong>Uniform Resource Name</strong> (URN) and <strong>Uniform Resource Locator</strong> (URL). A <strong>URN</strong> identifies a resource. For example, the book <em>A Tale of Two Cities by Charles Dickens</em> is a <strong>URN</strong>. A <strong>URL</strong>, on the other hand, identifies <em>both</em> the resource and its location. For example, the book <em>A Tale of Two Cities by Charles Dickens can be found at the library on the third bookshelf, second shelf from the bottom, fifth book from the left</em> is a <strong>URL</strong> because it specifies both the resource and its location. A <strong>URN</strong> only specifies the name of a resource. Therefore, all <strong>URLs</strong> are <strong>URIs</strong>, but not all <strong>URIs</strong> are <strong>URLs</strong> (because some <strong>URIs</strong> are <strong>URNs</strong>)<a class="footnote-back" href="#fnref4">↩</a></li>
<li id="fn5">A datagram is a packet of information. The IP datagram consists of a header and a payload.<a class="footnote-back" href="#fnref5">↩</a></li>
<li id="fn6">There are other protocols, but <strong>TCP</strong>’s robustness and reliability make it very popular.<a class="footnote-back" href="#fnref6">↩</a></li>
<li id="fn7">Strictly speaking, this is untrue. The official definition of the <strong>World Wide Web</strong> is “<a href="https://www.w3.org/TR/webarch/#intro">an information space in which the items of interest, referred to as resources, are identified by global identifiers called Uniform Resource Identifiers (URI)</a>”. The official definition is vague on what a “resource is”: “<a href="https://www.w3.org/TR/webarch/#id-resources">We do not limit the scope of what might be a resource.</a>”. However, practically speaking, most, if not all, resources are <strong>HTML</strong> webpages or things that act as if they were <strong>HTML</strong> pages.<a class="footnote-back" href="#fnref7">↩</a></li>
<li id="fn8">It does not have to be <strong>HTML</strong>, it could be <strong>XHTML</strong>, <strong>XML</strong>, <strong>SVG</strong>, or any other <strong>HTML-like</strong> markup language.<a class="footnote-back" href="#fnref8">↩</a></li>
<li id="fn9">Technically, <strong>HTTP</strong> is an <em>application layer</em> protocol and interface. This concept doesn’t translate well into the real, physical world we inhabit. If you give someone a drink of water, it has to be in an <em>interface</em> that is useful &#8211; like a glass. The glass is <strong>HTTP</strong>, giving the person the water in the glass is <strong>TCP</strong>, and the receiver is <strong>IP</strong>. Consider shipping marbles to someone: there is an address (<strong>IP</strong>), a courier company does the delivery (<strong>TCP</strong>), but, in order to ship the marbles, you have to adhere to some conventions (protocols) and package the marbles in a box (interface) (<strong>HTTP</strong>).<a class="footnote-back" href="#fnref9">↩</a></li>
<li id="fn10"><strong>File Transfer Protocol</strong> is used for transferring computer files.<a class="footnote-back" href="#fnref10">↩</a></li>
<li id="fn11"><strong>Secure Shell</strong> provides secure access to a computer over a network.<a class="footnote-back" href="#fnref11">↩</a></li>
<li id="fn12"><strong>Simple Mail Transfer Protocol</strong> is used for transmitting emails.<a class="footnote-back" href="#fnref12">↩</a></li>
<li id="fn13"><strong>Post Office Protocol</strong> is used retrieve email from a remote server.<a class="footnote-back" href="#fnref13">↩</a></li>
<li id="fn14">These will all be covered in greater detail in future tutorials.<a class="footnote-back" href="#fnref14">↩</a></li>
<li id="fn15">Metainformation is information about the document, not the information contained in the document. For example, <em>metainformation</em> about a document could include its: length, language, date of publication, date of last revision, author, etc.<a class="footnote-back" href="#fnref15">↩</a></li>
<li id="fn16"><strong>HTTPS</strong> is the secure form of <strong>HTTP</strong>. Using <strong>HTTPS</strong> ensures all communication between the <strong>client</strong> and <strong>server</strong> is encrypted. Surprisingly, <strong>HTTP</strong> and <strong>HTTPS</strong> access can both occur on the same page. This occurs because <strong>HTML</strong> documents often contains <em>hyperlinks</em> to other documents. Those <em>hyperlinks</em> point to documents that are transmitted using either <strong>HTTP</strong> or <strong>HTTPS</strong>.<a class="footnote-back" href="#fnref16">↩</a></li>
<li id="fn17">A list of official and unofficial protocols can be found <a href="https://www.w3.org/Addressing/schemes">here</a><a class="footnote-back" href="#fnref17">↩</a></li>
<li id="fn18">Actually, the server can respond in a number of different ways. For example, if the webpage is not found, it can respond with a 404 error.<a class="footnote-back" href="#fnref18">↩</a></li>
<li id="fn21">This is true of the <strong>HTTP</strong> protocol itself. Servers tend to log all or part of incoming <strong>HTTP</strong> requests. These logs are for maintenance and forensics, not for keeping track of previous <strong>HTTP</strong> requests. Clients also tend to cache components of the <strong>HTTP</strong> response &#8211; for example: cookies, images, HTML pages, and other resources. These topics will be addressed in future tutorials.<a class="footnote-back" href="#fnref21">↩</a></li>
<li id="fn22">This is mostly true, the documents don’t have to be written in <strong>HTML</strong>, but it does have to be something that &#8211; more or less &#8211; behaves as if it were <strong>HTML</strong> &#8211; for example, <strong>xhtml</strong>.<a class="footnote-back" href="#fnref22">↩</a></li>
</ol>
</section>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/introduction/understanding-how-the-world-wide-web-www-works/">Understanding How the World Wide Web (WWW) Works</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Understanding How the Internet Works</title>
		<link>https://complete-concrete-concise.com/tutorials/webdev/introduction/understanding-how-the-internet-works/</link>
		
		<dc:creator><![CDATA[richardsplanet]]></dc:creator>
		<pubDate>Thu, 15 Feb 2018 18:40:55 +0000</pubDate>
				<category><![CDATA[Introduction]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[understanding]]></category>
		<category><![CDATA[webdev]]></category>
		<guid isPermaLink="false">https://complete-concrete-concise.com/?p=3380</guid>

					<description><![CDATA[<p>A high level overview of how the Internet Works.</p>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/introduction/understanding-how-the-internet-works/">Understanding How the Internet Works</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="preamble">
The Internet and the World Wide Web are two different things, although many people confuse the two.<br />
This article provides a high level overview of how the Internet Works.
</div>
<h2 id="the-internet">The Internet</h2>
<p>The Internet is the global network of connected devices that adhere to the <strong>Internet Protocol</strong> (IP).<br />
<a href="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-1-600px-80.jpg"><img decoding="async" class="aligncenter size-full wp-image-3385" src="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-1-600px-80.jpg" alt="" width="600" height="390" /></a><br />
The <strong>Internet Protocol</strong> allows devices to connect to the Internet and communicate with other devices connected to the Internet. It is a specification for a <span class="mark">basic unit of data transfer</span> or <strong>datagram</strong>.<br />
<a href="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-2.jpg"><img decoding="async" class="aligncenter size-full wp-image-3388" src="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-2.jpg" alt="" width="600" height="521" /></a><br />
The <strong>IP</strong> datagram consists of a <strong>header</strong> and a <strong>payload</strong>.<br />
<a href="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-3.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3390" src="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-3.jpg" alt="" width="600" height="468" /></a><br />
The <strong>header</strong> has a <strong>source</strong> address and a <strong>destination</strong> address. As a result, there is no true anonymity on the Internet, since the transfer of information requires knowing the source and destination of the information transfer<a id="fnref1" class="footnote-ref" href="#fn1"><sup>1</sup></a>.<br />
The <strong>payload</strong> is the information part of the packet and its content depends on what is being transmitted. It is at the <strong>payload</strong> level that the World Wide Web and other Internet services (like email, Voice over IP (VoIP), File Transfer Protocol (FTP), etc) exist.<br />
The <strong>IP Header</strong> also includes a <strong>transport protocol</strong>. This controls how the <strong>datagram</strong> is transported through the Internet. Two common transport protocols are: <em>Transmission Control Protocol</em> (TCP) and <em>User Datagram Protocol</em> (UDP).<br />
<strong>TCP</strong> is a robust protocol that verifies the packet is received. If the packet is not received, it is retransmitted.<br />
<strong>UDP</strong> is less robust &#8211; it doesn’t verify that the packet is received. This may seem strange, but some data transfers don’t need to be robust &#8211; they can tolerate lost packets. For example, video streaming can survive the occasional “lost” data packet.<br />
<a href="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-4.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3393" src="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-4.png" alt="" width="600" height="393" /></a><br />
The use of TCP on the Internet is sometimes referred to as <strong>tcp/ip</strong> or <strong>TCP/IP</strong>. This is read as <span class="mark">TCP over IP</span>.</p>
<h3 id="ip-addresses">IP Addresses</h3>
<p>Each device connected to the Internet must be uniquely identifiable<a id="fnref2" class="footnote-ref" href="#fn2"><sup>2</sup></a>. This is done by assigning each device on the Internet a unique number called an <strong>IP Address</strong>. There are two types of IP addresses: <strong>IPv4</strong> and <strong>IPv6</strong> &#8211; they are not compatible.<a id="fnref3" class="footnote-ref" href="#fn3"><sup>3</sup></a><br />
<a href="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-5.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3395" src="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-5.jpg" alt="" width="600" height="720" /></a><br />
<strong>IPv4</strong> is the older and most commonly used (for now) addressing scheme. Each device on the Internet is assigned a unique identifier. This identifier is a 32 bit number. This means there are 2<sup>32</sup> different numbers available. Which means a maximum of 4294967296 devices can be connected to the Internet when using IPv4 addressing<a id="fnref4" class="footnote-ref" href="#fn4"><sup>4</sup></a>.<br />
The addresses are written in <em>dotted</em> notation. This is done by dividing the 32 bit number into four 8 bit octets.<a id="fnref5" class="footnote-ref" href="#fn5"><sup>5</sup></a> Each octet is written in decimal notation separated by a period. IPv4 addresses look similar to these examples: <span class="kbd">127.0.0.1</span> or <span class="kbd">192.168.1.101</span>, or <span class="kbd">10.184.216.34</span>.<br />
<strong>IPv6</strong> is a newer addressing scheme and was introduced to expand the number of available IP addresses.<a id="fnref6" class="footnote-ref" href="#fn6"><sup>6</sup></a> <strong>IPv6</strong> addresses are 128 bits long and allow for 2<sup>128</sup> unique addresses<a id="fnref7" class="footnote-ref" href="#fn7"><sup>7</sup></a>.<br />
<strong>IPv6</strong> addresses are written differently from <strong>IPv4</strong> addresses. The 128 bit address is divided into eight 16 bit hextets.<a id="fnref8" class="footnote-ref" href="#fn8"><sup>8</sup></a> These are written in hexadecimal<a id="fnref9" class="footnote-ref" href="#fn9"><sup>9</sup></a> notation and separated by colons<a id="fnref10" class="footnote-ref" href="#fn10"><sup>10</sup></a>. IPv6 addresses look similar to these examples: <span class="kbd">::1</span><a id="fnref11" class="footnote-ref" href="#fn11"><sup>11</sup></a>, or <span class="kbd">FE80:0000:0000:0000:0202:B3FF:FE1E:8329</span></p>
<h3 id="clients-and-servers">Clients and Servers</h3>
<p>Devices on the Internet are classified as <strong>clients</strong> or <strong>servers</strong><a id="fnref12" class="footnote-ref" href="#fn12"><sup>12</sup></a>.<br />
A <strong>client</strong> requests resources from a server. It tends to have a transitory connection to the Internet and may not always be available.<br />
A <strong>server</strong> provides (serves) resources to clients. It tends to be permanently connected to the Internet and always available.<br />
<a href="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-6.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3397" src="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-6.png" alt="" width="600" height="600" /></a><br />
You can think of the relationship between clients and servers as being similar to the relationship between students and teachers. The students (clients) request information from the teacher (server) and the teacher (server) provides information to the students (clients).<br />
<a href="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-8.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3401" src="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-8.png" alt="" width="600" height="339" /></a><br />
If clients wish to communicate with other clients, the information is sent first to the server and then the server forwards the information to other clients.<br />
There is a third relationship: <strong>peer-to-peer</strong> (P2P). Like clients, peers tend to be characterized by transitory connections to the Internet.<br />
<strong>Peers</strong> are devices that connect directly with other devices instead of going through a <strong>server</strong>. <em>P2P</em> devices act both as server and client. Communication between peers is direct and not mediated by a server.<br />
<a href="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-7.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3399" src="https://complete-concrete-concise.com/wp-content/uploads/2018/02/internet-7.png" alt="" width="600" height="600" /></a></p>
<h3 id="domain-names">Domain Names</h3>
<p>Most people rarely (if ever) access resources on the Internet by entering <strong>IP Addresses</strong>. Addresses like <span class="kbd">192.168.1.1</span> might be fine for computers but they are not easy for humans to use. A <strong>Domain Name</strong> is a string of characters (preferably easy to remember) that act as an alias for an <strong>IP Address</strong>.<br />
Domain names are hierarchically organized. The <strong>Internet Corporation for Assigned Names and Numbers</strong> (ICANN) manages the structure of domain names on the Internet.<br />
Domains are composed of two parts: the <strong>hostname</strong> and the <strong>top-level domain</strong>.<a id="fnref13" class="footnote-ref" href="#fn13"><sup>13</sup></a><br />
For example: <span class="kbd">complete-concrete-concise</span> is the hostname and <span class="kbd">.com</span> is the top-level domain.<br />
The mapping from a <strong>domain name</strong> into an <strong>IP Address</strong> is performed by a <strong>Domain Name System Server</strong> (DNS Server). The <strong>domain name</strong> is sent to the <strong>DNS Server</strong> and the server returns the associated <strong>IP Address</strong>.<a id="fnref14" class="footnote-ref" href="#fn14"><sup>14</sup></a><br />
Globally, there are 13 <em>root servers</em> from which all domain names are resolved.<a id="fnref15" class="footnote-ref" href="#fn15"><sup>15</sup></a></p>
<h3 id="summary">Summary</h3>
<ol>
<li>The Internet is the global network of connected devices which adhere to the <strong>Internet Protocol</strong>.</li>
<li>The Internet Protocol is a <strong>datagram</strong> composed of a <strong>header</strong> and a <strong>payload</strong>.</li>
<li>The <strong>IP header</strong> consists of a <strong>source address</strong>, <strong>destination address</strong>, and a <strong>transport protocol</strong>.</li>
<li>Every device connected to the Internet requires a unique identifying address.</li>
<li>The <strong>IP payload</strong> carries the data for a specific service. This might be the <strong>World Wide Web</strong>, <strong>email</strong>, <strong>Voice over Internet</strong>, or any other service.</li>
<li>The Internet tends to be hierarchical with a <strong>client-server</strong> model.</li>
<li><strong>Clients</strong> request services and resources from the Internet and tend to have a transitory presence on the Internet.</li>
<li><strong>Servers</strong> provide services and resources on the Internet and tend to have a permanent presence on the Internet.</li>
<li><strong>Domain names</strong> are a (human readable) way of accessing resources on the Internet. <strong>Domain names</strong> are sent to a global network of <strong>DNS Servers</strong> that return the <strong>IP Address</strong> associated with the domain.</li>
</ol>
<section class="footnotes">
<hr />
<ol>
<li id="fn1">You can try to make it difficult for someone to follow your trail by going through multiple intermediate connections (for example, by using Tor), but, ultimately, there is a direct path between the <strong>source</strong> and <strong>destination</strong>. It is a lot like playing “connect the dots”. If there are only two dots (source and destination), the connection is easy to follow. If there are multiple intermediate dots, then the path is harder to follow &#8211; but not impossible. A lot depends on whether the various intermediate points store visitor info and how easy it is to get access to that information. A route spanning multiple countries makes it harder to get access to the information &#8211; but not impossible.<a class="footnote-back" href="#fnref1">↩</a></li>
<li id="fn2">This is not entirely true. There are ways multiple devices can “share” the same <strong>IP Address</strong>. This will be covered in a future tutorial.<a class="footnote-back" href="#fnref2">↩</a></li>
<li id="fn3">This means there are two different Internets running side-by-side. Techniques allow traffic to flow between the two, but this will be covered in a future tutorial.<a class="footnote-back" href="#fnref3">↩</a></li>
<li id="fn4">Fewer addresses are actually available because a number of them are reserved. This will be covered in a future tutorial.<a class="footnote-back" href="#fnref4">↩</a></li>
<li id="fn5">An octet is 8 bits.<a class="footnote-back" href="#fnref5">↩</a></li>
<li id="fn6">On January 31, 2011, the <strong>Internet Assigned Numbers Authority</strong> (IANA) allocated the last of the IPv4 address blocks. This didn’t mean the world had run out of IPv4 IP Addresses, but it did mean there were no more available to hand out. Companies and organizations manage blocks of IP addresses which they have been allocated by IANA. There are a number of techniques that can be used to ensure everybody has a unique IP address when connecting to the Internet. This will be covered in more detail in a future tutorial.<a class="footnote-back" href="#fnref6">↩</a></li>
<li id="fn7">This is approximately 3.4&#215;10<sup>38</sup> addresses. As with <strong>IPv4</strong>, some addresses are reserved, so the actual number of available addresses is slightly less. Written out in full it is 340,282,366,920,938,463,463,374,607,431,768,211,456. More details will be given in a future tutorial.<a class="footnote-back" href="#fnref7">↩</a></li>
<li id="fn8">A hextet is 16 bits.<a class="footnote-back" href="#fnref8">↩</a></li>
<li id="fn9">Hexadecimal numbers are numbers written in base 16. In decimal notation, we use 10 unique digits: 0 through 9. Hexadecimal needs 16 unique digits, so we extend the decimal digits by adding the letters A through F as additional digits. In hexadecimal, the number 10 is written as 0xA, the number 15 as 0xF, the number 16 as 0x10. The prefix 0x is used to indicate the number is in hexadecimal notation.<a class="footnote-back" href="#fnref9">↩</a></li>
<li id="fn10">When you write out the address in full. A number of rules allow writing addresses more compactly. This will be covered in more detail in a future tutorial.<a class="footnote-back" href="#fnref10">↩</a></li>
<li id="fn11">This is permitted shorthand for <span class="kbd">0000:0000:0000:0000:0000:0000:0000:0001</span>.<a class="footnote-back" href="#fnref11">↩</a></li>
<li id="fn12">Actually, there are many more devices: routers, gateways, switches. Some of these may be covered in more detail in a future tutorial.<a class="footnote-back" href="#fnref12">↩</a></li>
<li id="fn13">It is a little more complicated and will be covered in more detail in a future tutorial. It is also closely related to the <strong>Universal Resource Locator</strong> (URL) &#8211; also to be covered in a future tutorial.<a class="footnote-back" href="#fnref13">↩</a></li>
<li id="fn14">It can be more complicated than this and will be covered in more detail in a future tutorial.<a class="footnote-back" href="#fnref14">↩</a></li>
<li id="fn15">The 13 <em>root servers</em> are a global network of hundreds of computers dedicated to mapping <strong>domain names</strong> to <strong>IP Addresses</strong>. The network is partitioned among 13 organizations who are responsible for managing their part.<a class="footnote-back" href="#fnref15">↩</a></li>
</ol>
</section>
<p>The post <a href="https://complete-concrete-concise.com/tutorials/webdev/introduction/understanding-how-the-internet-works/">Understanding How the Internet Works</a> appeared first on <a href="https://complete-concrete-concise.com">Complete, Concrete, Concise</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
