Estes controles encapsulam serviços como gerenciamento de estado, leitura de dados enviados pelo usuário e em alguns casos adicionam vários recursos para que os controles fiquem com mais funcionalidades e facilidade de uso. Então algumas das funcionalidades que estes controles expõem são:
Gerenciamento de estado
Acesso simples a valores de objetos, sem a necessidade de usar o objeto Request
Possibilidade de programar eventos
Retorno para o cliente customizado baseado nas características do navegador.
Além disso é possível criar controles customizados e de usuários.
Hierarquia de controles
Todos controles ASP.NET descendem de forma direta ou indireta do System.Web.UI.Control. Veja na Imagem 1:

Imagem 1 - Hierarquia de Controles ASP.NET
Como é possível na Imagem 1 até a classe Page, que representa a página do ASP.NET indiretamente descende de System.Web.UI.Control
Existem duas hierarquias fundamentais de controles de servidor ASP.NET. HTML Controls, Imagem 2 e Web Controls, Imagem 3.

Imagem 2 - Hierarquia de Controles Html

Imagem 3 - Hierarquia de Controles Web
Divisão por usabilidade
Pensando na usabilidade dos controles, ainda poderíamos definir a organização destes da seguinte forma:
HTML server controls: Controles que são diretamente mapeados para elementos HTML, permitindo a programação destes no servidor ou codebehind.
Web server Controls: Controles com mais funcionalidades que os HTML server controls. Exemplos são o controle de calendário, gridview, treeview e outros. Os controles Web server controls não necessariamente representam controles HTML.
Validation Controls: Controles de validação, incorporam lógicas para habilitar que seja validado dados digitados pelo usuários em diversos outros controles como exemplo o TextBox. Pode ser verificar valores de controles
User Controls: Controles de usuários, são controles que são criados como páginas e podem ser reutilizados em páginas ou até em outros user controls.
ASP.NET Markup – Marcação do ASP.NET
Os controles de servidor ASP. NET, são utilizados nas páginas ASPX e controles de usuários ASCX. Estes controles podem ser utilizados mesclados com HTML, ou os substituindo completamente, mas possuem uma linguagem e elementos próprios para os representarem.
Seja utilizando um ambiente de desenvolvimento integrado como o Visual Web developer 2008 Express Edition(http://aplicacoesweb.blogspot.com/2008/03/visual-web-developer-2008-express.html) para adicionar controles de forma visual, ou escrevendo código, o resultado do processamento do ASPX ou ASCX sempre geram para o navegador é HTML. A imagem 4, mostra sendo montado uma página ASPX de forma visual. O código 1, mostra o código gerado:

Imagem 4 - Montando uma página usando o VWD 2008
Inherits="_Default"
%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Página ASPX simples"></asp:Label>
<br /> <asp:Calendar ID="Calendar1" runat="server" BackColor="White"
BorderColor="White" BorderWidth="1px" Font-Names="Verdana" Font-Size="9pt"
ForeColor="Black" Height="190px" NextPrevFormat="FullMonth" Width="350px">
<SelectedDayStyle BackColor="#333399" ForeColor="White" /> <TodayDayStyle
BackColor="#CCCCCC" /> <OtherMonthDayStyle ForeColor="#999999" /> <NextPrevStyle
Font-Bold="True" Font-Size="8pt" ForeColor="#333333" VerticalAlign="Bottom" />
<DayHeaderStyle Font-Bold="True" Font-Size="8pt" /> <TitleStyle
BackColor="White" BorderColor="Black" BorderWidth="4px" Font-Bold="True"
Font-Size="12pt" ForeColor="#333399" /> </asp:Calendar>
<br />
</div>
</form>
</body>
</html>Código 1: Exemplo de ASPX
Ao publicar esta página num servidor que processa ASP.NET e um navegador requisita-la, o resultado será o da imagem 5 e ao exibir o fonte no navegador, o resultado será conforme código 2:

Imagem 5 - Resultado do ASPX no navegador
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Page</title>
</head>
<body>
<form name="form1" method="post" action="Default.aspx"
id="form1"> <div> <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET"
value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT"
value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKLTQxMzQzODU1NmRkqJRY4FgoQjKSxkHsKCdY/MvM0so=" />
</div>
<script
type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) { theForm = document.form1; }
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value =
eventArgument; theForm.submit(); }
}
//]]>
</script>
<div>
<span id="Label1">Página ASPX simples</span> <br /> <table id="Calendar1" cellspacing="0" cellpadding="2" title="Calendar" border="0"
style="width:350px;height:190px;font-size:9pt;font-family:Verdana;color:Black;border-width:1px;border-style:solid;border-color:White;background-color:White;border-collapse:collapse;">
código 2 : Pedaço do HTML gerado.
Repare que apesar do código de marcação do ASPX, o código gerado para navegador continua sendo HTML.