1 In order to be allow learnlib to learn the TCP model it was necessary to have a
2 deterministic model. We accomplished this by modifying the adapter so it can
3 reach a
\texttt{ERROR
} or
\texttt{CLOSED
} state. In these states all inputs are
4 discarded and a default output is returned. In the case of a state where an
5 input results in a non-deterministic output we jump to the
\texttt{ERROR
} state
6 for additional this given input. When the connection is successfully closed
7 using a
\texttt{FIN
} packet we move the adapter to the
\texttt{CLOSED
} state.
9 We divided the input alphabet into three sets, this way we can control the size
10 of the model learned by learnlib.
17 small &
\texttt{SYN
},
\texttt{ACK
} \\
18 partial &
\texttt{SYN
},
\texttt{ACK
},
\texttt{DATA
} \\
19 full &
\texttt{SYN
},
\texttt{ACK
},
\texttt{DATA
},
\texttt{RST
},
23 \caption{Different input alphabets used during learning.
}
26 Just as in our previous assignment the
\texttt{DATA
} packet is actually a
27 \texttt{ACK
} with an user data payload and the
\emph{push
} flag set. These
28 input alphabets will influence the size of the model produced.
\emph{small
}
29 will result in a
2 state model,
\emph{partial
} will be the full model without
30 the
\texttt{CLOSED
} state and
\emph{full
} should result in the full model as
31 used in the previous assignment.
35 % \includegraphics[scale=0.75]{model.small.LStar.rand.eps}
37 % \caption{Model learned with small input alphabet}
42 % \includegraphics[width=\textwidth]{model.partial.LStar.rand.eps}
44 % \caption{Model learned with partial input alphabet}
49 % \includegraphics[width=1.2\textwidth]{model.full.LStar.rand.eps}
51 % \caption{Model learned with full input alphabet}