绘制网络协议

绘制网络协议

我想要生成网络协议,下面是一个非常简单的示例:

一个简单的协议

该协议有两方,每一方都进行一些计算,然后与另一方进行通信。

我可以使用 3 列表格,但我想知道是否有更好的解决方案。特别是,是否有任何特定的软件包可以实现这一点,或者在 TikZ 中是否有任何简单的方法可以做到这一点。

答案1

这是我的简单解决方案此处显示的方法

\documentclass[a4paper,11pt]{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix,shapes,arrows,positioning,chains, calc}
\begin{document}

\begin{tikzpicture}
\matrix (m)[matrix of nodes, column  sep=2cm,row  sep=8mm, nodes={draw=none, anchor=center,text depth=0pt} ]{
Prover & & Verifier\\[-4mm]
Choose a random number & & \\[-7mm]
$r \in \{0,1\}^{*}.$ & & \\
 & Send $r$ & \\
& & Choose a random number  \\[-7mm]
& &$s \in \{0,1\}^{*}.$\\
 & Send $s$ & \\
};

\draw[shorten <=-1.5cm,shorten >=-1.5cm] (m-1-1.south east)--(m-1-1.south west);
\draw[shorten <=-1.5cm,shorten >=-1.5cm] (m-1-3.south east)--(m-1-3.south west);
\draw[shorten <=-1cm,shorten >=-1cm,-latex] (m-4-2.south west)--(m-4-2.south east);
\draw[shorten <=-1cm,shorten >=-1cm,-latex] (m-7-2.south east)--(m-7-2.south west);
\end{tikzpicture}
\end{document}

编辑图形结果为:

在此处输入图片描述

答案2

你看过了吗MSC(消息序列图)包 在 CTAN 中?我从来没有用过,但我们的一些学生用过。

编辑你的示例可以用这样的代码来完成

\documentclass[border=2mm]{standalone}
\usepackage{msc}
\begin{document}
\begin{msc}{Example}
\declinst{prover}{}{Prover}
\declinst{verifier}{}{Verifier}
\action*{%
\begin{minipage}{3cm}\centering 
Choose a random number\\
$r\in\{0,1\}^*$
\end{minipage}%
}{prover}
\nextlevel[4]
\mess{Send $r$}{prover}{verifier}
\nextlevel
\action*{%
\begin{minipage}{3cm}\centering
Choose a random number\\
$r\in\{0,1\}^*$
\end{minipage}}{verifier}
\nextlevel[4]
\mess{Send $s$}{verifier}{prover}
\end{msc}
\end{document}

结果(使用 xelatex,因为 msc 使用 pstricks)是

在此处输入图片描述

外观不太灵活,因为 msc 图是通过国际电联(国际电信联盟)并且该包遵守该格式。

相关内容