\documentclass[preview]{standalone} \usepackage{blindtext} \usepackage[utf8]{inputenc} \usepackage{tikz} \usetikzlibrary{arrows,decorations.pathmorphing,backgrounds,fit,positioning,shapes.symbols,chains,shapes.geometric,shapes.arrows,calc} \usepackage{fontspec} \setsansfont{Verdana} \begin{document} \begin{tikzpicture}[scale=0.47] \sffamily \foreach \x in {0,...,31} \node at (\x+0.5,20.5) {\scriptsize \x}; \foreach \x in {0,...,31} \node at (\x+0.5,13.5) {\scriptsize \x}; \foreach \x in {0,...,32} \draw[thick] (\x,13) -- (\x,21); \node[thick] (bit1) at (-0.5,20.5) {\scriptsize bit}; \node[thick] (bit2) at (-0.5,13.5) {\scriptsize bit}; \draw [<->, thick] (-0.5, 19.9) -- (-0.5,15.1); \draw [thick] (-1, 20) -- (-0.1,20); \draw [thick] (-1, 15) -- (-0.1,15); \node[fill=white] at (-1.1,17.5) {\tiny 20 bytes}; \filldraw[thick,draw=black, fill=white] (0,20) rectangle (4,19); \node (mode) at (2,19.5) {\scriptsize version}; \filldraw[thick,draw=black, fill=white] (4,20) rectangle (8,19); \node (mode) at (6,19.68) {\tiny header length};\node (mode) at (6,19.25) {\tiny with options}; \draw[thick, draw=black, fill=white] (8,20) rectangle (16,19); \node (stratum) at (11.5,19.5) {\scriptsize type of service (TOS)}; \draw[thick, draw=black, fill=white] (16,20) rectangle (32,19); \node (li) at (24,19.5) {\scriptsize full length of packet}; \filldraw[thick,draw=black, fill=white] (0,19) rectangle (16,18); \node (mode) at (8,18.5) {\scriptsize identification}; \draw[thick, draw=black] (16,19) rectangle (19,18); \filldraw[white] (16.5,18.43) rectangle (19,18.88); \node [](li) at (17.5,18.67) {\tiny IP flags}; \node at (16.5,18.25) {\tiny x};\node at (17.5,18.25) {\tiny D};\node at (18.5,18.25) {\tiny M}; \draw[thick, draw=black, fill=white] (19,19) rectangle (32,18); \node (li) at (24,18.5) {\scriptsize fragment Offset}; \filldraw[thick,draw=black, fill=white] (0,18) rectangle (8,17); \node (mode) at (4,17.5) {\scriptsize time to live (TTL)}; \draw[thick, draw=black, fill=white] (8,18) rectangle (16,17); \node (stratum) at (11.5,17.5) {\scriptsize protocol}; \draw[thick, draw=black, fill=white] (16,18) rectangle (32,17); \node (li) at (24,17.5) {\scriptsize header checksum}; \filldraw[thick,draw=black, fill=white] (0,17) rectangle (32,16); \node (mode) at (16,16.5) {\scriptsize source IP address}; \filldraw[thick,draw=black, fill=white] (0,16) rectangle (32,15); \node (mode) at (16,15.5) {\scriptsize destination IP address}; \draw[thick,draw=black, fill=white] (0,15) rectangle (31.5,14); \draw[fill=white, draw=white] (31.4,14.96) rectangle (31.6,14.05); \draw[thick] (31.5,14.97) decorate [decoration=saw] { -- (31.5,14.02)}; \node (mode) at (16,14.5) {\scriptsize IP options (variable length)}; \end{tikzpicture} \end{document}