I had some old code in my conputer. It's not exactly what you want, but I think it could be an starting point.
First the final result:

I also had to draw some link control protocol examples and decided to create some commands
to draw frames (from A to B in previos figure)
\newcommand{\tramaok}[2]{%
\draw[trama,->] #2 --++(1.5,-2) node[above right,near start] {#1};
}
lost frames
\newcommand{\tramaperduda}[2]{%
\path #2 coordinate (a)--++(1.5,-2) coordinate (b) coordinate[midway] (c);
\draw[trama,-] (a) --(c) node[below] {#1};
\draw[trama,->] (c) -- ++(30:.5);
}
and acknowledgments (from bottom to top)
\newcommand{\ackok}[2]{%
\draw[ack,->] {#2}--++(1.5,2) node[below right,near start] {#1};
}
\newcommand{\ackperdut}[2]{%
\path #2 coordinate (a)--++(1.5,2) coordinate (b) coordinate[midway] (c);
\draw[ack,-] (a) --(c) node[above] {#1};
\draw[ack,->] (c) -- ++(-30:.5);
}
All these commands have two parameters, some label, if necessary, and its starting point.
Slope and distance are fixed. With these commands was easy to draw previous figure:
\tramaok{Tr0}{(0,2)}
\tramaok{Tr0}{(2.5,2)}
\tramaperduda{Tr1}{(5,2)}
\tramaok{Tr0}{(7.5,2)}
\ackok{Ack}{(1.5,0)}
\ackok{Ack}{(4,0)}
\ackok{Ack}{(9,0)}
\timeout{(0,2)}{(2.5,2)}
The complete code is:
\documentclass[tikz,border=2mm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usetikzlibrary{calc,arrows,positioning}
\begin{document}
\tikzset{
host/.style={rectangle,rounded corners,
thick,draw=#1!60,fill=#1!15},
host/.default=blue,
trama/.style={thick,draw=#1!60,fill=#1!60},
trama/.default=purple,
ack/.style={trama=teal},
}
\newcommand{\tramaok}[2]{%
\draw[trama,->] #2 --++(1.5,-2) node[above right,near start] {#1};
}
\newcommand{\tramaperduda}[2]{%
\path #2 coordinate (a)--++(1.5,-2) coordinate (b) coordinate[midway] (c);
\draw[trama,-] (a) --(c) node[below] {#1};
\draw[trama,->] (c) -- ++(30:.5);
}
\newcommand{\ackok}[2]{%
\draw[ack,->] {#2}--++(1.5,2) node[below right,near start] {#1};
}
\newcommand{\ackperdut}[2]{%
\path #2 coordinate (a)--++(1.5,2) coordinate (b) coordinate[midway] (c);
\draw[ack,-] (a) --(c) node[above] {#1};
\draw[ack,->] (c) -- ++(-30:.5);
}
\newcommand{\timeout}[2]{%
\draw #1 --++(0,5mm);
\draw #2 --++(0,5mm);
\begin{scope}[yshift=2.5mm]
\draw[<->] #1 -- #2 node[above,midway]{\emph{Time-out}};
\end{scope}
}
\begin{tikzpicture}[>=stealth',
font=\small\sffamily]
% S&W amb etiquetes a trames
% Tout curt. Repetició trames.
% No detecta pèrdues de trames
\draw[help lines,->] (-0.2,0) node[host,left] {B}--(11.5,0);
\draw[help lines,->] (-0.2,2) node[host,left] {A}--(11.5,2);
\tramaok{Tr0}{(0,2)}
\tramaok{Tr0}{(2.5,2)}
\tramaperduda{Tr1}{(5,2)}
\tramaok{Tr0}{(7.5,2)}
\ackok{Ack}{(1.5,0)}
\ackok{Ack}{(4,0)}
\ackok{Ack}{(9,0)}
\timeout{(0,2)}{(2.5,2)}
\end{tikzpicture}
\end{document}