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
} which will give the
\emph{ERR
} output for any input.
6 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
}