1 In order to be allow learnlib to learn the TCP model it was necessary to have a deterministic model.
2 We accomplished this by modifying the adapter so it can reach a
\emph{ERROR
} or
\emph{CLOSED
} state. In these states all inputs are discarded and a default output is returned.
3 In the case of a state where an input results in a non-deterministic output we jump to the
\emph{ERROR
} state for additional this given input. When the connection is successfully closed using a
\emph{FIN
} packet we move the adapter to the
\emph{CLOSED
} state.
5 We divided the input alphabet into three sets, this way we can control the size of the model learned by learnlib.
7 \begin{longtable
}{|c|l|
}
8 \caption{Different input alphabets used during learning.
} \\
\hline
9 Alphabet & Inputs \\
\hline \hline
10 small & SYN, ACK \\
\hline
11 partial & SYN, ACK, DATA \\
\hline
12 full & SYN, ACK, DATA, RST, FIN \\
\hline
15 Just as in our previous assignment the
\emph{DATA
} packet is actually a
\emph{ACK
} with an user data payload and the
\emph{push
} flag set.
16 These input alphabets will influence the size of the model produced.
\emph{small
} will result in a
2 state model,
\emph{partial
} will be the full model without the
\emph{CLOSED
} state and
\emph{full
} should result in the full model as used in the previous assignment.
18 \paragraph{Model learned with small input alphabet
}
19 \includegraphics{model.small.LStar.rand.eps
}
22 \paragraph{Model learned with partial input alphabet
}
23 \includegraphics{model.partial.LStar.rand.eps
}
25 \paragraph{Model learned with full input alphabet
}
26 \includegraphics{model.full.LStar.rand.eps
}