Can Reliable Data Transfer Be Guaranteed in Communication Networks?

  • Thread starter Thread starter Bipolarity
  • Start date Start date
  • Tags Tags
    Data
Click For Summary

Discussion Overview

The discussion revolves around the reliability of data transfer in communication networks, specifically focusing on transport-layer protocols. Participants explore scenarios involving packet corruption, acknowledgment processes, and the implications of sequence number integrity during transmission.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant questions whether it is possible for a sequence number to be corrupted during transmission and how protocols would handle such a situation.
  • Another participant suggests that protocols typically include a CRC to minimize the likelihood of corrupted packets being misinterpreted, indicating that a sender would retry sending a packet until a positive acknowledgment is received.
  • A different viewpoint mentions that receivers do not send negative acknowledgments (NACKs) for corrupted packets, but rather for logical errors in packets that have valid CRCs.
  • Some participants propose various strategies to enhance reliability, such as using hard interrupt lines, error-correcting codes (ECCs), and tracking sequence number order to flag errors.
  • Another participant states that in modern networking, transport layer protocols do not receive corrupted packets, as they are discarded at the data link layer, and only perfect packets are acknowledged.

Areas of Agreement / Disagreement

Participants express differing views on how protocols manage packet corruption and acknowledgment processes. There is no consensus on the best approach to ensure reliable data transfer, and multiple competing perspectives are presented.

Contextual Notes

Some limitations are noted regarding the assumptions made about the environment and robustness of systems, as well as the specific behaviors of different transport-layer protocols in handling corrupted packets and acknowledgments.

Bipolarity
Messages
773
Reaction score
2
Not sure if this is the right forum, but I'l give it a shot. This question regards reliable data transfer in the context of transport-layer protocols in communication networks.
Let's say a sender sends a packet of information over a channel. The packet is corrupted, and the receiver replies with a negative acknowledgment (telling the sender that the packet wasn't properly transmitted).

However, the acknowledgment is corrupted during transmission, so the sender doesn't realize that the packet he originally sent wasn't properly transmitted. He therefore proceeds to send the next packet, with a different sequence number.

However, suppose the sequence number is corrupted during transmission. Then the receiver has no way of knowing whether the packet received is retransmission of the original packet, or transmission of the next packet.
This raises an issue and I am rather confused on how protocols would deal with this. Is it even possible for the sequence number to be corrupted during transmission?

Thanks!

BiP
 
Engineering news on Phys.org
Bipolarity said:
Not sure if this is the right forum, but I'l give it a shot. This question regards reliable data transfer in the context of transport-layer protocols in communication networks.
Let's say a sender sends a packet of information over a channel. The packet is corrupted, and the receiver replies with a negative acknowledgment (telling the sender that the packet wasn't properly transmitted).

However, the acknowledgment is corrupted during transmission, so the sender doesn't realize that the packet he originally sent wasn't properly transmitted. He therefore proceeds to send the next packet, with a different sequence number.

However, suppose the sequence number is corrupted during transmission. Then the receiver has no way of knowing whether the packet received is retransmission of the original packet, or transmission of the next packet.
This raises an issue and I am rather confused on how protocols would deal with this. Is it even possible for the sequence number to be corrupted during transmission?

Thanks!

BiP

It depends on the protocol, but in general everything has a CRC as part of the packet, so it is very unlikely that a corrupted packet will be interpreted as anything. So the sending node knows that it never got an ACK for some packet it sent, and it has to retry that packet again. It will retry until it gets a positive ACK for that packet, or until the configured number of retries is exceeded.

BTW, if the receiver receives a corrupted packet, it does not NACK, at least not in the protocols I'm familiar with. I suppose that in some point-to-point applications, the receiver could NACK in response to a CRC error. The times I've seen NACKs coming back from receivers is not for physical errors, but instead for logical errors in a packet that has a valid CRC. For example, if the receiver is told to write some memory that is write-protected, or out of range, etc.
 
  • Like
Likes   Reactions: davenn
Bipolarity said:
Not sure if this is the right forum, but I'l give it a shot. This question regards reliable data transfer in the context of transport-layer protocols in communication networks.
Let's say a sender sends a packet of information over a channel. The packet is corrupted, and the receiver replies with a negative acknowledgment (telling the sender that the packet wasn't properly transmitted).

However, the acknowledgment is corrupted during transmission, so the sender doesn't realize that the packet he originally sent wasn't properly transmitted. He therefore proceeds to send the next packet, with a different sequence number.

However, suppose the sequence number is corrupted during transmission. Then the receiver has no way of knowing whether the packet received is retransmission of the original packet, or transmission of the next packet.
This raises an issue and I am rather confused on how protocols would deal with this. Is it even possible for the sequence number to be corrupted during transmission?

Thanks!

BiP

depending on the expected environment and how robust you need your system to be a few steps can be taken.

You can have a hard interrupt line to signal an error.
you can use ECCs
you can put in logic that tracks the sequence number order, and flags an error if they come out of order.

and finally you can use a better transmission system
 
Bipolarity said:
Let's say a sender sends a packet of information over a channel. The packet is corrupted, and the receiver replies with a negative acknowledgment (telling the sender that the packet wasn't properly transmitted).
In modern networking, transport layer protocols do not even receive corrupted packets - they are deleted in the data link layer.
The receiving end of the transport layer only acknowledges perfect packets, using the packet number. It is the responsibility of the transmitting end of transport layer to figure out whether or not to retransmit a packet.
There are several timers involved in each end, since not only can data packets get lost, but so also can acknowledgments.
 
  • Like
Likes   Reactions: berkeman

Similar threads

Replies
1
Views
2K
  • · Replies 14 ·
Replies
14
Views
2K
  • · Replies 4 ·
Replies
4
Views
1K
  • · Replies 12 ·
Replies
12
Views
2K
Replies
11
Views
3K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
Replies
4
Views
1K
Replies
4
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K