Transmission Control Protocol (TCP) simulation for sequential byte file communication between sender,
receiver and network channel socket interfaces
with an expected packet loss rate of N/((1-P)(1-P))
,
where N
is bit errors for each byte packet transmitted, and P
is the independent packet loss probability.
- Adam Ross
- Helen Yang
- Python3
input-file
is for transmitting and must exist, preferably with dataP
is the probability of packet loss and is required to be between0.0
and0.99
The following command will open terminals for simulating TCP file transmission on a local network:
python3 tcp_transmission.py <input-file (str)> <P (float)>
Alternatively, the following can be executed in any sequence using a separate terminal for each:
python3 channel.py <csIn (int)> <csOut (int)> <crIn (int)> <crOut (int)> <sIn (int)> <rIn (int)> <P (float)>
python3 receiver.py <rIn (int)> <rOut (int)> <crIn (int)> <output-file (str)>
python3 sender.py <sIn (int)> <sOut (int)> <csIn (int)> <input-file (str)>
- Each unique
<port (int)>
value must be a unique integer between1024
and64_000
crIn
andcsIn
must match betweenchannel.py
andreceiver.py
andsender.py
, respectively
The following is an example where "Hello World!"
is transmitted with N = 0.1
and P = 0.5
:
Waiting for connection...
Listening for a socket connection to receiver...
In port for receiver connected...
Out port for receiver connected...
Listening for a socket connection to sender...
In port for sender connected...
Out port for sender connected...
All sockets are connected
Transmission status report:
Data packet containing 12 chars transmitted from sender
A μ value of 0.4916 < 0.5, indicating #1 occurrence of the probability of a packet loss event
Data packet containing 12 chars transmitted from sender
A μ value of 0.128 < 0.5, indicating #2 occurrence of the probability of a packet loss event
Data packet containing 12 chars transmitted from sender
A μ value of 0.4164 < 0.5, indicating #3 occurrence of the probability of a packet loss event
Data packet containing 12 chars transmitted from sender
Data packet containing 12 chars transmitted to receiver
Acknowledgement packet containing 0 chars transmitted from receiver
A μ value of 0.0112 < 0.5, indicating #4 occurrence of the probability of a packet loss event
Data packet containing 12 chars transmitted from sender
Data packet containing 12 chars transmitted to receiver
Acknowledgement packet containing 0 chars transmitted from receiver
A μ value of 0.3601 < 0.5, indicating #5 occurrence of the probability of a packet loss event
Data packet containing 12 chars transmitted from sender
Data packet containing 12 chars transmitted to receiver
Acknowledgement packet containing 0 chars transmitted from receiver
A μ value of 0.2635 < 0.5, indicating #6 occurrence of the probability of a packet loss event
Data packet containing 12 chars transmitted from sender
A v value of 0.0239 < 0.1, indicating #1 occurrence of the probability of a bit error event
Data packet containing 19 chars transmitted to receiver
Acknowledgement packet containing 0 chars transmitted from receiver
A μ value of 0.2656 < 0.5, indicating #7 occurrence of the probability of a packet loss event
Data packet containing 12 chars transmitted from sender
Data packet containing 12 chars transmitted to receiver
Acknowledgement packet containing 0 chars transmitted from receiver
A μ value of 0.063 < 0.5, indicating #8 occurrence of the probability of a packet loss event
Data packet containing 12 chars transmitted from sender
Data packet containing 12 chars transmitted to receiver
Acknowledgement packet containing 0 chars transmitted from receiver
Acknowledgement packet containing 0 chars transmitted to sender
Data packet containing 0 chars transmitted from sender
A μ value of 0.3987 < 0.5, indicating #9 occurrence of the probability of a packet loss event
Data packet containing 0 chars transmitted from sender
A μ value of 0.0769 < 0.5, indicating #10 occurrence of the probability of a packet loss event
Data packet containing 0 chars transmitted from sender
A μ value of 0.4844 < 0.5, indicating #11 occurrence of the probability of a packet loss event
Data packet containing 0 chars transmitted from sender
Data packet containing 0 chars transmitted to receiver
Acknowledgement packet containing 0 chars transmitted from receiver
Acknowledgement packet containing 0 chars transmitted to sender
All TCP transmissions are complete
Successful transmission of 4 packets in 11.06 seconds:
- 20 transmissions sent
- 20 transmissions received
- 11 packets lost at a probability of 50.0%
- 1 bit errors at a probability of 10.0%
Connection #1 has successfully closed
Connection #2 has successfully closed
Socket #1 has successfully closed
Socket #2 has successfully closed
Socket #3 has successfully closed
Socket #4 has successfully closed
TCP socket program: Channel has completed transmitting.
Waiting for connection...
Out port for channel connected...
Listening for a socket connection to channel...
In port for channel connected...
All sockets are connected
Transmission status report:
Data packet #1 has successfully transmitted. 12 char data packet contents:
Hello World!
Data packet #2 has successfully transmitted. 0 char data packet contents:
<empty packet>
Successful transmission of 2 packets:
- 7 transmissions sent
- 7 transmissions received
received_input.txt has successfully closed
Connection #1 has successfully closed
Socket #1 has successfully closed
Socket #2 has successfully closed
TCP socket program: Receiver has completed transmitting.
Waiting for connection...
Out port for channel connected...
Listening for a socket connection to channel...
In port for channel connected...
All sockets are connected
Transmission status report:
Data packet #1 has successfully transmitted after 9 attempt(s). 12 char data packet contents:
Hello World!
Data packet #2 has successfully transmitted after 4 attempt(s). 0 char data packet contents:
<empty packet>
Successful transmission of 2 packets:
- 13 transmissions sent
- 2 transmissions received
input.txt has successfully closed
Connection #1 has successfully closed
Socket #1 has successfully closed
Socket #2 has successfully closed
TCP socket program: Sender has completed transmitting.