Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. INTRODUCCIÓN A TCP/IP
Las redes se clasifican en redes de área local (LAN: local área network) y redes
de área amplia (WAN: wide área network). Las redes LAN abarcan una zona no
demasiado grande, mientras que las WAN pueden abarcar varios países. Internet
es una red, que a su vez se compone de otras redes, que pueden ser LANs
(conectadas mediante Ethernet y otros protocolos de redes como pueden ser
IPX/SPX, AppleTalk o por supuesto el standard de internet: TCP/IP) o WANs
(mediante módems a través de líneas telefónicas, conexiones ISDN, etc...).
Existen dos formas para la conexión de estos últimos: La conexión por Dial y por el
nivel IP. La primera consiste en conectarse con el servidor del ordenador del
proveedor del servicio y tener acceso a los programas y utilidades que ofrece este
servidor, para este tipo de conexión solo se necesita un terminal y un módem,
ejemplos de proveedores de este servicio son CIX, CompuServe y Delphi.
Una conexión de nivel IP es mucho más complicada, pero ofrece mucha mayor
flexibilidad. Se necesita de la instalación de una serie de drivers de red en el
ordenador local, un stack TCP/IP y un driver de bajo nivel de módem. Una vez
configurado el stack del protocolo, ya se puede ejecutar cualquier tipo de
software TCP/IP que lo reconozca y tener acceso directo a Internet.
PILA DE PROTOCOLOS:
El modelo ISO/OSI asocia los protocolos que definen la funcionalidad de cada capa
y representa una red como una pila vertical de módulos o capas. El modelo asocia
al menos un protocolo con cada capa. Se estructura en capas verticales y protocolos
apilados.
Mientras los datos fluyen por la pila de protocolos, los protocolos TCP/IP pueden
dividirlos en unidades más pequeñas.
Los principios fundamentales para desarrollar las capas en el Modelo OSI, son:
1. Crear una nueva capa cada vez que el programa de red necesite un
nivel de abstracción distinto.
2. Cada capa debe desempeñar una función bien definida.
3. Elegir la función de cada capa teniendo en cuenta la definición de
protocolos estandarizados internacionalmente.
4. Elegir los límites de la capa para minimizar el flujo de información a
través de las interfaces.
5. El número de capas debe ser lo suficientemente grande para que los
diseñadores no necesiten colocar funciones distintas en la misma
capa.
LA CAPA FISICA:
LA CAPA DE ENLACE:
También tiene como misión la resolución de los problemas ocasionados por daños,
perdida o duplicidad de las tramas. Así como la implementación de mecanismos de
regulación del flujo de datos, que permita al transmisor conocer la capacidad de
recepción del otro extremo.
LA CAPA DE RED:
Determina la ruta que siguen los datos para alcanzar su destino. Tiene como misión
el manejo y el control del tráfico, congestión y tasa de transferencia a través de las
líneas de transmisión, así como la perdida de datos en la red.
Las tablas de enrutamiento se utilizan para enrutar los datos, y son bases de datos
para buscar la trayectoria correcta. Se pueden establecer tablas de enrutamiento
tanto estáticas como dinámicas, siendo las dinámicas aquellas que se actualizan de
modo automático. También se encarga de la resolución de los problemas de
interconexión de redes heterogéneas.
LA CAPA DE TRANSPORTE:
Determina el tipo de servicio que tiene que ofrecer a la capa de sesión y a los
usuarios de la red y se determina cuando se establece la conexión. Debe ocuparse
del establecimiento y liberación de conexiones a través de la red.
LA CAPA DE SESION:
Esta capa proporciona una forma para insertar puntos de verificación en el flujo de
datos, con objeto de conseguir un alto grado de sincronización en las transferencias
de datos entre el emisor y el receptor.
LA CAPA DE PRESENTACION:
CAPA DE APLICACIÓN:
Para resolver el problema de las diferencias que surgen dada la gran cantidad de
terminales incompatibles que existen, se define un terminal virtual de red abstracto,
y que a partir del software se pueden transferir funciones a los terminales reales.
Cuando se quiere diseñar software cliente-servidor, se debe escoger entre dos tipos
de interacción: sin conexión UDP o orientado a conexión TCP, una u otra elección
determina el nivel de fiabilidad del sistema. TCP es el protocolo más fiable para
comunicarse a través de INTERNET, verifica la llegada de los datos y
automáticamente retransmite los segmentos que no lo han hecho. Calcula un
checksum sobre los datos para determinar que no ha habido errores durante la
transmisión. Usa números de secuencia para asegurarse de que la información llega
Sin embargo, las aplicaciones que usan UDP, no disponen de garantías sobre la
fiabilidad de recuperación de la información. Aquí deben ser las propias aplicaciones
cliente o servidor las que tienen que tomar las apropiadas medidas para detectar y
corregir errores. UDP no introduce errores, solamente depende del subyacente IP
para entregar los paquetes de información. IP, en cambio, depende de las
subyacentes conexiones hardware y de los gateways intermedios. Por lo tanto UDP
funciona bien, si la red lo hace correctamente. Se suele utilizar en redes locales,
donde la probabilidad de que se den errores es más baja. Manteniendo el estado
de la información en el servidor se puede mejorar la eficiencia de la red, pero
también puede consumir más recursos de los que convendría, si el sistema de
transporte de datos permite las opciones de duplicados, retraso o paquetes
perdidos.
TCP/IP fue diseñado para ser compatible con una gran variedad de sistemas
informáticos, por este motivo, TCP/IP no especifica los detalles de cómo las
aplicaciones interfieren con él , solo sugiere ciertos requerimientos de funcionalidad
y deja que los diseñadores de los sistemas escojan los detalles.
Sean las redes A, B y C de la figura, estas redes forman una red común y cada una
de ellas es una subred de la misma. El que se trate de subredes no significa que
realicen menos funciones que las redes convencionales, sino que las tres redes
forman una única red lógica y las subredes contribuyen en las operaciones globales
de interconexión.
Los gateways (pasarelas) entre redes se diseñan de forma que sean transparentes
a las aplicaciones de los usuarios finales. De hecho, las aplicaciones de usuarios
residen en ordenadores conectados a las redes. Las pasarelas no necesitan
cargarse con los protocolos del nivel de aplicación. Como no son invocados por la
pasarela, ésta se puede dedicar a otras tareas, como la gestión del tráfico entre las
redes. No se ocupa de funciones del nivel de aplicación como acceso a bases de
datos, correo electrónico y gestión de archivos.
TCP/IP desconoce lo que realmente circula por la red. El gestor de la red es libre de
manejar la PDU de cualquier forma que considere oportuna. Es en el nivel IP donde
se toman las decisiones de encaminamiento basándose en la información de
direccionamiento proporcionada por el ordenador principal.
La capa de red es el corazón de cualquier red basada en TCP/IP. Esta capa incluye
al protocolo Internet (IP), el protocolo de control de mensajes de Internet (ICMP) y
el protocolo de manejo de grupos de Internet (IGMP) , siendo estos últimos dos , de
apoyo a IP para manejar mensajes especiales de la red, tales como los de error y
transmisiones múltiples.
LA ESTRUCTURA DE DIRECCIONES IP
IP única. Las redes TCP/IP identifican los ordenadores y las redes a las que están
conectados utilizando direcciones IP de 32 bits.
Ej: 235.75.70.2
Identifican un punto de conexión en una red, una maquina puede tener varias
direcciones distintas. La dirección IP combina un número de red y un número de
dirección en la red. Siendo el byte de mayor orden el que especifica a la red y los
tres bytes de menor orden identifican al host dentro de la red.
Aunque no es realmente así, ya que el byte de mayor orden nos ofrece más
información. Dado que si fuese realmente así, sólo nos permitiría identificar un
número máximo de 255 redes. Para evitar esto, se ha ideado un esquema de
codificación, donde se utilizan los primeros bits de tal byte, para la identificación de
la clase de dirección.
Direcciones Especiales:
Loopback : 127.0.0.1
Si se diseña una red TCP/IP que no va a estar conectada a Internet se puede utilizar
cualquier dirección IP, con la salvedad de que no se pueden utilizar direcciones IP,
que comiencen por 0. Tampoco por 127, ya que se reservan para los procesos de
resolución de problemas y diagnosis de la red. Las direcciones IP de los nodos no
pueden terminar con cero. Y también hay que tener en cuenta que a las direcciones
IP de nodos no se les puede asignar el valor 255, ya que este valor se emplea para
enviar broadcasts a todos los elementos de una red.
Las máscaras dividen redes en subredes, y esas subredes por medio de otras
mascaras pueden dividirse en redes de menor tamaño. A partir de una máscara de
red se puede calcular el número de nodos que pertenecen al mismo segmento.
- Decimal: 255.255.255.0
- En Binario: 11111111.11111111.11111111.00000000
Los 1´s se asocian con la parte de la red externa y los 0´s con la red local. El número
de nodos por segmento en esta red será el máximo número que podamos
representar con un número binario de tantas cifras como ceros de red local
tengamos. En este caso:
Las direcciones de nivel físico, tal es el caso de las Ethernet, son de 6 bytes de
longitud, mientras que las IP son de cuatro. Para resolver este problema y realizar
Una estación A quiere comunicar con B, de la que conocemos su dirección IP, pero
no su dirección física. A pregunta a B su dirección física mediante una difusión (parte
superior de la figura). Todas las estaciones de la red reciben el mensaje, pero sólo
B responde.
- 3 bits para la prioridad (se ignoran), 4 bits para el tipo de servicio y un bit a cero.
Hay que tener en cuenta que en el caso de que se pierda un fragmento , esto
conlleva a la perdida de todo el datagrama.
Los routers y bridges (puentes) son dispositivos que se utilizan para compartir
información entre redes y sistemas. Los routers trabajan a nivel de la capa de red,
y se les suele asociar a un protocolo, como es el caso de IP, en cuyo caso hablamos
de router IP. Este tipo de dispositivos reducen el tráfico de datos en la red, puesto
que al trabajar a nivel de red disponen de la inteligencia necesaria para distinguir
que paquetes pertenecen a una red y que paquetes pertenecen a otra.
Los bridges, sin embargo, gestionan el tráfico de datos a nivel de la capa física y ,
por tanto, no se preocupan en absoluto del protocolo que se encuentre por encima.
La transición de datos de una red a otra se realiza muy rápidamente pero con el
incoveniente de que toda la información que se produzca en una red es transmitida
a la otra y viceversa, lo que conlleva a un considerable aumento de la congestión.
Operaciones de encaminamiento:
Otra opción muy útil de IP, es la posibilidad de incluir marcas temporales en los
datagramas cuando atraviesan cada módulo de IP de la interred. De esta forma, el
gestor de IP puede determinar la ruta del datagrama y además el instante en que
cada módulo procesó el datagrama. Lo cual es muy útil para determinar la eficacia
de las pasarelas y de los algoritmos de encaminamiento.
Cada mensaje ICMP tiene su propio formato, pero todos comienzan con los
mismos campos:
Los mensajes de error contienen la cabecera IP más los 8 primeros bytes de datos
del datagrama original. También hay que tener en cuenta que para
prevenir broadcast storms, nunca se generan mensajes de error en respuesta a:
D. Mensaje Time Exceded: Este tipo de mensajes pueden ser enviados por
routers y hosts. Los routers lo envían cuando descartan un datagrama al
finalizar su tiempo de vida. Y los hosts al ocurrir un timeout mientras se
esperan todos los fragmentos de un datagrama.
Formato de cabecera más flexible, con menos campos fijos que en la Ipv4 y
cabeceras de extensión opcionales.
1. ¿Qué es Linux?
Historia de Linux
LINUX hace su aparición a principios de la década de los noventa, era el año 1991
y por aquel entonces un estudiante de informática de la Universidad de Helsinki,
llamado Linus Torvalds empezó, -como una afición y sin poderse imaginar a lo que
llegaría este proyecto, a programar las primeras líneas de código de este sistema
operativo llamado LINUX. Este comienzo estuvo inspirado en MINIX, un pequeño
sistema Unix desarrollado por Andy Tanenbaum. Las primeras discusiones sobre
Linux fueron en el grupo de noticias comp.os.minix, en estas discusiones se hablaba
sobre todo del desarrollo de un pequeño sistema Unix para usuarios de Minix que
querían más. Linus nunca anuncio la versión 0.01 de Linux (agosto 1991), esta
versión no era ni siquiera ejecutable, solamente incluía los principios del núcleo del
sistema, estaba escrita en lenguaje ensamblador y asumía que uno tenía acceso a
un sistema Minix para su compilación. El 5 de octubre de 1991, Linus anuncio la
primera versión “Oficial” de Linux, -versión 0.02. Con esta versión Linus pudo
ejecutar Bash (GNU Bourne Again Shell) y gcc (El compilador GNU de C) pero no
mucho más funcionaba. En este estado de desarrollo ni se pensaba en los términos
soporte, documentación, distribución .Después de la versión 0.03, Linus salto en la
numeración hasta la 0.10, más y más programadores a lo largo y ancho de internet
empezaron a trabajar en el proyecto y después de sucesivas revisiones, Linus
incremento el número de versión hasta la 0.95 (Marzo 1992). Más de un año
después (diciembre 1993) el núcleo del sistema estaba en la versión 0.99 y la
a Prentice Hall, que empezó a cobrar 150 dólares por licencia (unas 22.500 ptas. /
135.23 euros). Así pues, Linus tomó la decisión de cambiar esta política debido a
que el sistema Minix era ideal para los estudiantes de sistemas operativos, y su
precio era considerablemente alto. Llegamos de nuevo al año 1991, cuando Linus
se acabó de comprar su primer 386. En aquellos momentos, la intención de nuestro
amigo era clara: crear un nuevo Kernel de UNIX basado en el Kernel de Minix y
modificarlo periódicamente de manera que fuera capaz de ejecutar aplicaciones
GNU. A pesar de todo, no toda la vida del Sr. Linus ha estado dedicada
exclusivamente al sistema operativo Linux… Actualmente Linus Torvalds vive desde
el año 1997 en Santa Clara, California, junto con su esposa Tove y sus dos hijas,
Patricia Miranda y Daniela. Le encanta jugar con sus dos pequeñas. Está trabajando
para Transmeta, aunque nadie no sabe demasiado bien en qué trabaja. Parece ser
que existe una cláusula en su contrato que le impide revelar dicha información. De
todas formas, se sabe que Transmeta está desarrollando un nuevo procesador con
un juego de instrucciones RISC capaz de ejecutar código x86. Tal vez una de las
aficiones más conocidas de Linus es que le le gusta la cerveza, más aún si es
Guinness. Así lo demostraron los miembros del SVLUG (Silicon Valley Linux User
Group) cuando Linus fue a visitarlos para llevar a cabo una conferencia y le
regalaron una caja de cerveza… Poca cosa más se sabe de este personaje que ha
cambiado la forma de ver los ordenadores durante estos últimos años y que ha
conseguido dar un buen empujón al proyecto GNU.
Características de Linux
Linux es una muy buena alternativa frente a los demás sistemas operativos. Más
allá de las ventajas evidentes de costo, ofrece algunas características muy notables.
En comparación con las otras versiones de Unix para PC, la velocidad y
confiabilidad de Linux son muy superiores. También está en ventaja sobre la
disponibilidad de aplicaciones, ya que no hay mucha difusión de estos otros Unixes
(como Solaris, XENIX o SCO) entre los usuarios de PC por sus altos costos.
Comparado con sistemas operativos como los diferentes Microsoft Windows, Linux
también sale ganando. Los bajos requisitos de hardware permiten hacer un sistema
potente y útil de aquel 486 que algunos guardan en un armario. Esta misma
característica permite aprovechar al máximo las capacidades de las computadoras
más modernas. Es poco práctico tener una PC con 16 Mb de RAM y ponerle un
sistema operativo que ocupa 13 (que es lo que reporta sobre Windows 95 el System
Information de Symantec). No solo es superior respecto a el sistema de multitarea
y de administración de memoria, sino también en la capacidades de networking
(conectividad a redes) y de multiusuario (aun comparando con sistemas
multiusuario como NT). La única desventaja de Linux frente a estos sistemas, es la
menor disponibilidad de software, pero este problema disminuye con cada nuevo
programa que se escribe para el proyecto GNU, y con algunas empresas que están
desarrollando software comercial para Linux (por ej.,)
2. Introducción a Linux
De todo lo anterior se deduce que tiene que existir un usuario encargado de crear
las cuentas del resto de los usuarios, asignar los permisos, claves, etc. A este
usuario especial se le denomina superusuario (root). El superusuario es el
todopoderoso sobre el sistema, tiene acceso a todo y puede hacer cualquier cosa.
Entre otras cosas, se encarga del arranque y descarga del sistema, realización de
copias de seguridad, etc.
Introducción al Shell
Una vez registrado como usuario, se está abriendo una sesión. Durante esa sesión,
Linux se sitúa en el directorio base de un usuario (home directory) y ejecuta un
programa conocido como shell, que no es otra cosa que un un programa destinado
a atender ordenes introducidas desde el terminal y traducidas como un conjunto de
instrucciones internas.
El shell busca en el directorio de trabajo del usuario el archivo .bash_profile y lo
ejecuta (personaliza el entorno de trabajo del usuario).
El shell tiene su propio entorno, formado por una serie de variables con unos valores
determinados. Estas variables describen el entorno de ejecución del usuario, ya que
son heredadas por él.
Varios tipos de programas pueden emplearse como shells, pero en casi todas las
versiones de Linux existen diversos shells estándares disponibles.
$ pr –d nota
El comando pr se utiliza para imprimir ficheros. Esta orden indica que copie el fichero
nota al terminal, pero algo significará el modificador (-d). En este caso, lo que
significa es que la copia se realice a doble espacio, significado del modificador d. La
ejecución varía según las características de los modificadores.
$ pr –n –d nota
$ pr –nd nota
$ pr nota examen
Este ejemplo permite imprimir 2 ficheros, nota y examen. Así pueden existir
múltiples combinaciones para ejecutar ordenes, que pueden tener 0 ó más
argumentos. Esta última instrucción tiene 2 argumentos; la orden pr se le
llama argumento cero, nota es el primer argumento y examen el segundo. Los
argumentos deben ir separados por espacios en blanco.
Los argumentos normalmente son nombres de archivos o cadenas que dan
instrucciones al comando. Si un argumento contiene un espacio en intercalado
debe situarse la cadena entre comillas a fin de evitar que el shell piense que son
dos argumentos y no uno.
y en ese caso la cadena New York se pasa al comando grep como un argumento.
Existe una técnica por la cual podemos hacer referencia a un grupo de archivos
simultáneamente, utilizando los llamados caracteres comodines. Los comodines
son caracteres mediante los que podemos simbolizar parte del nombre de un
archivo haciendo referencia a más de uno al mismo tiempo. Los comodines * y ?
del DOS funcionan de modo idéntico en LINUX.
Con * podemos simbolizar parte de un nombre, o un nombre completo.
Con ? hacemos referencia a un sólo carácter, pudiendo repetirse tantas
veces como caracteres queramos sustituir.
*arch Identifica cualquier archivo que acabe con arch, incluido arch.
arch* Identifica cualquier archivo que comience por arch, incluido arch.
*arch* Identifica cualquier archivo que contenga la cadena arch.
arch? Identifica cualquier archivo que comience por arch seguido de un
carácter
Ejemplos utilizando el comando cat:
$cat *
Idem que empiecen por LE. Por ejemplo LE, LEI, LEEME
$cat LE*
Idem que contengan una letra seguida de ota. Por ejemplo nota, sota, rota. No
visualizará el fichero ota.
$cat ?ota
Además tenemos la posibilidad de especificar rangos, para lo que dispondremos,
entre corchetes, el rango de caracteres que deseemos utilizar.
$ls fich[1-9]
$ls fich[19]
Existen, pues, tres caracteres especiales que facilitan la expansión de una línea
de comandos, llamados caracteres comodín y son:
Una orden ideal para ver en pantalla los archivos a los que afectaría una referencia
compuesta por caracteres comodines es echo. Esta orden se utiliza para imprimir
cualquier parámetro que se dé a continuación, pero en el caso de que contengan
caracteres comodines se intentará buscar nombres de archivos existentes que los
cumplan. Es aconsejable utilizar esta orden para ver los archivos que se verían
afectados antes de ciertas operaciones, como la de borrado.
Veamos un ejemplo:
$echo ABC‘\*’
$echo “El símbolo del prompt es \$PS1”
Algunos caracteres especiales:
\r Retorno de carro
\t Tabulador
cd /etc/carpeta1
Nos llevaría al directorio carpeta1 dentro de /etc Para retroceder
directorios podemos usar o
cd /
y nos llevaría a la raiz, o
cd /etc
, y nos llevaría al directorio etc, o ir retrocediendo con puntos (cada 2
puntos equivale a un directorio) por ejemplo estando en /etc/carpeta1,
usar
cd ..
nos haría retroceder al directorio etc, y usar
cd ../..
nos haría retroceder hasta el directorio raíz (/)
Si se usa
cd
sin especificar ninguna ruta, seremos llevados a nuestro home.
cp archivo1 archivo2
De esta forma nos estaría copiando el archivo1, con el nombre de archivo2
mv archivo1 /etc/archivo2
De esta forma estaríamos moviendo el fichero archivo1, del directorio en el
que nos encontramos, a /etc, renombrandolo como archivo2
rm archivo1
Nos borraria el fichero llamado archivo1 del directorio en el que nos
encontramos.
rm -r
Mostrar por terminal un fichero de texto plano
cat
Por ejemplo:
cat archivo1
(El comando
less
y el
more
hace lo mismo que el
cat
)
Crear directorios
mkdir
Por ejemplo:
mkdir carpeta1
Nos crearia un directorio dentro de nuestro directorio actual llamado carpeta1
Crear ficheros
touch
Por ejemplo:
touch archivo1
Nos crearía un fichero en blanco llamado archivo1 dentro de nuestro
directorio actual.
nano archivo1
Nos abriría en el terminal el archivo1 para poder editarlo.
cal
Nos mostraría en el terminal un calendario del mes en que nos encontremos.
date
Nos aparecería por terminal la fecha y la hora actuales.
finger Fernando
Nos mostraría información del usuario llamado Fernando creado en nuestro
sistema.
clear
Nos desplazaría hacia arriba todo lo escrito en el terminal dejándolo en
blanco para escribir nuevamente.
whoami
Nos mostraría por terminal el nombre de usuario con el que estamos
conectados al sistema.
who
Nos mostraría información sobre los usuarios conectados en el sistema.
Por ejemplo:
adduser
Y el terminal nos solicitaría el nombre del nuevo usuario, su contraseña
etc.
También sirve
useradd
Eliminar a un usuario
userdel
Por ejemplo:
userdel Fernando
Nos eliminaría al usuario Fernando del sistema.
passwd
Y el terminal nos solicitaría la antigua contraseña y la nueva dos veces.
sudo rm archivo1
De esta forma estamos borrando el archivo1, siendo superusuario, lo
que nos permitiría borrar el archivo aun no siendo propietarios del mismo
ni teniendo permiso de escritura sobre el.
sudo su
Nos pediría la contraseña de superusuario, y ya estaríamos logueados
con el hasta que usáramos el comando
exit
.
man ls
Nos mostraría el manual del comando ls.
ls –help
Nos mostraría una pequeña ayuda sobre el comando ls (es menos extenso
que el man.)
La mejor forma de aprender todo esto es abrir un terminal de linux y ponerse manos
a la obra a moverse por directorios, curiosear cosas, mover archivos, copiarlos,
crear directorios…Y leer los manuales y la ayuda de los comandos.
Introducción:
Para saber administrar un sistema es fundamental comprender la organización de
ese sistema. La organización de un sistema informático se llama sistema de
ficheros.
El sistema de ficheros es la parte del núcleo más visible por los usuarios; se
encarga de abstraer propiedades físicas de diferentes dispositivos para
proporcionar una interfaz única de almacenamiento: el archivo. Cada sistema Unix
tiene su sistema de archivos nativo (por ejemplo, ext2 en Linux, UFS en Solaris o
EFS en IRIX), por lo que para acceder a todos ellos de la misma forma el núcleo de
Unix incorpora una capa superior denominada VFS ( Virtual File System) encargada
de proporcionar un acceso uniforme a diferentes tipos de sistema de ficheros.
Tipos de ficheros:
Cualquier directorio contiene dos ficheros por defecto que a su vez son directorios:
. es un directorio que señala al propio directorio.
.. es un directorio que señala al directorio padre o antecedente del actual.
El contenido de los ficheros directorio es una tabla que mantiene una relación entre
un nombre de fichero y su número de inodo.
En Linux, toda operación de E/S se realiza sobre un fichero de dispositivo. Toda
entidad, sea física o lógica, se representa como un fichero (no hay unidades); a
diferencia de otros sistemas como MSDOS, por esto los dispositivos físicos (discos,
CDROM, terminal, impresora,…) se representan como ficheros especiales. Estos
ficheros especiales se localizan en un directorio llamado /dev. Algunos de los más
importantes son:
/bin
Binarios de los comandos esenciales (cp, rm, ls, etc.), usados por todos los
usuarios.
/boot
Ficheros estáticos para el arranque del sistema (kernels, ficheros del gestor de
arranque)
/dev
Ficheros de dispositivos
/etc
Configuración específica del sistema. Contiene algunos ficheros imprescindibles
como /etc/passwd y /etc/shadow (ficheros que contienen los usuarios para acceder
al sistema), /etc/group (la lista de grupos y sus miembros), /etc/fstab (la lista de
montaje de dispositivos), etc.
/lib
Bibliotecas compartidas esenciales y módulos del kernel
/mnt
Directorio para montajes temporales
/opt
Paquetes software adicionales (los no incluidos en la distribución)
/sbin
Binarios esenciales para el sistema, usados por el administrador (fsck, mkfs, init,
etc.)
/tmp
Ficheros temporales
/usr
La mayoría de programas del sistema y sus ficheros relacionados
/var
Datos variables
/home
Ficheros de los usuarios
/root
Ficheros del administrador del sistema (root)
/proc
Sus contenidos no están en el sistema de ficheros normal, sino que son creados por
el kernel cuando se le dice que monte ahí un sistema de ficheros de tipo “proc”. Es
un directorio virtual por decirlo así. En este sistema de ficheros se puede encontrar
y alterar información del sistema: configuración de dispositivos, opciones del kernel,
información sobre los procesos en ejecución, etc.
Nota: Normalmente sólo el administrador (root) puede escribir en los directorios del
raíz salvo en /home y /tmp ya que están pensados para almacenar ficheros
(temporales en el caso de /tmp) de los usuarios.
Los directorios /usr y /var son tan complejos como el directorio raíz:
En /usr irán la inmensa mayoría de los programas del sistema, tanto para los
usuarios como para el administrador, y los ficheros de datos que éstos necesiten.
En él encontraremos algunos directorios como los que había en el directorio raíz.
Su función es similar a la de sus homónimos del raíz, pero nada de lo que se
encuentre en /usr debe ser necesario para iniciar o recuperar el sistema.
Algunos de estos directorios son:
En /var como su nombre indica se encuentran directorios con datos variables, que
cambiarán con el paso del tiempo por la acción de los programas del sistema. (Esto
incluye desde correo hasta ficheros de log, pasando por bases de datos o cachés
creadas por los programas del sistema). Algunos de estos directorios son:
Nota: Para determinar los permisos finales siempre se debe tener en cuenta que:
a) Para poder realizar operaciones sobre cualquier directorio (leer o escribir) será
necesario siempre tener otorgado además el permiso de ejecución.
b) Para acceder a un recurso de cualquier forma (ejecución, lectura o escritura) se
deben tener permisos de para todos los directorios que contienen al recurso directa
e indirectamente.
Para un fichero existen tres posibles entidades que disfrutan de los permisos de
los ficheros:
u Usuario. También conocido como propietario, es el usuario dueño del
fichero.
g Grupo. Grupo al que pertenece el fichero generalmente coincide con el
grupo del propietario. El grupo determina el dominio.
o Otros. Son los demás usuarios que no pertenecen a este grupo.
Los permisos son atributos de cada fichero, están almacenados en el i-nodo del
fichero. Los atributos de un fichero se pueden conocer mediante la orden: ls -l.
Esta orden muestra un listado en formato largo de los ficheros del directorio actual
y muestra algo como:
Los permisos “totales” de un recurso constan de nueve indicadores, donde los tres
primeros indican los permisos asociados al dueño, los otros tres, al grupo y los
últimos, al resto de los usuarios.
Ejemplos:
rwx r-x — =111 101 000 (750 en octal)
6. Seguridad en Linux
El archivo /etc/shadow
Todos los usuarios del sistema pueden visualizar el contenido del fichero
/etc/passwd, por lo que cualquier usuario tiene acceso a todas las contraseñas,
aunque estén encriptadas.
Linux utiliza una llamada al sistema, crypt, para codificar las contraseñas y aunque
resulta difícil descifrarla, no es imposible. Además, en el fichero /etc/passwd hay
más información de los usuarios como el uid, gid, etc., por lo que está facilitando
información al exterior.
Una manera de proteger más aún el sistema es utilizar la codificación de sombra
(shadow) para ubicar las contraseñas en otro archivo llamado /etc/shadow sólo
accesible por root. En efecto, el traslado de las contraseñas cifradas al archivo
/etc/shadow, accesible únicamente por el superusuario, añade una útil capa de
protección.
El fichero /etc/shadow contiene cierta información de los usuarios. Cada línea
representa a un usuario y la información se encuentra en campos separados por el
carácter “:”, según el formato:
login:contraseña:último:plazo:máximo:aviso:expirado:deshabilitado:r
El significado de cada uno de los campos es:
Ejemplo:
root:$1$9p5c6c7E$3TwupixFk5RUztaT8i6.f.:11634:0:99999:7:::
bin:*:11634:0:99999:7:::
jorge:$1$Bkqh8wvo$9skkc0R9bhFXX.NdsQxmG1:11634:0:99999:7:::
pepe:!!:11640:0:99999:7:::
luis:!!:11640:0:99999:7:::
usu1_proy1:$1$7GA6Ev32$YZKQROB6tZFhzGur3u.sC/:11640:0:99999:7:::
usu2_proy1:$1$I0XDkjBq$SMpiTM1MsNYKEU6YXa6zW/:11640:0:99999:7:::
usu_proy1:$1DkjBqMpiTM1MsNYKEU6YXa6zW/:11640:0:99999:7:::
El archivo /etc/gshadow.
Es el análogo a /etc/shadow para el fichero de grupos /etc/group.
usuarioALL=(ALL) ALL
Por ejemplo sudo mkdir directorio1 ejecutaría el comando mkdir como root.
Si utilizamos sudo su haremos log como root y permaneceremos así hasta usar el
comando exit.
7. Expresiones regulares
Introducción
Vamos a explicar las expresiones regulares porque se utilizan a menudo desde una
gran variedad de aplicaciones en los SO tipo Unix como Linux. Permiten reconocer
una serie de cadenas de caracteres que obedecen a cierto patrón que llamamos
expresión regular.
Por ejemplo, si deseamos buscar líneas que contenga las palabras ‘hola’ o ‘adiós’
en los ficheros del directorio actual haremos:
$ egrep 'hola|adiós' *
No todos los comandos usan de forma idéntica las expresiones regulares. Algunos
de los comandos que usan expresiones regulares son grep, egrep, sed, vi, awk, etc.
Actualmente algunos lenguajes modernos como perl1 incluyen capacidad de
manejar expresiones regulares lo cual les da una gran potencia y para lenguajes
más antiguos como “C” existen librerías para poder usar expresiones regulares. En
resumen las expresiones regulares están siendo incorporadas en distintos sitios y
ya no están limitadas a su uso en SO tipo Unix. Cada comando o aplicación
implementa las expresiones regulares a su manera aunque en general son todas
bastantes parecidas. Por ejemplo grep permite usar expresiones regulares sencillas
mientras que egrep es capaz de usar expresiones regulares más complejas. Otros
comandos adaptan el uso de expresiones a sus particulares necesidades y por ello
si bien se puede hablar en general de ellas hay que tener en cuenta las
peculiaridades de cada caso que deberán ser consultadas en las páginas del
manual de cada comando. Las expresiones regulares vienen a ser una especie de
lenguaje y cada comando usa su propio dialecto. En realidad las diferencias entre
los distintos dialectos suelen ser muy pocas. Por ejemplo si un comando usa los
paréntesis y además admite el uso de expresiones regulares extendidas se
establecerá una forma de distinguir si los paréntesis deben ser interpretados como
patrón de la expresión regular o como otra cosa. Para ello se suele usar los
paréntesis precedidos del carácter escape ‘\’.
Hablando más formalmente, las expresiones regulares son una herramienta para
definir patrones de búsqueda y reemplazo. En ellas se definen lo que llamaremos
átomos que serán las partes que buscaremos. Se supone que lo que buscamos no
lo conocemos (si no no lo buscaríamos), así que tenemos que definir un átomo para
cada parte que busquemos. En los patrones podemos hacer referencias a “un
caracter cualquiera”, “el comienzo de línea”, “el final de línea” y cosas así.
Básicas: ^ $ . * \( \) [ \{ \} \
Extendidas: | ^ $ . * + ? ( ) [ { } \
Nota: Adicionalmente, algunos comandos como vi, ex y egrep (grep –E) también
aceptan: \< \>
La siguiente tabla muestra el significado de cada uno de ellos:
Los comandos que usan expresiones regulares básicas y extendidas son los siguientes:
8. Configurar IP en Ubuntu
Voy a explicar cómo configurar la IP desde el terminal de texto, de ese modo esto
puede ser aplicado a cualquier distribución, incluidas las que no poseen interfaz
gráfico.
Configuración estática:
auto lo
auto ethX
address 192.168.0.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
De la misma forma que antes, la X de ethX hay que sustituirla por el número de la
tarjeta de red en cuestión que se quiera configurar.
Ver la configuración:
Por último, para ver la configuración de red que tenemos, escribimos el siguiente
comando en el terminal:
ifconfig
Nota: si se configura una IP estática en una red con DHCP, es aconsejable
configurar el DHCP para que de solo dinámicamente desde la IP .5 hasta la última
Voy a explicar como configurar la IP desde el terminal de texto, de ese modo esto
puede ser aplicado a cualquier distribución, incluidas las que no poseen interfaz
gráfico.
El archivo de configuración de la IP se encuentra en: /etc/network/interfaces (el
mismo que el de la red cableada)
auto wlanX
wireless-essid NOMBRE_DE_LA_RED
wireless-key CLAVE_DE_LA_RED
wireless-mode managed
Donde wlanX hay que sustituir la X por el número de la tarjeta de red que se
quiera configurar, por ejemplo, wlan0, o wlan1…
Configuración estatica:
auto wlanX
wireless-essid NOMBRE_DE_LA_RED
wireless-key CLAVE_DE_LA_RED
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
De la misma forma que antes, la X de wlanX hay que sustituirla por el numero de
la tarjeta de red wifi en cuestión que se quiera configurar.
Nota: con este comando reiniciaríamos todas las tarjetas de red del ordenador.
Puede sustituirse la palabra restart, por stop o start para pararlas e iniciarlas.
Otra forma de reiniciar las tarjetas de red, es reiniciar concretamente una:
Por último, para ver la configuración de red que tenemos, escribimos el siguiente
comando en el terminal:
iwconfig
Nota: a diferencia de la tarjeta de red cableada que usa el comando ifconfig, para
ver la configuración de la tarjeta de red wifi hay que usar el comando iwconfig.
Nota: si se configura una IP estática en una red con DHCP, es aconsejable
configurar el DHCP para que de solo dinámicamente desde la IP .5 hasta la última
por ejemplo, de esa forma desde la .2 hasta la .5 no las asignará a nadie, y
podremos utilizarlas como estáticas con la seguridad de que el DHCP no va a dar
nuestra IP a nadie más evitando que se duplique y hayan conflictos.
Los DNS o Domain Name System (en español: sistema de nombres de dominio) es
un sistema de nomenclatura jerárquica para computadoras, servicios o cualquier
recurso conectado a Internet o a una red privada. Este sistema asocia información
variada con nombres de dominios asignado a cada uno de los participantes. Su
función más importante, es traducir (resolver) nombres inteligibles para las personas
en identificadores binarios asociados con los equipos conectados a la red, esto con
el propósito de poder localizar y direccionar estos equipos mundialmente.
El servidor DNS utiliza una base de datos distribuida y jerárquica que almacena
información asociada a nombres de dominio en redes como Internet. Aunque como
base de datos el DNS es capaz de asociar diferentes tipos de información a cada
nombre, los usos más comunes son la asignación de nombres de dominio a
direcciones IP y la localización de los servidores de correo electrónico de cada
dominio.
Configuración
Podemos configurar los DNS de dos formas, una de ellas es:
1)
Editar el fichero de configuración de los DNS, que se encuentra en
/etc/resolv.conf.
Para modificar el fichero basta con abrirlo con cualquier editor de textos, por
ejemplo nano:
2)
Editando el fichero /etc/network/interfaces, donde se configuran las tarjetas de red
(para ver como hacerlo acceder a: www.utilizalinux.com/2013/06/configurar-ip-en-
ubuntu.html)
1. Fundamentos de Telefonía
Los sistemas de telefonía tradicional están guiados por un sistema muy simple pero
ineficiente denominado conmutación de circuitos. La conmutación de circuitos a sido
usado por las operadoras tradicionales por más de 100 años. En este sistema
cuando una llamada es realizada la conexión es mantenida durante todo el tiempo
que dure la comunicación. Este tipo de comunicaciones es denominado “circuito”
porque la conexión está realizada entre 2 puntos hacia ambas direcciones. Estos
son los fundamentos del sistema de telefonía convencional.
Con el auge en los últimos años de la Telefonía IP, la telefonía convencional
análoga/digital va desapareciendo, las facilidades de integración con muchos
servicios ya existentes en las comunicaciones informáticas, han permitido la
aceptación y rápida adopción de la Telefonía IP, lográndose la incorporación de
funcionalidades que con la telefonía convencional es imposible lograrlos, pasando
de ser una simple PBX-IP a todo un sistema de Comunicaciones Unificadas, en el
cual además del servicio telefónico que todos conocemos, ofrece otros como la
integración de los mensajes de voz , libreta de contactos y fax con el correo
electrónico, permite además colaboración por medio de salas de conferencia, desde
donde pueden interactuar remotamente los participantes, asi como la facilidad de
presencia con esto se logra que la comunicación nunca se pierda ya que si el
destinatario no se encuentra en su primer punto de contacto este sea localizado por
los diferentes medios disponibles, finalizando con el correo electrónico con un
mensaje de voz, de esta manera el mensaje siempre llegara a su destinatario.
2. VoIP – Telefonía IP
Parece lógico que bajo de la expresión “telefonía IP” (o “voz usando IP”, en su
expresión inglesa, VoIP) tenga cabida aquella tecnología que transporte tráfico de
voz utilizando el protocolo IP en redes de conmutación de paquetes. Pero si se
aceptase así, sin más matización, se produciría cierta confusión puesto que los
términos Telefonía IP y Voz IP (VoIP), aunque parezcan y se empleen como
similares pueden referirse a situaciones bien diferentes.
Voz sobre Protocolo de Internet, también llamado Voz sobre IP, Voz
IP, VozIP, VoIP (por sus siglas en inglés, Voice over IP), es un grupo de recursos
que hacen posible que la señal de voz viaje a través de Internet empleando un
protocolo IP (Protocolo de Internet). Esto significa que se envía la señal de voz en
forma digital, en paquetes de datos, en lugar de enviarla en forma analógica a través
de circuitos utilizables sólo por telefonía convencional como las redes PSTN (sigla
de Public Switched Telephone Network, Red Telefónica Pública Conmutada).
Los Protocolos que se usan para enviar las señales de voz sobre la red IP se
conocen como protocolos de Voz sobre IP o protocolos IP. El tráfico de Voz sobre
IP puede circular por cualquier red IP, incluyendo aquellas conectadas a Internet,
como por ejemplo las redes de área local (LAN).
Es muy importante diferenciar entre Voz sobre IP (VoIP) y Telefonía sobre IP.
VoIP es el conjunto de normas, dispositivos, protocolos, en definitiva la
tecnología que permite comunicar voz sobre el protocolo IP.
Telefonía sobre IP es el servicio telefónico disponible al público, hace uso de la
tecnología de VoIP.
El cliente
El cliente establece y origina las llamadas realizadas de voz, esta información se
recibe a través del micrófono del usuario (entrada de información) se codifica, se
empaqueta y, de la misma forma, esta información se decodifica y reproduce a
través de los altavoces o audífonos (salida de la información).
Un Cliente puede ser un usuario de Skype o un usuario de alguna empresa que
venda sus servicios de telefonía sobre IP a través de equipos como ATAs
(Adaptadores de teléfonos analógicos) o teléfonos IP o Softphones que es un
software que permite realizar llamadas a través de una computadora conectada a
Internet.
Los servidores
Los servidores se encargan de manejar operaciones de base de datos, realizado en
un tiempo real como en uno fuera de él. Entre estas operaciones se tienen la
contabilidad, la recolección, el enrutamiento, la administración y control del servicio,
el registro de los usuarios, etc.
Usualmente en los servidores se instala software denominados Switches o IP-PBX
(Conmutadores IP), ejemplos de switches pueden ser “Voipswitch”, “Mera”,
“Nextone” entre otros, un IP-PBX es Asterisk uno de los más usados y de código
abierto.
Los gateways
Los gateways brindan un puente de comunicación entre todos los usuarios, su
función principal es la de proveer interfaces con la telefonía tradicional adecuada, la
cual funcionara como una plataforma para los usuarios (clientes) virtuales.
Los Gateways se utilizan para “Terminar” la llamada, es decir el cliente Origina la
llamada y el Gateway Termina la llamada, eso es cuando un cliente llama a un
teléfono fijo o celular, debe existir la parte que hace posible que esa llamada que
viene por Internet logre conectarse con un cliente de una empresa telefónica fija o
celular.
Funcionalidades
VoIP puede facilitar tareas que serían más difíciles de realizar usando las redes
telefónicas comunes:
Las llamadas telefónicas locales pueden ser automáticamente enrutadas a un
teléfono VoIP, sin importar dónde se esté conectado a la red. Uno podría llevar
consigo un teléfono VoIP en un viaje, y en cualquier sitio conectado a Internet,
se podría recibir llamadas.
Números telefónicos gratuitos para usar con VoIP están disponibles en Estados
Unidos de América, Reino Unido y otros países con organizaciones de usuarios
VoIP.
Los agentes de call center usando teléfonos VoIP pueden trabajar en cualquier
lugar con conexión a Internet lo suficientemente rápida.
Algunos paquetes de VoIP incluyen servicios extra por los que PSTN (Red
Publica Telefónica Conmutada) normalmente cobra un cargo extra, o que no se
encuentran disponibles en algunos países, como son las llamadas de 3 a la vez,
retorno de llamada, remarcación automática, o identificación de llamada.
Los usuarios de VoIP pueden viajar a cualquier lugar en el mundo y seguir
haciendo y recibiendo llamadas de la siguiente forma:
o Los subscriptores de los servicios de las líneas telefónicas pueden hacer y
recibir llamadas locales fuera de su localidad. Por ejemplo, si un usuario
tiene un número telefónico en la ciudad de Nueva York y está viajando por
Europa y alguien llama a su número telefónico, esta se recibirá en Europa.
Además, si una llamada es hecha de Europa a Nueva York, esta será
cobrada como llamada local, por supuesto el usuario de viaje por Europa
debe tener una conexión a Internet disponible.
o Los usuarios de Mensajería Instantánea basada en servicios de VoIP
pueden también viajar a cualquier lugar del mundo y hacer y recibir
llamadas telefónicas.
Arquitectura de red
El propio Estándar define tres elementos fundamentales en su estructura:
Terminales: son los sustitutos de los actuales teléfonos. Se pueden implementar
tanto en software como en hardware.
Gatekeepers: son el centro de toda la organización VoIP, y son el sustituto para
las actuales centrales.
Normalmente implementan por software, en caso de existir, todas las
comunicaciones que pasen por él.
Gateways: se trata del enlace con la red telefónica tradicional, actuando de
forma transparente para el usuario.
Con estos tres elementos, la estructura de la red VoIP podría ser la conexión de dos
delegaciones de una misma empresa. La ventaja es inmediata: todas las
comunicaciones entre las delegaciones son completamente gratuitas. Este mismo
esquema se podría aplicar para proveedores, con el consiguiente ahorro que esto
conlleva.
Protocolos de VoIP: son los lenguajes que utilizarán los distintos dispositivos
VoIP para su conexión. Esta parte es importante ya que de ella dependerá la
eficacia y la complejidad de la comunicación.
o Por orden de antigüedad (de más antiguo a más nuevo):
H.323 – Protocolo definido por la ITU-T;
SIP – Protocolo definido por la IETF;
Megaco (También conocido como H.248) y MGCP – Protocolos de
control;
UNIStim – Protocolo propiedad de Nortel(Avaya);
Skinny Client Control Protocol – Protocolo propiedad de Cisco;
MiNet – Protocolo propiedad de Mitel;
CorNet-IP – Protocolo propiedad de Siemens;
Parámetros de la VoIP
Este es el principal problema que presenta hoy en día la penetración tanto de VoIP
como de todas las aplicaciones de IP. Garantizar la calidad de servicio sobre
Internet, que solo soporta “mejor esfuerzo” (best effort) y puede tener limitaciones
de ancho de banda en la ruta, actualmente no es posible; por eso, se presentan
diversos problemas en cuanto a garantizar la calidad del servicio.
Códecs
La voz ha de codificarse para poder ser transmitida por la red IP. Para ello se hace
uso de códecs que garanticen la codificación y compresión del audio o del video
para su posterior decodificación y descompresión antes de poder generar un sonido
o imagen utilizable. Según el Códec utilizado en la transmisión, se utilizará más o
menos ancho de banda. La cantidad de ancho de banda utilizada suele ser
directamente proporcional a la calidad de los datos transmitidos.
Entre los codecs más utilizados en VoIP están G.711, G.723.1 y el G.729
(especificados por la ITU-T).
Estos Codecs tienen los siguientes anchos de banda de codificación:
G.711: bit-rate de 56 o 64 Kbps.
G.722: bit-rate de 48, 56 o 64 Kbps.
G.723: bit-rate de 5,3 o 6,4 Kbps.
G.728: bit-rate de 16 Kbps.
G.729: bit-rate de 8 o 13 Kbps.
Esto no quiere decir que es el ancho de banda utilizado, ya que hay que sumar el
tráfico de por ejemplo el Codec G729 utiliza 31.5 Kbps de ancho de banda en su
transmisión.
Retardo o latencia
Una vez establecidos los retardos de tránsito y el retardo de procesado la
conversación se considera aceptable por debajo de los 150 ms, que viene a ser 1,5
décimas de segundo y ya produciría retardos importantes.
Pérdida de tramas (Frames Lost):
Durante su recorrido por la red IP las tramas se pueden perder como resultado de
una congestión de red o corrupción de datos. Además, para tráfico de tiempo real
como la voz, la retransmisión de tramas perdidas en la capa de transporte no es
práctico por ocasionar retardos adicionales. Por consiguiente, los terminales de voz
tienen que retransmitir con muestras de voz perdidas, también llamadas Frame
Erasures. El efecto de las tramas perdidas en la calidad de voz depende de como
los terminales gestionen las Frame Erasures.
En el caso más simple si se pierde una muestra de voz el terminal dejará un intervalo
en el flujo de voz. Si muchas tramas se pierden, sonará grietoso con sílabas o
palabras perdidas. Una posible estrategia de recuperación es reproducir las
muestras de voz previas. Esto funciona bien si sólo unas cuantas muestras son
perdidas. Para combatir mejor las ráfagas de errores usualmente se emplean
sistemas de interpolación. Basándose en muestras de voz previas, el decodificador
predecirá las tramas perdidas. Esta técnica es conocida como Packet Loss
Concealment (PLC).
La ITU-T G.113 apéndice I provee algunas líneas de guía de planificación
provisional en el efecto de pérdida de tramas sobre la calidad de voz. El impacto es
medido en términos de Ie, el factor de deterioro. Este es un número en el cual 0
significa no deterioro. El valor más grande de Ie significa deterioro más severo. La
siguiente tabla está derivada de la G.113 apéndice I y muestra el impacto de las
tramas perdidas en el factor Ie.
Para solucionar este tipo de inconvenientes, en una red se puede implementar tres
tipos básicos de QoS:
Best effort: (en inglés, mejor esfuerzo) Este método simplemente envía
paquetes a medida que los va recibiendo, sin aplicar ninguna tarea específica
real. Es decir, no tiene ninguna prioridad para ningún servicio, solo trata de
enviar los paquetes de la mejor manera.
Servicios Integrados: Este sistema tiene como principal función pre-acordar
un camino para los datos que necesitan prioridad, además esta arquitectura no
es escalable, debido a la cantidad de recursos que necesita para estar
reservando los anchos de banda de cada aplicación. RSVP (Resource
Reservation Protocol) fue desarrollado como el mecanismo para programar y
reservar el ancho de banda requerido para cada una de las aplicaciones que
son transportados por la red.
Servicios Diferenciados: Este sistema permite que cada dispositivo de red
tenga la posibilidad de manejar los paquetes individualmente, además cada
router y switch puede configurar sus propias políticas de QoS, para tomar sus
propias decisiones acerca de la entrega de los paquetes. Los servicios
diferenciados utilizan 6 bits en la cabecera IP (DSCP Differentiated Services
Code Point). Los servicios para cada DSCP son los siguientes:
Servicio Característica
Expedited Utilizada para dar el mayor servicio, por ende, es la que bridna
Forwarding (EF) más garantías (utilizada para trafico de voz o video)
asociadas como más sensibles al delay (retardo) como VoIP. Por otra parte,
penaliza aquellas que no asocia como aplicaciones en tiempo real como FTP.
CQ (Custom Queueing): Este mecanismo asigna un porcentaje de ancho de
banda disponible para cada tipo de trafico (voz, video y/o datos), además
especifica el numero de paquetes por cola. Las colas son atendidas según
Round Robin (RR).
El método RR asigna el ancho de banda a cada uno de los diferentes tipos de tráfico
existentes en la red. Con este método no es posible priorizar tráfico ya que todas
las colas son tratadas de igual manera.
Protocolos de VoIP
El objetivo del protocolo de VoIP es dividir en paquetes los flujos de audio para
transportarlos sobre redes basadas en IP.
SIP
SIP (Session Initiation Protocol) es un protocolo de señalización para conferencia,
telefonía, presencia, notificación de eventos y mensajería instantánea a través de
Internet. Fue desarrollado inicialmente en el grupo de trabajo IETF MMUSIC
IAX
Acrónimo de “Inter Asterisk eXchange”.
IAX es un protocolo abierto, es decir que se puede descargar y desarrollar
libremente.
Aún no es un estándar.
Es un protocolo de transporte, que utiliza el puerto UDP 4569 tanto para
señalización de canal como para RTP (Protocolo de Transporte en tiempo
Real).
Puede truncar o empaquetar múltiples sesiones dentro de un flujo de datos, así
requiere de menos ancho de banda y permite mayor número de canales entre
terminales.
En seguridad, permite la autenticación, pero no hay cifrado entre terminales.
Según la documentación (Asterisk 1.4) el IAX puede usar cifrado (aes128),
siempre sobre canales con autentificación MD5.
H.323
Originalmente fue diseñado para el transporte de vídeo conferencia.
Su especificación es compleja.
H.323 es un protocolo relativamente seguro, ya que utiliza RTP.
Tiene dificultades con NAT, por ejemplo para recibir llamadas se necesita
direccionar el puerto TCP 1720 al cliente, además de direccionar los puertos
UDP para la media de RTP y los flujos de control de RTCP.
Para más clientes detrás de un dispositivo NAT se necesita gatekeeper en
modo proxy.
MGCP
Acrónimo de “Media Gateway Control Protocol”.
Inicialmente diseñado para simplificar en lo posible la comunicación con
terminales como los teléfonos.
MGCP utiliza un modelo centralizado (arquitectura cliente * servidor), de tal
forma que un teléfono necesita conectarse a un controlador antes de conectarse
con otro teléfono, así la comunicación no es directa.
Tiene tres componentes un MGC (Media Gateway Controller), uno o varios MG
(Media Gateway) y uno o varios SG (Signaling Gateway), el primero también
denominado dispositivo maestro controla al segundo también denominado
esclavo.
No es un protocolo estándar.
SCCP
Acrónimo de “Skinny Client Control Protocol”.
Es un protocolo propietario de Cisco.
Es el protocolo por defecto para terminales con el servidor Cisco Call Manager
PBX que es el similar a Asterisk PBX.
El cliente Skinny usa TCP/IP para transmitir y recibir llamadas.
Para el audio utiliza RTP, UDP e IP.
Los mensajes Skinny son transmitidos sobre TCP y usa el puerto 2000.
Cuadro de Comparación
El siguiente cuadro trata de realizar una comparación entre las características más
importantes de lo protocolos para voip antes descritos:
Tecnología Disponibilidad Seguridad NAT Total
SIP 2 2 2 1 7
IAX 2 3 1 3 9
H.323 3 1 2 1 7
MGCP 2 1 ¿? ¿? 3
SCCP 3 1 ¿? ¿? 4
Funciones
Las características dependen del sistema ensamblado, algunas de ellas puede que
requieran de licencias u otro software además de algunos módulos:
Número ilimitado de extensiones Acceso de correo Troncales
o anexos de voz por la Web Analógicas y
Múltiples operadores Sistema de Digitales T1/E1
automáticos con menús multiventas por Enrutamiento
Múltiples casillas de correos de teléfono avanzado (IVR)
voz Integración con Notificación de
Integración con teléfonos Outlook Express estatus de llamada
celulares (Exchange) Aviso de Llamada
(Microsoft)
Perifoneo con altavoz (Sistema Autodesvío de
Captura de
de Parlantes/Amplificador) llamadas
llamadas
Teléfonos remotos alrededor del Mensajería
Diagnóstico del
mundo unificada
Sistema
Interfaz con el usuario Filtrado de
Opciones de usar
(incluyendo reenvios, mensajería llamadas
unificada, grabaciones de los cualquier teléfono
IP ANI automatización
mensajes redirigidos a su correo y enrutamientos
de voz) Soporta telefónos
analógicos Identificación DNIS
Grupos de Extensiones
Llamadas en Mayor movilidad
Autoinstalación de extensiones
espera Personalización del
Proveedor de VoIP
3. Introducción a Asterisk
¿Que es Asterisk?
Realmente esta pregunta puede ir mucho más allá de la definición común que se
establece para el sistema.
Existen ciertas consideraciones que hacen a Asterisk lo que realmente es en la
actualidad, y una de las principales surge de la propia naturaleza del sistema: La
filosofía Open Source.
Considerando Asterisk como una plataforma integral de comunicaciones, podría
considerarse la más importante, y ha resultado como única por muchos años en un
entorno, donde todos los sistemas de comunicación eran totalmente privativos.
Aunque con el tiempo, fueron sacando interfaces comúnmente conocidos como CTI
para la integración de sistemas de terceros para cumplir funciones muy específicas,
la potencia de estas interfaces era bastante limitada dado que el núcleo de los
sistemas privados, permanencia cerrado al público.
Con Asterisk se sienta un precedente desde el momento que el código es de libre
acceso, modificación y ampliación, dado que múltiples colectivos pudieron ampliar
sus necesidades y adaptarlas a lo que venían buscando en un momento concreto,
que un sistema de comunicaciones pudiera ofrecerles, dentro de sus extensivas
bondades.
La primera versión estable surgió casi 5 años después, Asterisk 1.0. A partir de aqui
el sistema de versiones ha evolucionado de la siguiente forma:
Asterisk SCF
Asterisk SCF es un entorno todavía en vías de desarrollo que aunque originalmente
no ha sido lanzado para reemplazar al sistema original Asterisk, ofrecerá una
evolución en múltiples términos que supondría en un futuro su posible adaptación
por la mayoría de los usuarios del mismo.
La idea intencional está basada, en la posibilidad de ofrecer un sistema capaz de
ser desplegado en Clusters, o múltiples sistemas con total transparencia, algo que
en la actualidad el sistema Asterisk no puede ofrecer de por si, y en caso de
necesitar algún tipo de escalado, era necesario recurrir a soluciones alternativas
como los Proxies SIP como los reconocidos Opensips o Kamailio. Según la
definición ofrecida por los desarrolladores, “Asterisk SCF ha sido
arquitectónicamente diseñado para ofrecer los máximos niveles de disponibilidad,
escalabilidad, extensibilidad, tolerancia a fallos y rendimiento” .
Arquitectura de Asterisk
La arquitectura de Asterisk está basada en un sistema modular, que depende del
núcleo principal del sistema.
Módulos
Como comentábamos antes, Asterisk está basado en módulos independientes, los
cuales pueden ser cargados y descargados a voluntad, en función de las
necesidades que deseemos proveer al sistema.
Cada módulo posee una funcionalidad específica, de tal forma que puedan tratarse
todos los aspectos del sistema, pasando por los tipos de canales (SIP, IAX, DAHDI)
o conexiones a otros sistemas para interactuar con Asterisk (mail, bases de datos,
web, etc.).
Existe un archivo específico para la configuración de los módulos llamado
modules.conf (dentro de la ruta especifica de instalación de Asterisk típicamente
/etc/asterisk).
Durante la instalación del sistema Asterisk, es posible seleccionar que módulos
pretendemos instalar. En caso que instalemos una gran cantidad de modulo que
tengamos intención de utilizar en un futuro avanzado, pero no a corto plazo, por
motivos de seguridad es altamente recomendable señalar específicamente que no
se carguen dentro del fichero de configuración utilizando la propiedad noload =>
Todas las posibilidades que nos ofrece el fichero de configuración modules.conf las
podremos ver en su apartado específico.
Dentro del sistema de módulos, estos se clasifican en diferentes subapartados como
vemos a continuación los más populares:
Aplicaciones
Recursos
Funciones del Dialplan
Registro del detalle llamadas
Registro de eventos de canales
Drivers de canales
Traductores de Codecs y Formatos
Add-ons
Aplicaciones
Las aplicaciones son aquellas acciones aplicables al manejo de las llamadas dentro
del Plan de Marcación. Por ejemplo, la más popular en todos los planes sería la
aplicación Dial, la cual simplemente tiene como propósito lanzar una llamada a un
canal en función de las propiedades que señalemos durante su ejecución. Existen
otras aplicaciones comunes, como VoiceMail (encargada de la gestión del Buzón
de Voz), Record (para grabar el sonido de un determinado canal), etc.
Algunas características en común de las aplicaciones son las siguientes:
Las acciones están exclusivamente enfocadas por y para los canales.
Se carga de forma dinámica
Se ejecutan de manera síncrona.
El formato clásico de este tipo de módulos es app_<nombre>.so
Recursos
La función específica de los recursos es la de integrar Asterisk con los sistemas
externos. Hablamos de bases de datos, servidores web, calendarios, etc.
Tienen la capacidad de utilizar por sí mismos, Aplicaciones del sistema como
veíamos antes. Pero una de las diferencias con respecto a estas, es que se cargan
de manera estática, y pueden operar simultáneamente en múltiples canales, en vez
de crearse dinámicamente para cada canal en curso.
Uno de los más comunes, es el recurso para ofrecer servicios de Música en Espera
(Music ion Hold), o para realizar interconexiones con bases de datos a través de
ODBC.
El formato clásico de este tipo de módulos es res_<nombre>.so
Drivers de canales
Son los drivers específicos para cada tipo de canal disponible actualmente o en un
futuro para Asterisk. Estos son los que aportan específicamente la posibilidad de
volver totalmente independiente el sistema de los mismos para así poder tratarlos
de forma totalmente homogénea. Son exactamente una especie de interfaz entre el
núcleo de Asterisk y la parte “lógica” dentro del sistema operativo. Es exactamente
un API.
Todos los canales más típicos, tienen su correspondiente modulo para el driver.
Ejemplos típicos son el específico para DAHDI, SIP e IAX, que justamente son los
más utilizados por la comunidad Asterisk. El resto no están lo suficientemente
difundidos, aunque tienen soporte y van mejorando con el tiempo, como el
específico para tratar con estaciones Cisco, llamado como su protocolo propietario,
Skinny (SCCP).
El formato clásico de este tipo de módulos es chan_<nombre>.so
Interfaces
Asterisk se despliega y comunica con el entorno a través de múltiples interfaces que
provee, tanto para trabajos de gestión y mantenimiento manuales, como para su
autogestión de forma estática, y sistemas externos que puedan recabar datos de
forma dinámica y automática, y finalmente pasando a ofrecer interfaces para poder
trabajar con lenguajes de programación que provean a su vez al sistema de nuevas
funcionalidades extra que no estén construidas en su interior.
Todo esto se puede desglosar en cuatro estructuras básicas:
Ficheros de Configuración
Interfaz de Comandos (CLI)
Interfaz Pasarela (AGI)
Interfaz de Gestión (AMI)
Archivos de Configuración
Todos se encuentran en la ruta de instalación por defecto de Asterisk, que suele ser
en la mayor parte de los casos /etc/asterisk. Suele existir un fichero de configuración
que “soporte” la funcionalidad especifica que puede aportar al sistema un módulo
específico, y suelen acabar con el formato .conf, como podría ser el caso de
chan_dahdi.conf, que como veríamos antes, sería el fichero encargado de ofrecer
toda la configuración específica para el modulo encargado de gestionar el canal
dedicado a DAHDI.
Una parte de los ficheros de configuración es posible que sean editados de forma
dinámica a través de una Base de Datos. A esta funcionalidad se le ha llamado
Asterisk Realtime, y por ejemplo es muy popular para la configuración del fichero
especifico para el modulo dedicado al canal SIP (sip.conf). Pero la mayor parte del
resto de los ficheros, son editados de forma manual, aunque en los últimos años se
han popularizado unas interfaces gráficas de usuario para hacer esta tarea mas
intuitiva como FreePBX.
CLI
En términos generales, podría considerarse la consola de administración del
sistema. En un apartado específico dentro de esta Wiki, podremos encontrar más
información relativa a este interfaz ya que es fundamental saber utilizarlo para la
correcta gestión y mantenimiento del sistema de forma eficaz.
4. Asterisk
Asterisk es una centralita software (PBX) de código abierto. Como cualquier
centralita PBX permite interconectar teléfonos y conectar dichos teléfonos a la red
telefónica convencional (RTB – Red telefónica básica)- Su nombre viene del símbolo
asterisco (*) en inglés.
El creador original de esta centralita es Mark Spencer de la compañía Digium que
sigue siendo el principal desarrollador de las versiones estables. Pero al ser de
código libre, existen multitud de desarrolladores que han aportado funciones y
nuevas aplicaciones. Originalmente fue creada para sistemas Linux pero hoy en día
funciona también en sistemas OpenBSD, FreeBSD, Mac OS X, Solaris Sun y
Windows. Pero Linux sigue siendo la que mas soporte presenta.
El paquete básico de Asterisk incluye muchas características que antes sólo
estaban disponibles en caros sistemas propietarios como creación de extensiones,
envío de mensajes de voz a e-mail, llamadas en conferencia, menús de voz
interactivos y distribución automática de llamadas. Además se pueden crear nuevas
funcionalidades mediante el propio lenguaje de Asterisk o módulos escritos en C o
mediante scripts AGI escritos en Perl o en otros lenguajes.
Para poder utilizar teléfonos convencionales en un servidor Linux corriendo Asterisk
o para conectar a una línea de teléfono analógica se suele necesitar hardware
especial (no vale con un modem ordinario). Digium y otras compañías venden
tarjetas para este fin.
Pero quizás lo más interesante es que Asterisk soporta numerosos protocolos de
VoIP como SIP y H.323. Asterisk puede operar con muchos teléfonos SIP, actuando
como “registrar” o como “gateway” o entre teléfonos IP y la red telefónica
5. Instalación de Asterisk
Asterisk para linux
La página de referencia es http://www.asterisk.org/
Nos descargamos la versión 1.6.2.20 y lo descomprimimos
1) Instalar Asterisk
# tar -zxvf asterisk-1.6.2.20.tar.gz
# rm -f asterisk-1.6.2.20.tar.gz
# cd asterisk-1.6.2.20
2) ejecutar “make”
Suponiendo que todo ha ido correctamente
3) ejecutar “make install”
Si es la primera vez que instalas la centralita Asterisk es recomendable instalar los
ejemplos con el comando
4) “make samples”
Pero recuerda que este comando sobreescribirá todos los archivos de configuración
que ya tengas.
Finalmente puedes arrancar el Asterisk con el comando:
# asterisk -vvvc
Verás un montón de mensajes en la pantalla cuando Asterisk se inicializa. (las vvv
pertenecen al modo ” very very verbose” y la c a que nos mostrará al final una línea
de comandos en forma consola)
*CLI>
A partir de este momento ya está Asterisk instalado y funcionando. Se puede utilizar
el comando “help” para ayuda
También puedes utilizar el comando “man asterisk” en la línea de comandos de
linux para obtener detalles de como arrancar y parar el servidor Asterisk.
Vamos a crear lus buzones de voz de ambos usuarios y asignarles una contraseña
en el archivo voicemail.conf .Al buzón 20000 le vamos a dar la contraseña 1234 y
al buzón 20100 la contraseña 4321
[miprimerbuzon]
20000 => 1234,Pedro,pedro@midominio.com
20100 => 4321,Juan,juan@midominio.com
4. Reinicializamos el asterisk
5. Configuramos un softphone
Configuramos uno o dos softphones y probamos a llamar entre ambos usuarios o a
dejar mensajes en el contestador cuando no están disponibles. También podemos
llamar al número 30000 para escuchar nuestros mensajes.
Opciones avanzadas:
En las siguientes columnas tenemos las posibilidades de configuración para los
tipos “user” y “peer”. En el caso de “friend” valen las dos tablas ya que un “friend”
es a la vez ambos
Ejemplos:
[grandstream1]
type=friend ; es peer y user a la vez
context=micontexto ; nombre del contexto
username=grandstream1 ; suele ser el mismo que el titulo de la seccion
fromuser=grandstream1 ; sobreescribe el callerid
callerid=Jose Dos<1234>
host=192.168.0.23 ; se tiene una IP privada dentro de una LAN
nat=no ; no hay NAT
canreinvite=yes ;
dtmfmode=info ; puede ser RFC2833 o INFO
mailbox=1234@default ; mailbox 1234 en el contexto “default” del fichero
voicemail.conf
disallow=all ; deshabilitamos todo
allow=ulaw ; Permitimos el codec ulaw
; listed with allow= does NOT matter!
;allow=alaw
;allow=g723.1 ; Asterisk solo soporta g723.1 a través
;allow=g729 ; Licencia g729 sól a través
[xlite1]
;Se puede activar la supresión de silencio
;Xlite manda paquetes NAT keep-alive, por tanto qualify=yes no es necesario
type=friend
username=xlite1
callerid=”juan Perez ” <5678>
host=dynamic ; el softphone xlite puede estar en cualquier IP
nat=yes ; X-Lite está detrás de un dispositivo NAT
canreinvite=no ; Se suele poner NO si está detrás de un dispositivo que hace NAT
disallow=all
secret=blah
defaultip=192.168.0.4 ;
amaflags=default ; Las posibilidades son default, omit, billing o documentation
accountcode=pedro ; Para propósitos de tarificación
disallow=all
allow=ulaw
allow=alaw
allow=g729
allow=g723.1
Contexto [general]
El contexto [general] configura unas pocas opciones generales como son:
En general estas opciones no son muy importantes y se pueden dejar tal y como
aparecen por defecto.
Contexto [globals]
En este contexto se definen las variables globales que se van a poder utilizar en el
resto de los contextos. Por ejemplo
Resto de Contextos []
Esto es lo más importente de este fichero. Vamos a indicar ahora como crear un
contexto especifico y asignar un plan de numeración. Todas las lineas de un
determinado contexto tienen el mismo formato:
Si el usuario 3000 no está conectado salta a la prioridad +101 (en nuestro caso a
la 102=1+101 ya que estabamos en la prioridad 1) y hacemos que salte el
contestador para dejar un mensaje.
En este caso llamando al 600 nos va a repetir lo mismo que nosotros dijimos.
Podremos comprobar la latencia del sistema.
En este caso presentamos la extensión start s que es la que coge las llamadas
cuando se esta en ese contexto pero no se sabe la extensión. También se puede
entrar desde otra extensión como en este caso marcando la extensión 1000. Con
Goto podemos ir al contexto, extensión y prioridad que queramos.
En este caso lo que hacemos es que siempre que marquemos el 340 seguido de
cualquier numero (el 340 como perfijo) llamaremos a una extension SIP. Por
ejemplo en el primer caso si marcamos al 340600600 llamaremos al 600600 a la
dirección IP del “proveedorsip” definido en sip.conf. (EXTEN:3 significa que
quitamos los tres primeros numeros)
Contexto [general]
El contexto [general] configura las opciones generales del buzón de voz:
[general]
; Enviar archivos en las notificaciones de e-mail
attach=yes
; Usar el formato wav para los mensajes de voz
format=wav
; Limitar el tiempo máximo del mensaje de voz a 180 segundos
maxmessage=180
; Limitar el tiempo minimo del mensaje a 3 segundos
minmessage=3
; Anunciar el numero que llamó antes de repetir el mensaje
saycid=yes
; Limitar el numero de intentos de registro a 3
maxlogins=3
; Define los contextos internos para especificar que vienen de una extensión
interna
cidinternalcontexts=house_local,house_toll,house_admin
Contexto [zonemessages]
Este contexto define zonas horarias. La hora para distintos usuarios no es la
misma y para poder informarle sobre la hora en que recibió el mensaje es
necesario fijar diferentes zonas horarias:
Un ejemplo podría ser
[zonemessages]
madrid=Europe/Paris|’vm-received’ Q ‘digits/at’ R
paris=Europe/Paris|’vm-received’ Q ‘digits/at’ R
sthlm=Europe/Stockholm|’vm-recieved’ Q ‘digits/at’ R
europa=Europe/Berlin|’vm-received’ Q ‘digits/at’ kM
italia=Europe/Rome|’vm-received’ Q ‘digit/at’ HMP
El formato de las líneas es el siguiente:
zona=Pais/Ciudad|Opciones –> El Pais y la ciudad deben ser válidos y son los
del archivo /usr/share/zoneinfo de la instalación de Linux
Las diferentes Opciones son:
Option Description
‘fichero’ Nombre del fichero de audio a reproducir
${VAR} Variable de sustitución
A, a Día de la semana (sábado, domingo, etc…)
B,b,h Mes (Enero, Febrero, …)
d,e día del mes numérico (primero, segundo,…)
Y Año
I or i Hora, en formato 12 horas
H ,k Hora, en formato 24 horas
M Minutos
P,p AM o PM
Q “hoy”,”ayer”
R tiempo 24 horas , incluidos minutos
Resto de Contextos []
En el resto de contextos se definen los buzones de los usuarios. Podemos tener
todos los usuarios en un solo contexto por ejemplo [default] o tener más de un
contexto.
El formato básico es el siguiente:
[default]
extension => contraseña, nombre de usuario, email de usuario, email de
notificación, opciones
La extensión hace referencia al número de teléfono llamado.
La contraseña hacer referencia a la contraseña para ese usuario de su buzón
de voz.
El nombre de usuario es el nombre del cliente de la extensión
El email del usuario es el correo al que serán enviados los mensajes
El email de notificación es un email alternativo donde pueden ser enviadas las
notificaciones para administración o control
Las opciones sirven para sobreescribir las del contexto [general] o especificar
una zona horaria para el usuario. Hay 9 específicas: attach, serveremail, tz,
saycid, review, operator, callback, dialout and exitcontext. Son las mismas
que las contexto [general] salvo tz.La opción tz se usa para sobreescribir la
zona por defecto y debe estar presente en el contexto [zonemessages]
Ejemplos:
[default]
1234 => 3456,Ejemplo1,mail@dominio.com
4200 => 9855,Pedro
Perez,pedro@dominio.com,admin@dominio.com,attach=no|serveremail=info@do
minio.com|tz=madrid
4069
=>6522,juan,j@dominio.net,,attach=yes|saycid=yes|dialout=fromvm|callback=from
vm|review=yes|operator=yes|envelope=yes
4073 => 1099,javier Perez,perez@dominio.com,,delete=1