digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__tcp_segment {
label="TcpSegment";
graph[style=dotted];
tcp_segment__seq [label=<
pos | size | type | id |
0 | 2 | u2be | src_port |
2 | 2 | u2be | dst_port |
4 | 4 | u4be | seq_num |
8 | 4 | u4be | ack_num |
12 | 4b | b4 | data_offset |
12:4 | 4b | b4 | reserved |
13 | 1 | Flags | flags |
14 | 2 | u2be | window_size |
16 | 2 | u2be | checksum |
18 | 2 | u2be | urgent_pointer |
20 | ((data_offset * 4) - 20) | | options |
... | ⇲ | | body |
>];
subgraph cluster__flags {
label="TcpSegment::Flags";
graph[style=dotted];
flags__seq [label=<
pos | size | type | id |
0 | 1b | BitsType1(BigBitEndian) | cwr |
0:1 | 1b | BitsType1(BigBitEndian) | ece |
0:2 | 1b | BitsType1(BigBitEndian) | urg |
0:3 | 1b | BitsType1(BigBitEndian) | ack |
0:4 | 1b | BitsType1(BigBitEndian) | psh |
0:5 | 1b | BitsType1(BigBitEndian) | rst |
0:6 | 1b | BitsType1(BigBitEndian) | syn |
0:7 | 1b | BitsType1(BigBitEndian) | fin |
>];
}
}
tcp_segment__seq:flags_type -> flags__seq [style=bold];
tcp_segment__seq:data_offset_type -> tcp_segment__seq:options_size [color="#404040"];
}