N es el tamaño de la ventana (fijo en todo). Para simplificar, asumimos un espacio de número de secuencia infinito.
Remitente:
- Inicializar
- Cuando los datos llegan de la aplicación, si el siguiente número de secuencia está dentro de la ventana, envíe el paquete, inicie el temporizador para este paquete e incremente el siguiente número de secuencia.
- Si el temporizador de algún paquete caduca, reenvíe ese paquete (por lo tanto, selectivo), reinicie el temporizador.
- Si algún paquete está ACKed, márquelo como ACKed y avance sendbase al siguiente paquete enviado sin RACK.
Receptor
- Cómo limitar el ancho de banda para alguien en mi enrutador dlink
- ¿Cuál es la diferencia entre codificación y redes?
- ¿Cuál es la diferencia entre TCP y UDP?
- ¿Por qué los enrutadores con búfer infinito, al tiempo que evita la caída de paquetes en la capa de red, no resolvería el problema de congestión en la red? Y, sin embargo, contribuiría a empeorar la congestión.
- ¿Cuáles son los trucos de solución de problemas de red MPLS?
5. Inicializar rcvbase
6. Si se recibe el paquete (y no está dañado):
- Si su número de secuencia está entre rcvbase y rcvbase + N-1 (ambos incluidos): envíe ACK (n); si el número de secuencia es igual a recibir base, entregar datos a la aplicación y entregar datos almacenados en búfer consecutivos (avance rcvbase en consecuencia); de lo contrario, el búfer recibió datos
- Si su número de secuencia está entre rcvbase-N y rcvbase-1 (ambos incluidos), simplemente envíe ACK (n)
- De lo contrario, ignorar