aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Marín Noguera <juan.marinn@um.es>2020-03-06 11:48:39 +0100
committerJuan Marín Noguera <juan.marinn@um.es>2020-03-06 11:48:39 +0100
commitd88240e64c5af1054e514f7e7f77000fc30a0a20 (patch)
treeba60b63d7806fae3b91ed4906648f4a62fc2e7d1
parent18f53908167a6709b95e37ccec15f2fce06de035 (diff)
dns
-rw-r--r--defs.tex86
-rw-r--r--st/n.lyx17
-rw-r--r--st/n4.lyx616
3 files changed, 715 insertions, 4 deletions
diff --git a/defs.tex b/defs.tex
index 4ae3891..f5dd9f0 100644
--- a/defs.tex
+++ b/defs.tex
@@ -1,8 +1,86 @@
-% Exercises (old format)
+% Documentation:
+% \exerc{n} -- Begin exercise number "n".
+% \rexerc{n} -- Begin recommended exercise number "n".
+% \answer -- Answer to the exercise (currently just disable indentation).
+% Usually this would be like: \(r)exerc{(n)} (question) \par\answer (answer).
+%
+% \soffsets -- Place before a table to avoid horizontal margins on cells.
+% \eoffsets -- Place after.
+% \offset{a}{b} -- An offset indication.
+% Usually, there's one row for the offset indication, with 3% of page width per
+% bit. Then 32 bits per row. This is usually used for illustrating a binary
+% format.
+%
+% \mixbox{...} -- A box for MIX 5-byte (plus sign) registers.
+% \mixsmbox{...} -- A box for MIX 2-byte (plus sign) registers.
+% \byte{n} -- Byte with contents "n".
+% \twobytes{n} -- Two bytes.
+% \threebytes{n} -- Three bytes.
+% \fourbytes{n} -- Four bytes.
+% \fivebytes{n} -- Five bytes.
+% \sixbytes{n} -- Six bytes.
+% The last six commands should only be used inside \mixbox or \mixsmbox. These
+% two commands should have the appropiate number of bytes including sign (six or
+% three, respectively).
+% Note: For tables, don't use \mixbox or \mixsmbox. Instead, put the table
+% between \soffsets and \eoffsets, add ~ when some separation is needed and
+% make sure the cells containing the bytes (one cell per box) has borders.
\font\manual=manfnt
-\def\ejercicio#1#2{\medbreak\noindent\llap{\manual\char'170\rm\kern.15em}{\bf\small EJERCICIO #1}\\#2\par\nobreak\noindent}
-\def\exercise{\ejercicio}
-\def\cuestion#1#2{\vspace{.35in}\medbreak\noindent\llap{\manual\char'170\rm\kern.15em}{\bf\small CUESTI\'ON #1}\\#2\par\nobreak\noindent}
+\outer\def\exerc#1{\medbreak\paragraph{ #1.}}
+\outer\def\rexerc#1{\medbreak\paragraph{\noindent\llap{\manual\char'170\rm\kern.15em} #1.}}
+\outer\def\answer{\par\vskip3pt\nobreak\noindent}
+
+% Deprecated
+%\outer\def\exercise#1{\medbreak\noindent\llap{\manual\char'170\rm\kern.15em}{\bf\small EJERCICIO #1}\par\nobreak\noindent}
+%\def\onpart#1#2{\setcounter{part}{#1}\part{#2}}
+%\def\onchapter#1#2{\setcounter{chapter}{#1}\chapter{#2}}
+%\def\onsection#1#2{\setcounter{section}{#1}\section{#2}}
+%\def\onsubsection#1#2{\setcounter{subsection}{#1}\section{#2}}
+
+%% MACROS FOR MIX BOXES (mostly from taocpmac.tex)
+\def\ticky#1{\leavevmode\hbox{\chardef\_=`\_\tt#1}}
+\def\Hedge#1{\vbox{\dimen0=#1 em \advance\dimen0 .4 pt \hrule width \dimen0}} \def\Hed#1{\vbox{\dimen0=1.4em\relax \dimen0=#1\dimen0\relax \advance\dimen0 .4pt\relax \hrule width \dimen0}}
+\def\hedge{\Hedge{8.4}}
+\def\smhedge{\Hedge{4.2}}
+
+\def\vedge{\vrule height 1.05em depth .55em} % 16pt
+\def\tick{\vrule height 0.2em}
+\def\Byte#1#2{\hbox to #1em{\hfill\ticky{#2}\hfill\hskip.4 pt }\hskip-.4pt \vrule}
+\def\byte{\Byte{1.4}}
+
+\newcount\nbytes
+\newdimen\byteswidth
+\newdimen\clearance
+\clearance=4.175pt
+\def\cb{\hskip-\clearance plus 1 fill } %center bytes
+% #1=number of bytes, #2=total width, #3=height to tick, #4=depth to tick,
+% #5=contents
+\def\multibytes#1#2#3#4#5{\nbytes=1 \byteswidth=#2em
+ \hbox to \byteswidth{\hfill{\tt#5}\hskip\clearance \hskip.4pt}\hskip-\byteswidth
+ \divide\byteswidth #1
+ \loop\ifnum\nbytes<#1 \advance\nbytes by1
+ \hskip\byteswidth
+ \hskip-.4pt\vrule height -#4 em \hskip -.4pt \vrule depth -#3 em \repeat
+ \hskip\byteswidth \hskip-.4pt \vrule}
+
+\def\twobytes{\multibytes2{2.8}{.85}{.35}}
+\def\threebytes{\multibytes3{4.2}{.85}{.35}}
+\def\fourbytes{\multibytes4{5.6}{.85}{.35}}
+\def\fivebytes{\multibytes5{7.0}{.85}{.35}}
+\def\sixbytes{\multibytes6{9.0}{.95}{.45}}
+
+\def\opensign#1{\lower 5.5pt\vbox to 16pt{\hbox to 14pt{\hfil\tick}\vfill
+\hbox to 14pt{\hfil\ticky{#1}\hfil}\vfill\hbox to 14pt{\hfil\tick}}}
+\def\textindentindent#1{\noindent\hbox to 40pt{\hss#1\ }\!}
+
+\def\punct#1{\ifinner \,#1 \else\rlap{\enspace#1}\fi} % punctuation after box
+
+\def\mixbox#1{\,\hbox{\lower 5.5pt\vbox{\hedge\vskip-1.2pt\hbox{\vedge#1}\vskip-5.5pt\hedge}}\,}
+\def\mixsmbox#1{\,\hbox{\lower 5.5pt\vbox{\smhedge\vskip-1.2pt\hbox{\vedge#1}\vskip-5.5pt\smhedge}}\,}
+
+\def\soffsets{\begin{center}\setlength\tabcolsep{0pt}}
+\def\offset#1#2{\small\ #1\hfill{}#2\ }
+\def\eoffsets{\end{center}}
% Notices
\def\sremember#1{\begin{center}\begin{tabular}{|p{0.9\textwidth}|}\multicolumn{1}{p{0.9\textwidth}}{{\kern-.3em\small {[}#1{]}}}\tabularnewline\hline\kern-1ex}
diff --git a/st/n.lyx b/st/n.lyx
index 48e4ef2..7f0907f 100644
--- a/st/n.lyx
+++ b/st/n.lyx
@@ -5,6 +5,9 @@
\save_transient_properties true
\origin unavailable
\textclass book
+\begin_preamble
+\input{../defs}
+\end_preamble
\use_default_options true
\maintain_unincluded_children false
\language spanish
@@ -191,5 +194,19 @@ filename "n3.lyx"
\end_layout
+\begin_layout Chapter
+DNS
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n4.lyx"
+
+\end_inset
+
+
+\end_layout
+
\end_body
\end_document
diff --git a/st/n4.lyx b/st/n4.lyx
new file mode 100644
index 0000000..87fa4b4
--- /dev/null
+++ b/st/n4.lyx
@@ -0,0 +1,616 @@
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass book
+\use_default_options true
+\maintain_unincluded_children false
+\language spanish
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\use_minted 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style french
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+
+\series bold
+\emph on
+Domain Name System
+\series default
+\emph default
+ es una base de datos distribuida en una jerarquía de servidores de nombres
+ (
+\series bold
+\emph on
+name servers
+\series default
+\emph default
+) para traducir entre nombres de dominio y direcciones IP, que permite la
+ creación de alias o nombres de dominio alternativos y la distribución de
+ carga dando al mismo nombre varias direcciones IP, de las que se elige
+ una u otra en orden circular.
+ Las entradas o
+\series bold
+\emph on
+resource records
+\series default
+\emph default
+ (
+\series bold
+RR
+\series default
+) tienen forma (nombre, valor, tipo, TTL), donde TTL son los segundos hasta
+ que expire la entrada y algunos tipos son:
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+A
+\family default
+ El nombre es el de un dominio y el valor es la IPv4.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+CNAME
+\family default
+ El nombre es un alias para el valor, ambos nombres de dominio.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+NS
+\family default
+ El nombres es el de un dominio y el valor es la IP del servidor DNS responsable.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+MX
+\family default
+ El valor es el servidor de correo asociado con el nombre, ambos nombres
+ de dominio.
+\end_layout
+
+\begin_layout Standard
+Los nombres de dominio tienen forma jerárquica, ...
+\family typewriter
+.
+\emph on
+nivel2
+\emph default
+.
+\emph on
+nivel1
+\emph default
+.
+\family default
+, y un servidor DNS responsable de un dominio se encarga de la dirección
+ de sus
+\series bold
+subdominios
+\series default
+, dominios que tienen al dominio principal como sufijo, precedido de un
+ punto, con un nivel mayor.
+ Tipos de servidores DNS:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+\emph on
+Root name servers
+\series default
+\emph default
+: 13 direcciones IP en el mundo que mantienen el nivel de jerarquía más
+ alto (nivel 1).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+\emph on
+Top-level domain
+\series default
+\emph default
+ (
+\series bold
+TLD
+\series default
+): Responsables de los dominios de primer nivel:
+\family typewriter
+com
+\family default
+,
+\family typewriter
+org
+\family default
+,
+\family typewriter
+net
+\family default
+,
+\family typewriter
+edu
+\family default
+,
+\family typewriter
+aero
+\family default
+,
+\family typewriter
+jobs
+\family default
+,
+\family typewriter
+museums
+\family default
+, etc., incluyendo los de los países, como
+\family typewriter
+uk
+\family default
+,
+\family typewriter
+fr
+\family default
+,
+\family typewriter
+ca
+\family default
+,
+\family typewriter
+jp
+\family default
+, etc.
+ Network Solutions mantiene servidores para el TLD
+\family typewriter
+com
+\family default
+ y Educause para el TLD
+\family typewriter
+edu
+\family default
+.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+\emph on
+Authoritative
+\series default
+\emph default
+: Servidor DNS de una organización, con información de mapeo entre nombre
+ e IP para los hosts de la organización.
+ Los mantiene la organización o un proveedor de servicio.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Servidores locales
+\series default
+: No son necesariamente responsables de ningún dominio, sino que son servidores
+ más cercanos al usuario a los que este consulta y que actúan como
+\emph on
+proxy
+\emph default
+, pudiendo responder desde una caché o reenviar la consulta a otro servidor
+ local o a la jerarquía.
+ Llamamos
+\series bold
+\emph on
+default name server
+\series default
+\emph default
+ al servidor local al que pregunta un cierto usuario.
+\end_layout
+
+\begin_layout Standard
+Una consulta es
+\series bold
+iterativa
+\series default
+ si, cuando el servidor contactado no conoce un mapeo, responde con el nombre
+ del servidor al que contactar para obtenerlo, y es
+\series bold
+recursiva
+\series default
+ si es este el que contacta.
+ La recursiva mejora la caché del servidor intermedio, pero sobrecarga los
+ niveles altos de la jerarquía.
+\end_layout
+
+\begin_layout Standard
+Cuando un servidor de nombre aprende un mapeo, lo guarda en una caché (
+\series bold
+\emph on
+caching
+\series default
+\emph default
+) hasta que expira el TTL.
+ Los TLD se cachean en servidores locales, por lo que los servidores raíz
+ no se consultan frecuentemente.
+ El RFC 2136 propone mecanismos de actualización y modificación.
+\end_layout
+
+\begin_layout Standard
+Los mensajes se envían sobre UDP con el siguiente formato:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+soffsets
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Tabular
+<lyxtabular version="3" rows="8" columns="2">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top" width="48col%">
+<column alignment="center" valignment="top" width="48col%">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+offset0{15}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+offset{16}{31}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+ID
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Opciones
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Número de preguntas
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Número de respuestas
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Número de respuestas autoritativas
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Número de respuestas adicionales
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multicolumn="1" alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Preguntas
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multicolumn="1" alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+RRs de respuestas
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multicolumn="1" alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+RRs con los servidores autoritativos
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multicolumn="1" alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+RRs con información adicional
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+eoffsets
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+El ID es el mismo en la petición que en la respuesta.
+ Las opciones indican si se trata de una petición (
+\emph on
+query
+\emph default
+) o respuesta (
+\emph on
+reply
+\emph default
+), si se desea recursividad, si esta está disponible, etc.
+\end_layout
+
+\begin_layout Standard
+Para registrar un nombre en un dominio, a través de un
+\series bold
+\emph on
+DNS registrar
+\series default
+\emph default
+, se guardan en este un registro NS con el nombre de dominio
+\emph on
+authoritative
+\emph default
+ y un registro A para dicho servidor, y en el servidor
+\emph on
+authoritative
+\emph default
+ se incluyen los registros A para el dominio y subdominios, MX, etc.
+\end_layout
+
+\begin_layout Standard
+Para un dominio un servidor DNS puede ser
+\series bold
+primario
+\series default
+ o
+\series bold
+maestro
+\series default
+ si almacena la información sobre la zona o
+\series bold
+secundario
+\series default
+ o
+\series bold
+esclavo
+\series default
+ si obtiene información de esta copiándola del primario.
+\end_layout
+
+\begin_layout Standard
+DNS podría ser vulnerable a ataques de solicitud de servicio distribuidos
+ (DDoS).
+ Esto no se ha conseguido para los servidores raíz, pues estos implementan
+ filtrado de tráfico y, además, los servidores locales rara vez contactan
+ con estos porque tienen las IPs de los TLDs en caché; sin embargo, esto
+ es potencialmente más peligroso si el objetivo son los TLDs.
+ DNS se puede explotar para DDoS enviando solicitudes con una dirección
+ IP fuente que se pretende atacar, aunque se requiere algún mecanismo de
+ amplificación de las respuestas.
+ También es vulnerable a ataques
+\emph on
+man-in-the-middle
+\emph default
+ (MITM); en concreto, el
+\series bold
+\emph on
+DNS poisoning
+\series default
+\emph default
+ consiste en enviar respuestas DNS con información falsa a los servidores
+ locales para que la cacheen.
+\end_layout
+
+\end_body
+\end_document