What Is IIS?
IIS is a web server that runs on the Microsoft .NET platform on the Windows OS. While it’s possible to run IIS on Linux and Macs using Mono, it’s not recommended and will likely be unstable. (There are other options, which I’ll present later). It’s versatile and stable, and it’s been widely used in production for many years. Version 10 is the most current. Once it’s installed you’ll see this welcome page in your browser. “Tervetuloa!”
Versions and History
Microsoft Windows Server 2003 or IIS 6 is the oldest version you would want to run for anything outside of a hobby or testing, which does supports IPV6 as well as modern security measures. However in a professional environment IIS 8.5 or 10 (Still in Beta) will receive official software updates for years to come and support more modern applications and needs.
- IIS 6 or Windows Server 2003 is no longer receiving any updates from Microsoft but supports IPV6 and most security measures needed for simple hosting needs on a budget.
- IIS 7 shipped with Windows Vista and has better support for the .NET framework and some security enhancements over IIS 6.
- IIS 7.5 Shipped with Windows 7 and added support for TLS 1.1 and 1.2. Extended support will end in 2020 this is the oldest version receiving any support officially from microsoft.
- IIS 8 also known as Microsoft Web Server 2012 began supporting SNI or associating SSL to hostnames instead of IP addresses and multicore scaling. Support will last until 2023.
- IIS 8.5 shipped with Windows 8.1 and has new features such as Enhanced logging capabilities and Dynamic Site Activation.
- IIS 10 is currently in beta and will support modern technology such as HTTP/2 and powershell 5.0.
If you are a business owner consider purchasing the newest version your hardware can run. IIS 8.5 is currently the most stable and secure version as of this writing, however once out of beta ISS 10 will become your best bet. If you are hosting a basic website on your own and cannot afford a newer version consider Apache Server instead of anything older than IIS 6.
What Is a Web Server?
The internet is good. And the internet cannot exist without web servers. But what exactly is a web server? Let’s define that in the abstract so we can have some context for how IIS fills this role.
A web server is a process for hosting web applications. The web server allows an application to process messages that arrive through specific TCP ports (by default). For example, the default port for HTTP traffic is 80, and the one for HTTPS is 443.
When you visit a website in your browser, you don’t typically specify the port number unless the web server is configured to receive traffic on ports other than the default. Visiting http://www.example.com will send your request to port 80 implicitly. You could specify the port number if you’d like http://www.example.com:80, and https://www.example.com:443 for TLS (Transport Layer Security).
Assuming the default configuration and TLS is configured for your web application, the web server will receive all inbound traffic to ports 80 and 443. What the web server does with the traffic from there depends. There are countless options for how the web server can process those requests.
IIS allows you to create sites, applications, and virtual directories to share information with users over the Internet or internally on an intranet such as a home network. This concept did exist in older versions of IIS, but several changes took place in IIS 7 and changed the definition and functionality of this concept.
A virtual directory is a name that you specify in IIS and that maps to a physical directory on a server similar to how DNS maps a URL to an IP address. The directory name becomes part of the application allowing users to navigate to a website or application and gain access to the content hosted on the server. This content could be a website itself or media such as photos or videos within a web application or site.
In IIS 6.0, virtual directories and applications were considered to be separate objects even though they were the same thing. An application was not a physically separate object from a virtual directory instead an app was really just a virtual directory on its own with one of the following properties in its metabase: AppFriendlyName, AppRoot, AppIsolated, and AppPoolID. The only issue was creating a system where applications in one pool would not be allowed to communicate with applications in another pool on the same server.
In IIS 7.0 and above virtual directories and applications are separate objects and functioned in that manner. They exist in a hierarchical relationship such as a website may contain one or more applications, an application contains one or more virtual directories, and a virtual directory maps to a physical directory on a computer.
How does IIS handle web requests?
The two main process models for web servers are to either handle all requests on a single thread, or to spawn a new thread for each request. Although the single-thread model (Node.js, for example) has some worker threads available, it typically only uses them for certain kinds of work, such as file system access. The thread-per-request model that IIS (and its lightweight cousin IIS Express) uses will grab a thread from a thread pool for each request.
Web servers typically handle requests using a request-response pattern. The client sends a request and receives a response if all goes well. HTTP protocol is the ubiquitous choice when communicating between a client and web server over the internet.
Log files record various actions on your server they are typically located at:
The service name should be replaced by the service you are looking for more info on in detail. It will show everything from the date and time something occurred to what IP address and how much data was sent both to and from your server. If you see – in the output the data was not recorded and you may need to adjust the service if you need this information.
Typically your server will use port 80 for HTTP traffic however this can be adjusted to meet your needs or the needs of another application on your computer. You can find a full list of ports and the purpose they each serve here. Changing a port within IIS 7 to 10 is simple. First Open Internet Information Services Manager. Second select the Web site that you want to change and n the Action pane, select Bindings. Third click Add to add a new site binding, or click Edit to modify an existing binding and finally click ok to apply the changes.
If you have any questions feel free to contact me on firstname.lastname@example.org also follow me on facebook @windowstechno to get updates about new blog post