digraph Connection { "Closed" -> "Listen" [label = "Listen?"] "Listen" -> "Syn Received'" [label = "SYN?"] "Syn Received'" -> "Syn Received" [label = "SYN+ACK!"] "Syn Received" -> "Established" [label = "ACK?"] "Syn Received" -> "Listen" [label = "RST?"] "Syn Received'" -> "Listen" [label = "RST?"] } digraph Close { "Established" -> "Close Wait'" [label = "FIN?"] "Close Wait'" -> "Close Wait" [label = "ACK!"] "Close Wait" -> "Last Ack'" [label = "close?"] "Last Ack'" -> "Last Ack" [label = "FIN!"] "Last Ack" -> "Closed" [label = "ACK?"] } digraph TestSetupDown { "G∀ST" -> "Python Adapter" [label = "TCP"] "Python Adapter" -> "SUT" [label = "TCP"] "SUT" -> "EchoServer'" } digraph TestSetupUp { /*todo, invert */ "Python Adapter" -> "G∀ST" [label = "TCP"] "SUT" -> "Python Adapter" [label = "TCP"] "EchoServer" -> "SUT" } /*DISCLAIMER: ik ben dat verloop van sequencenummers even kwijt... vandaar steeds nieuwe letters *maar in uiteindelijek fisguur is het wel mooi om het steeds over n+x te hebben. *Daarnaast als er meer shit is die je bijhoudt behalve seqnummer en wat al in de states gecodeerd *is past dat ook mooi in dit figuur */ digraph PythonDriverConnection { "q0" -> "q1" [label = "SYN?"] /* SYN? wordt dus gestuurd door GAST*/ "q1" -> "q2" [label = "SYN SEQ=n!"] /*stuur een SYN met seqnummer = n naar de SUT*/ "q2" -> "q3" [label = "SYN+ACK SEQ=m?"] /*krijg en SYN+ACK met seqnummer = m terug van SUT*/ "q3" -> "q4" [label = "SYN+ACK!"] /*stuur versimpelde SYN+ACK! aan GAST*/ "q4" -> "q5" [label = "ACK?"] /*krijg simpele ACK van GAST*/ "q5" -> "q6" [label = "ACK SEQ=o!"] /*stuur ACK! met seqnummer naar SUT*/ } digraph PythonDriverClose { "q0" -> "q1" [label = "FIN?"] /* FIN? wordt dus gestuurd door GAST*/ "q1" -> "q2" [label = "FIN SEQ=n!"] /*stuur een FIN met seqnummer = n naar de SUT*/ "q2" -> "q3" [label = "ACK SEQ=m?"] /*krijg en ACK met seqnummer = m terug van SUT*/ "q3" -> "q4" [label = "ACK!"] /*stuur ACK! aan GAST*/ "q4" -> "q5" [label = "FIN SEQ=o?"] /*krijg FIN van SUT*/ "q5" -> "q6" [label = "FIN!"] /*stuur FIN! met naar GAST*/ "q6" -> "q7" [label = "ACK?"] /*krijg simpele ACK van GAST*/ "q7" -> "q8" [label = "ACK SEQ=p!"] /*stuur ACK met seqnummer aan SUT*/ }