我应该使用哪种类型的命令来绘制这样的网络数据包格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+
|V=2|P|X| CC |M| PT | sequence number | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| timestamp | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| synchronization source (SSRC) identifier | |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ |
| contributing source (CSRC) identifiers | |
| .... | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| RTP extension (OPTIONAL) | |
+>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | payload ... | |
| | +-------------------------------+ |
| | | RTP padding | RTP pad count | |
+>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+
| ~ SRTP MKI (OPTIONAL) ~ |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| : authentication tag (RECOMMENDED) : |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
+- Encrypted Portion* Authenticated Portion ---+
我应该使用具有相对定位的矩阵、表格还是矩形节点?
类似的任务是绘制如下内容:
我设法使用以下代码做到了这一点,但我不确定这是否是最好的解决方案。
\begin{figure}[h]
\centering
\tikzstyle{rect}=[rectangle,minimum width=6cm,minimum height=1cm,draw=black,outer sep=0pt]
\tikzstyle{base rect}=[rect,minimum width=12cm,outer sep=0pt]
\tikzstyle{text rect}=[rectangle,minimum width=6cm,align=center,outer sep=0pt]
\tikzstyle{multipart rect}=[rectangle split,rectangle split horizontal,rectangle split parts = 2,inner xsep = 0.0mm,outer sep=0pt,
draw=black,align=center,minimum width=6cm,minimum height=1cm]
\begin{tikzpicture}
% ip
\node (IP) [base rect,fill=gray!20] {IP};
% media plane
\node (UDP) [rect,fill=blue!20,above left=0.0cm of IP.north] {UDP};
\node (ICE) [rect,fill=purple!20,above=0.0cm of UDP] {ICE, STUN, TURN} ;
\node (DTLS) [rect,fill=orange!20,above=0.0cm of ICE] {DTLS} ;
\node (SRTP) [multipart rect,rectangle split part fill={green!20,yellow!20},above=0.0cm of DTLS] {\nodepart[text width=3cm]{one} SRTP \nodepart[text width=3cm]{two} SCTP} ;
\node [text rect,above=0.0cm of SRTP]{Media Plane};
% signaling plane
\node (TCP) [rect,fill=blue!20,above right=0.0cm of IP.north]{TCP};
\node (TLS) [rect,fill=purple!20,above=0.0cm of TCP] {TLS};
\node (HTTP) [rect,fill=orange!20,above=0.0cm of TLS] {HTTP};
\node (WS) [rect,fill=green!20,above=0.0cm of HTTP] {WS/Other};
\node (SDP) [multipart rect,above=0.0cm of WS,rectangle split part fill={gray!20,yellow!20}] {\nodepart[text width=3cm]{one} SDP \nodepart[text width=3cm]{two} SIP/XMPP/\\Other};
\node [text rect,above=0.0cm of SDP]{Signaling Plane};
\end{tikzpicture}
\caption{WebRTC stack.}
\label{fig:webrtc-stack}
\end{figure}
答案1
带包的示例bytefield
:
\documentclass[border=2mm]{standalone}
\usepackage{xcolor}
\usepackage{bytefield}
\begin{document}
\begin{bytefield}[bitwidth=.2\linewidth, bitheight=7mm]{4}
\bitbox[]{2}{} & \bitbox[]{2}{Signaling plane}\\
\bitbox[]{2}[]{Media Plane} & \bitbox{1}[bgcolor=gray!30, bitheight=1cm]{SDP} & \bitbox{1}[bgcolor=yellow!30, bitheight=1cm]{SIP/XMPP/\\ Other}\\
\bitbox{1}[bgcolor=green!30]{SRTP} & \bitbox{1}[bgcolor=yellow!30]{SCTP} & \bitbox{2}[bgcolor=green!30]{WS/Other} \\
\bitboxes{2}[bgcolor=orange!30]{{DTLS} {HTTP}} \\
\bitboxes{2}[bgcolor=red!30]{{ICE, STUN, TURN} {TLS}} \\
\bitboxes{2}[bgcolor=blue!30]{{UDP} {TCP}} \\
\bitbox{4}[bgcolor=gray!30]{IP}\\
\end{bytefield}
\end{document}
编辑:可能\wordbox{1}[bgcolor=gray!30]{IP}
正式比更好\bitbox{4}[bgcolor=gray!30]{IP}
。