be resend when the Missing segments should be re-requested (by ACK-ing
the correct sequence number).
-A single request consists of a number of packets that sent a
-to the \emph{echo-server} and back. The TCP specification state that such a
+A single request consists of a number of packets that are sent
+to the \emph{echo-server} and back. The TCP specification states that such a
transaction requires the following messages.
-\begin{center}
+\begin{flushleft}
Script $-$ SYN $A$ $\rightarrow$ SUT \\
Script $\leftarrow$ SYN-ACK $(A+1)$ $B$ $-$ SUT \\
Script $-$ ACK $(A+1)$ $(B+1)$ $\rightarrow$ SUT \\
Script $-$ ACK-PUSH $(A+1)$ $(B+2)$ \emph{msg} $\rightarrow$ SUT \\
Script $\leftarrow$ ACK $(A+2+msg_{length})$ $(B+3)$ $-$ SUT \\
Script $\leftarrow$ ACK-PUSH $(A+2+msg_{length})$ $(B+3)$ \emph{msg} $-$ SUT
-\end{center}
+\end{flushleft}
+
+%
+% RS ook? FIN?
+%
+
+When the \emph{SUT} has received the ACK containing the message it's passed
+trough to the \emph{echo-server}. The \emph{echo-server} will proceed by ordering
+the \emph{SUT} to respond by sending the exact same message. When this happens
+the \emph{SUT} has to construct the last packet in the transaction listed above.
\bigskip
size of the payload of that segment.\\ \hline
\doTCC & An ACK\# of the sequence number of the last send segment + the
size of the payload of that segment.\\ \hline
+ \doTCC & An ACK\# of the sequence number of the swapped packet with the lowest sequence number. \\ \hline
\doTCC & The ACK\# for the SEQ\# of the first segments which is
corrupted is received for each consecutive segment send.\\
$\vdots$ & \\
- \setcounter{TCC}{14}
- \doTCC & The ACK\# for the SEQ\# of the first segments which is
- corrupted is received for each consecutive segment send.\\ \hline
- \doTCC & The segment is not attributed to the current connection
- and therefore no ACK\# is received. \\ \hline
- \doTCC & The ACK\# for the SEQ\# of the first segments which is
- corrupted is received for each consecutive segment send.\\ \hline
- \doTCC & The ACK\# for the SEQ\# of the first segments which is
- corrupted is received for each consecutive segment send.\\ \hline
- \doTCC & The segment is not attributed to the current connection
- and therefore no ACK\# is received. \\ \hline
+ \setcounter{TCC}{10}
\doTCC & The ACK\# for the SEQ\# of the first segments which is
corrupted is received for each consecutive segment send.\\ \hline
- \doTCC & The ACK\# for the SEQ\# of the first segments which is
- corrupted is received for each consecutive segment send.\\ \hline
- \doTCC & The ACK\# for the SEQ\# of the first segments which is
- corrupted is received for each consecutive segment send.\\ \hline
- \doTCC & The ACK\# for the SEQ\# of the first segments which is
- corrupted is received for each consecutive segment send.\\ \hline
+ \doTCC & An ACK\# of the sequence number of the last send segment + the
+ size of the payload of that segment.\\ \hline
+% \doTCC & The segment is not attributed to the current connection
+% and therefore no ACK\# is received. \\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+% \doTCC & The segment is not attributed to the current connection
+% and therefore no ACK\# is received. \\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
\end{tabular}
\caption{Expected results of test cases}
\label{tbl:testcases}
% verdieping Mercator
-%\begin{longtable}{|p{.2\linewidth}|p{.8\linewidth}|}
- %\hline
- %Nr & 1 \\\hline
- %Title & Single valid request with 1byte payload. \\\hline
- %Input & Generated packets. \\\hline
- %Expected output & Packets echoed back by Echo-Server. \\\hline
- %\multirow{2}{*}{Course of action}
- %& 1. Use the steps listed above in order to start the SUT. \\
- %& 2. Execute the script by running \texttt{\# code/client/tests/1.py} \\\hline
- %Valid trace & Verify that the script prints 'Success'. \\\hline
- %\hline
-%
- %Nr & 2 \\\hline
- %Title & Single valid request with 65495bytes payload. \\\hline
- %Input & Generated packets. \\\hline
- %Expected output & Packets echoed back by Echo-Server. \\\hline
- %\multirow{2}{*}{Course of action}
- %& 1. Use the steps listed above in order to start the SUT. \\
- %& 2. Execute the script by running \texttt{\# code/client/tests/2.py} \\\hline
- %Valid trace & Verify that the script prints 'Success'. \\\hline
- %\hline
-%
- %Nr & 3 \\\hline
- %Title & 5 valid requests with 1byte payload. \\\hline
- %Input & Generated packets. \\\hline
- %Expected output & Packets echoed back by Echo-Server, in the same order as the client sent them. \\\hline
- %\multirow{2}{*}{Course of action}
- %& 1. Use the steps listed above in order to start the SUT. \\
- %& 2. Execute the script by running \texttt{\# code/client/tests/3.py} \\\hline
- %Valid trace & Verify that the script prints 'Success'. \\\hline
- %\hline
-%
- %Nr & 4 \\\hline
- %Title & 5 valid requests with 65495bytes payload. \\\hline
- %Input & Generated packets with 65495bytes payload. \\\hline
- %Expected output & Packets echoed back by Echo-Server, in the same order as the client sent them. \\\hline
- %\multirow{2}{*}{Course of action}
- %& 1. Use the steps listed above in order to start the SUT. \\
- %& 2. Execute the script by running \texttt{\# code/client/tests/4.py} \\\hline
- %Valid trace & Verify that the script prints 'Success'. \\\hline
- %\hline
-%
- %Nr & 5 \\\hline
- %Title & 5 valid requests with 1byte payload sent out of order. \\\hline
- %Input & Generated packets with 1byte payload, two packets are swapped in position. \\\hline
- %Expected output & All requests sent up to and including
- %the swapped packet with the lowest sequence number, the remaining packets are dropped. \\\hline
- %\multirow{2}{*}{Course of action}
- %& 1. Use the steps listed above in order to start the SUT. \\
- %& 2. Execute the script by running \texttt{\# code/client/tests/5.py} \\\hline
- %Valid trace & Verify that the script prints 'Success'. \\\hline
- %\hline
-%
- %Nr & 6 \\\hline
- %Title & Request with corrupted source port. \\\hline
- %Input & Generated packets with 1byte payload, in these packets the source port number is increased by one. \\\hline
- %Expected output & - \\\hline
- %\multirow{2}{*}{Course of action}
- %& 1. Use the steps listed above in order to start the SUT. \\
- %& 2. Execute the script by running \texttt{\# code/client/tests/6.py} \\\hline
- %Valid trace & Verify that the script prints 'Success'. \\\hline
- %\hline
-%
-%
- %Nr & 6 \\\hline
- %Title & Request with corrupted destination port. \\\hline
- %Input & Generated packets with 1byte payload, in these packets the destination port number is increased by one. \\\hline
- %Expected output & - \\\hline
- %\multirow{2}{*}{Course of action}
- %& 1. Use the steps listed above in order to start the SUT. \\
- %& 2. Execute the script by running \texttt{\# code/client/tests/6.py} \\\hline
- %Valid trace & Verify that the script prints 'Success'. \\\hline
- %\hline
-%
-%\end{longtable}
+\begin{longtable}{|p{.2\linewidth}|p{.8\linewidth}|}
+ \hline
+ Nr & 1 \\\hline
+ Title & Single valid request with 1byte payload. \\\hline
+ Input & Generated packets. \\\hline
+ Expected output & Packets echoed back by Echo-Server. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/1.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 2 \\\hline
+ Title & Single valid request with 65495bytes payload. \\\hline
+ Input & Generated packets. \\\hline
+ Expected output & Packets echoed back by Echo-Server. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/2.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 3 \\\hline
+ Title & 5 valid requests with 1byte payload. \\\hline
+ Input & Generated packets. \\\hline
+ Expected output & Packets echoed back by Echo-Server, in the same order as the client sent them. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/3.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 4 \\\hline
+ Title & 5 valid requests with 65495bytes payload. \\\hline
+ Input & Generated packets with 65495bytes payload. \\\hline
+ Expected output & Packets echoed back by Echo-Server, in the same order as the client sent them. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/4.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 5 \\\hline
+ Title & 5 valid requests with 1byte payload sent out of order. \\\hline
+ Input & Generated packets with 1byte payload, two packets are swapped in position. \\\hline
+ Expected output & All requests sent up to and including
+ the swapped packet with the lowest sequence number, the remaining packets are ropped. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/5.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 6 \\\hline
+ Title & Request with corrupted source port. \\\hline
+ Input & Generated packets with 1byte payload, in these packets the source port Number is increased by one. \\\hline
+ Expected output & The Echo server will receive the packet but is not able to respond with a ACK, this will result in a connection time out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/6.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+
+ Nr & 7 \\\hline
+ Title & Request with corrupted destination port. \\\hline
+ Input & Generated packets with 1byte payload, in these packets the destination port number is increased by one. \\\hline
+ Expected output & The packets will never reach the Echo-server resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/7.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 8 \\\hline
+ Title & Request with corrupted source address. \\\hline
+ Input & Generated packets with 1byte payload, in these packets the source address is replaced with 255.255.255.255. \\\hline
+ Expected output & The Echo-server will receive packet and is unable to respond with a ACK resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/8.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 9 \\\hline
+ Title & Request with corrupted destination address. \\\hline
+ Input & Generated packets with 1byte payload, in these packets the destination address is replaced with 255.255.255.255. \\\hline
+ Expected output & The packets will never reach the Echo-server resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/9.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 10 \\\hline
+ Title & Request with corrupted payload detectable by checksum. \\\hline
+ Input & Generated packets with 1byte payload, in these packets one byte is increased by 1 after the checksum has been calculated. \\\hline
+ Expected output & The \emph{SUT} will drop packets before sending them resulting in a runtime error of the test script. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/10.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 11 \\\hline
+ Title & Request with corrupted payload undetectable by checksum. \\\hline
+ Input & Generated packets with 1byte payload, in these packets one 16bit word is increased by 1 and an other 16bit word is decreased by 1, after the checksum has been calculated. \\\hline
+ Expected output & Echo-server receives the corrupted segment. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/11.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+
+\end{longtable}
%\begin{tabularx}{\linewidth}{| l | X|}
%\hline