About Hosting Technologies
Technology in the context of the internet means a lot of different things. In order to understand all of this complexity, first one should understand the basics. The internet protocol suite is a set of different data and software application requirements which allow for messages to be pushed over a vast network (often moving between many different connection points.)
The details of this suite come from the Open Systems Interconnection (OSI) Model, which is a project run by the International Organization for Standardization (ISO). The term ISO Standard means that a technology is broadly used by not just a single industry, but by everyone. Open Systems defined by ISO standards are what allow the internet to work at all. It means that a CISCO network router can talk to an HP network router, and that packets will flow through with a pre-determined data-packet header signifier, so that the router will know where to redirect that packet somewhere else.
Layers of the Internet
The OSI implementation of the internet we know, is split into these four themes:
- Link Layer - where the fundamentals happen with the physical hardware. Every networked devices has a Media Access Control (MAC) address, which allows every physical device to be referenced or validated. This is what allows ethernet or DSL to both be capable of linking two machines (sometimes part of the same computer, or multiple computers in some special configuration).
- Internet Layer - while a plethora of internet layer protocols exist, the most common is the Internet Protocol (IP) which gives every computer an IP address. This can either be an IPv4 or IPv6 (bigger address book) and a computer itself can have more than one IP address based on what network reference is being used. For example, a Wifi router might always be found at the IP address 192.168.0.1, and every computer on a local network would have the 192.168 IPv4 prefix. However, the internet modem you have will be the portal to the wider internet, and will have a distinct IP address which distinguishes it from every other IP address on the planet.
- Transport Layer - this is where the packets itself are actually defined. Different protocols have different validation and redundancy measures, the biggest, most used is Transmission Control Protocol (TCP) which is a stream of bits which require a reliable data stream. TCP favors reliability over latency, while the lesser used User Datagram Protocol (UDP) focuses on lowest latency. TCP packets contain the internet data which is sent between computers, the web, email, and most file transfer use TCP.
- Application Layer - This is where things get far more interesting, a number of protocols in this layer are directly controlled by internet users. Hypertext Transfer Protocol (HTTP) being the most familiar, as part of every web page URL. IMAP & POP handle most email, while FTP and SSH handle remote connection. TLS/SSL handles security validation, while DNS handles creating a map between a domain name and an IP address. Yes, a lot of complex and different things occur in the application layer.
At a high level, almost all technologies for the modern internet touch the Internet Protocol Suite. However, the internet aspect of most of those tools is only the tip of the iceburg.
Hardware, Kernels and the OS
Software applications often do not communicate with the internet at all, moreover, the term "Technology" might not just cover software but also all of the hardware used in computation. Since this is an overview, the concepts to understand for computer hardware is the Von Neumann architecture, which is a separation of computing functions into hardware parts, such that a computer has a processor (CPU), memory (RAM), storage (HDD/SSD), and a motherboard. The CPU is the brain, handling the flow of information which is stored temporarily in memory and permanently in discs or solid state drives.
Every computer running this architecture (almost all) will have a system BIOS, or basic input/output system. This is what allows the data flow to occur between the operating system and the hardware components by deep routed data flow. Generally, this is where a network adapter will be defined, allowing internet protocol and connectivity. The operating system in turn uses device drivers, which run through the BIOS and are turned on during system bootup.
The operating system itself (Windows, OSx, Linux) runs mainly on a portion of CPU and memory, as well as on the connected devices through drivers and by something called the kernal. The kernel is the layer between the hardware and the application, and handles how the system knows which drivers to be used.
Now, with all of that groundwork laid, an Operating System can run various applications, many of which can have relevance to the web.
Software applications are generally written in a particular programming language, an might either run from binaries or exist as a script of existing binaries. Programming languages are an entirely other article. What they are used for is authoring software and websites. While the term "Software" can mean low-level stuff like the Kernel, it more commonly means applications which are installed on top of the operating system. Software can be categorized into these branches:
- Desktop Applications - includes web browsers, office software, phone apps, games, any program that runs above the OS.
- Server Software - these are critical to web applications. A Web Server application handles page routing, database software handles data storage. Examples would be anything ASP.NET , Java, PHP.
- Embedded Software - often indistinguishable from the operating system, but at a higher level of abstraction than a device driver.
Software is often authored in an Interactive Development Environment (IDE), or edited from a text editor (lookup VI vs Emacs for some fun). Software when it runs handles machine code which reaches all the way down to the Kernal itself. These technologies all enable the server and desktop applications that are commonly known within web application development. A comprehensive list of web applications, database types, network configurations could take millions of pages to cover everything.
Technology can mean so many things, it can even refer to development project management schemes like Agile or Scrum, which is not hardware or software. Abstracted even further, technology in a larger context could refer to anything, from the invention of fire to a jet fighter airplane.
So when trying to understand a difficult concept in computing or in web development, try to consider the bigger picture. See how it fits into other technologies, knowing why a technology exists almost always is the first step in understanding how it works.
Glossary of common hosting technologies
The internet is a complicated place, and developers are very creative people. Because of this, there are a number of applications, ideas, methodologies, and concepts which don’t quite fit into any discernible category. The web is innovating faster than our ability to adequately talk about it. We try to be organized here at WhoIsHostingThis, so we have grouped these together under simply, “Technologies.”
ADO.NET - A programming library for the .NET platform that can be useful for the creation of data-centric web services.
Protip: Avoid using “Ajaxy” as an adjective. Developers hate that.
AspJpeg - Programming library for the ASP.NET framework, used for programatic and in-app image resizing and other types of image processing and manipulation.
AspPDF - Programming library for the ASP.NET framework, used for creating, editing, and reading PDF documents.
AspUpload - Server component that allows for the easy creation of file-upload features in ASP-based web apps.
CGI Access - CGI — Common Gateway Interface — is a standardized way of interacting with a web server, and a CGI script is a script (small program) that runs on the web server. This provides a relatively simple way of adding a small amount of dynamic content to an otherwise static website. (Many early hit-counters worked this way.)
“CGI Access” refers to a feature of a web hosting account: do they provide access for installing CGI scripts.
cURL - cURL is a tool used for making requests and retrieving data based on URLs. It can be used from the command like (try
curl example.com to try it) or embedded into another application (such as for web scraping).
Dcraw - A program for processing raw image data from a digital camera into usable output formats like TIFF.
Pronounced Dee See Raw, not Dee-Kraw.
EasyRSS - RSS — Rich Site Summary, or Really Simple Syndication — is a protocol for syndicating continuously updated website content, such as a blog. An RSS feed could be read by and subscribed to from an RSS Reader, allowing a user to access content from many different blogs from a single application.
EasyRSS was an App for accessing content from a Google Reader account. Google Reader is no longer available, so EasyRSS is no longer needed.
Exif Support - Exif — exchangeable image file format — is a standard for specifying (among other things) metadata in image, sound, and other media files.
There is an Exif extension for PHP that allows an application to read this data, which several content management systems (including WordPress) take advantage of. However, this extension has to be compiled into PHP by the server manager.
Exif support usually refers to whether this component is available in the hosting company’s installation of PHP.
FFmpeg - FFmpeg is a suite of related tools for recording, editing, and streaming audio and video content. Related to web hosting, “FFmpeg” usually refers to support for streaming video from the hosting server.
GD Support - GD — Graphics Draw — is a programming library which can be used by other applications for programmatic or in-app creation and manipulation of images. It is available to PHP apps via an extension which must be compiled into PHP by the server.
GD support usually refers to whether this component is available in the hosting company’s installation of PHP.
Ghostscript - A suite of tools used to render PDF into images and to convert between PDF and PostScript format.
IIS ASP components - IIS is a web server from Microsoft, and ASP is a language for embedding dynamic content into HTML documents (similar to PHP). In order for ASP to work on IIS, ASP components have to be installed on the web server.
If you are running a Windows Server with IIS, and want to use ASP on your website, you will need to make sure this is setup or available.
ImageMagick - ImageMagick is a programming library for creating and editing images in a wide variety of formats. It is available for use in a number of languages, including PHP, Python, and Ruby, but it must be included into those languages by the server administrator.
LAMP - LAMP is a “technology stack,” a typical combination of tools used as a common platform. It stands for Linux, Apache, MySQL, and PHP. Most web applications are run on a LAMP stack.
markItUp! - JQuery library used on-page in web forms to turn a standard
textarea input into a markup editor for entering HTML, Markdown, Textile, Wiki Syntax, BBcode, or even a custom-made markup syntax. Includes live preview and helper-button.
memcached - Memcached is a caching tool that runs on a server and caches the results of certain types of data requests (such as API calls or database queries) so that they subsequent calls can be answered with in-memory data. This can greatly speed up a web application.
Web apps have to take advantage of memcached specifically — having it available doesn’t automatically do anything. WordPress, for example, has a third-party plugin that speeds up the app via memcached. MediaWiki (the software the powers Wikipedia and many other Wiki sites) uses it by default.
If you plan to use an application that takes advantage of memcached, it has to be available on the server. It is a free and open source utility, so many (but not all) hosts have it already, or will install it if requested.
Microsoft Indexing - Microsoft Indexing is a now-defunct utility for indexing the content of files on a Windows server, to speed up functions like File Search. It is no longer a standalone piece of software but is built-in to Microsoft Sharepoint.
Mod-rewrite - Mod_rewrite is module for the Apache web server which allows a server administrator or privileged programs to create URL-rewriting rules, which allows “ugly” programmatic URL (
example.com?qid=2763&v=32) to be aliased as human-readable, “pretty” URLs (
Mod_rewrite is required for many Content Management Systems, including WordPress, and must be installed on the web server by the server administrator. Many hosting companies have it available automatically or will make it available if asked.
ownCloud - OwnCloud is a self-hosted, Open Source alternative to SaaS document applications like Google Drive and Dropbox.
Phar - Phar — PHP Archiver — is a tool for combining multiple PHP files into a single file, to make it easier to distribute or install. Phar files can be run in PHP as-is, without extracting.
Phar works as a component to PHP and, to be used, must be compiled into PHP by the server administrator.
Podcast - A podcast is a series of audio files that can be subscribed to or downloaded via web syndication. Similar to a blog, but in audio form rather than text.
Podcasts rely on special server-side software, like an audio content management system, for making the content available publicly, as well as client-side software to download and listen to the podcast.
From a hosting perspective, it is important to know that beyond the software requirements for the podcasting management system, podcast files (which are usually fairly large audio files) have to be stored and downloaded, which will cause significant usage of disk space and bandwidth.
SaaS - SaaS — Software as a Service — is a model software use in which people subscribe to an online service rather than install software locally or on their own servers.
As an example: WordPress is a Content Management System which you can download (for free) and run on your own server or hosting plan. WordPress also exists as a SaaS offering at WordPress.com, where you can set up a blog that is stored on their servers, rather than your own.
XML Parser - An XML Parser is any software application or library that can read in XML data and generate an internal model of the data structure that can be “understood” by another program within a specific context. For example, a PHP-based XML parser may interpret the XML data into an associative array or a series of object attributes. This data structure can then be used by any PHP application.
XML parsers are usually compiled into scripting languages like PHP and Ruby, which would need to be done by a server administrator.