CS-522 (Modelling and Simulation)
Project Statechart Modelling of TCP protocol
Shah Asaduzzaman Zaki Hasnain Patel
CS-522 (Modelling and Simulation) Project Statechart Modelling of - - PowerPoint PPT Presentation
CS-522 (Modelling and Simulation) Project Statechart Modelling of TCP protocol Shah Asaduzzaman Zaki Hasnain Patel The total system Client Data Server Application Generator Application Data packet Data Buffer Data Channel (C-to-S) TCP
Shah Asaduzzaman Zaki Hasnain Patel
Data Generator App Controller Data Channel (C-to-S) Data Buffer TCP Driver (client) TCP Driver (server) Data Channel (S-to-C) Data packet Control packet Server Application Client Application
Client Application Server Application TCP Driver (Client) Channel (Client-to-Server) Channel (Server-to-Client) TCP Driver (Server) H* Paused Stopped Normal TCPSimulator
gStop/ gPause/ gResume/
Generating Closing ClientApp
Notify/ CmdSend(Data)
Generator Transmitter Stopped
after(IAT) [guard(count<MAX)]/ genBuffer.append() count++ after(IAT) [guard(count>=MAX)]/
Sending Waiting Connecting
after(ChkIntrval) [guard(Buffer empty)]/ after(ChkIntrval) [guard(Data in Buffer)]/ pop(Data) CmdConnect Notify/ CmdClose Notify/
Closed TCPDriver
CmdListen/
SynSent Listen SynRcvd Established
CmdClose/ Receive(SYN)/ Send(SYN+ACK) CmdClose/ CmdConnect/ Send(SYN) Receive(ACK)/ after(WaitTime)/ Notify(Close) CmdClose/ Send(FIN) Receive(FIN)/ Send(ACK) Receive(SYN+ACK)/ Send(ACK) Notify (Connected) Receive(ACK)/ Receive(RST)/
ActiveClose PassiveClose
Receive(SYN)/ Send(SYN+ACK) CmdSend/ Send(SYN)
CmdSend(Data)/
After(TimetoFeed(Data))/ Send(Data) Notify(DataSent) Receive(Data)/
CloseWait TCPDriver.PassiveClose LastAck
CmdClose/ Send(FIN)
LastAck2
CmdCloseListen/ Send(FIN)
Closed Listen
Receive(ACK)/ Receive(ACK)/
FinWait1 TCPDriver.ActiveClose Closing FinWait2 TimedWait
Receive(FIN)/ Send(ACK) Receive(ACK)/ Receive(ACK)/ Receive(FIN)/ Send(ACK) Receive(FIN+ACK)/ Send(ACK)
Closed
after(waittime)
Feeder Channel Transmitter
Send(Data)/ ChannelBuffer.append(Data)
Waiting Busy
after(ChkIntrval) [guard(Buffer empty)]/ after(ChkIntrval) [guard(Data in Buffer)]/ pop(Data) after(Delay)/ Receive(Target, Data)
Send(Data)/ ChannelBuffer.append(Data) Schedule(Channel.Receive)
SchedulerNotify(Channel.Receive)/ Receive(Target, Data)
Notify(FinReceived)/ CmdCloseListen after(StartupTime) / CmdListen after(TimetoFail)/ CmdClose