if anyone like me looking for a summery: The video discusses the challenges of reliable communication over an unreliable channel, exploring simple and increasingly realistic channel models. It goes on to explain the development of a reliable data transfer protocol, including the use of checksums and sequence numbers, and differentiates between unidirectional and bidirectional communication. The protocol's finite state machines and operations are also illustrated.
21:48 when receiver is in "wait for 1 from below" state and receives a packet from sender with sequence 0 it means... that the sender was looking for the ACK sequence 0 packet from receiver but it was corrupted in transmission. So the sender resends the sequence 0 packet and on receiving it uncorrupted receiver will resend the ACK sequence 0 packet so sender can move on to "wait for 0 from below"
I really appreciate breaking this down into FSMs and getting a better understanding of this process. However, I'm wondering how the receiver would know that the checksum is valid, and what would determine a non-corrupt checksum. I've used a checksum comparison in python before in the past but that relied on the sender receiving a packet back and then comparing that the sent and received packets have the same checksum. Using that logic, I'm wondering how we can determine that a packet is valid with a checksum if we don't know what to compare the checksum against. What would I be missing?
Granted I'm new to this topic but I'd think the checksum would be generated independently on the receiver side to compare against the checksum in the packet from sender. This could be done using a hash function similar to what is used with hash tables, applied on the data in the entire packet. With large enough prime numbers used in the hash function so the probability that an uncorrupted packet and corrupted packet will generate the same hash value/checksum will be very low. There is the possibility that the checksum in the packet from sender will be corrupted but that just causes a retransmit...
Question: at 13:40, for the sender fsm when the sender goes from 'wait for nak or ack' to 'wait for call from above' there is a event rat_rcv(rcvpkt),, does this mean the receiver sends a ACK/NAk messgae in the form of pkt ??
Yes, from the state "sender is waiting for ACK/NAK" from receiver, it only goes to "wait for call from above" when it receives an ACK from the receiver. If it receives a NAK, it will send a packet to the receiver and still be in in the "waiting for ACK/NAK" until it gets an ACK
In refer to important digital reliable data transfer, like digital money, value and important information (documents, ownership rights) exchange in the same setting, doesn't blockchain and PoW fit in here perfectly?