I am writing a document which defines a network protocol. I illustrate key message exchanges with diagrams like this:

The TikZ source for this diagram is:
\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}
\node (C0) at (0.2,7.7) {$C$} ;
\node [coordinate] (Cn) at (0.2,0) {} ;
\node (S0) at (4.8,7.7) {$S$} ;
\node [coordinate] (Sn) at (4.8,0) {} ;
\begin{scope}[shape=coordinate]
\draw (C0) -- (Cn)
node[pos=.10] (C1) {}
node[pos=.19] (C2) {}
node[pos=.32] (C3) {}
node[pos=.45] (C4) {}
node[pos=.58] (C5) {}
node[pos=.67] (C6) {}
node[pos=.80] (C7) {}
;
\draw (S0) -- (Sn)
node[pos=.10] (S1) {}
node[pos=.19] (S2) {}
node[pos=.32] (S3) {}
node[pos=.45] (S4) {}
node[pos=.58] (S5) {}
node[pos=.67] (S6) {}
node[pos=.80] (S7) {}
;
\end{scope}
\begin{scope}[above,->,>=angle 60] \footnotesize
\draw (C1) -- node {$C^\prime_\alpha[\alpha,99,l_r,,\cdots]$} (S1) ;
\draw (C2) -- node {$C^\prime_\alpha[\alpha,100,l_s,\text{\textsc{fin}},\cdots]$}
(S2) ;
\draw (S3) -- node{$S^\prime_\alpha[\alpha,60,l_t,,\cdots]$} (C3) ;
\draw (C4) -- node{$C^\prime_\alpha[\alpha,101,0,,]$} (S4) ;
\draw (S5) -- node{$S^\prime_\alpha[\alpha,61,l_u,,\cdots]$} (C5) ;
\draw (S6) -- node{$S^\prime_\alpha[\alpha,62,l_v,,\cdots]$} (C6) ;
\draw (C7) -- node{$C^\prime_\alpha[\alpha,102,0,,]$} (S7) ;
\end{scope}
\end{tikzpicture}
\end{document}
This feels a bit repetitive already, but worse than that, there are six of these diagrams and the source is almost the same for each, except for the labels on the arrows, how many there are, and which way they're going. (Two of the diagrams have arrows that are not just horizontal lines -- they turn and cross another arrow -- but it is okay if I have to do something special for those.)
Please suggest ways to reduce the repetitiveness both within the diagram and between successive diagrams. I could also very much use a way to position the arrow endpoints that was an absolute distance along the relevant line, rather than a relative distance; having coded all the diagrams like this, it turns out that they're all too tall, but I can't chop off the extra space at the bottom without changing all the [pos=X] annotations as well.

\documentclassand the appropriate packages so that those trying to help don't have to recreate it. – Peter Grill Nov 14 '11 at 20:27