¿Qué cambiarías en el protocolo TCP si pudieras?

Hay algunos ajustes menores, pero el campo de opciones existente hace que la mayoría de los ajustes sean un valor adicional reconocido en lugar de un verdadero cambio de protocolo.

Limpiaría las opciones, quizás las agruparía para que el análisis sea más limpio. Designaría cierto número de bits como prefijo, designando el grupo de opciones, con los bits restantes designando la opción específica. Simplifica el análisis si puede recolectar y trabajar en la granja.

Todos los algoritmos para dimensionar ventanas presentes en Linux o NetBSD deben considerarse parte del conjunto estándar. Si las opciones se refieren a ellas, entonces el sufijo debe ser lo suficientemente largo como para especificar todo en la suite estándar.

La trayectoria múltiple definitivamente debe ser obligatoria.

Vería DTP, STP y SCTP para ver si había algo que pudiera ser rogado, prestado o robado, y si sería mejor en TCP o IP.

Probablemente agregaría una clase de opción de tipo de respuesta, luego agregaría la opción de NACKing paquetes faltantes en lugar de ACKing los recibidos.

Probablemente agregaría una clase de opción para el tipo de entrega, luego agregaría las opciones inmediata (sin almacenamiento en búfer), no confiable (el sistema actual), transaccional (donde los paquetes se clasifican pero no se entregan) y finaliza la transacción (donde se entregan los paquetes clasificados y debe ser reconocido por la aplicación). Una transacción, aquí, significa lo mismo que en la teoría de la base de datos: todo se entrega certificado o nada. Para evitar que esto sea una vulnerabilidad, necesitaría una ventana de espacio y una ventana de tiempo, donde exceder cualquiera de los dos resultados hace que la transacción finalice y los datos se eliminen.

El campo que se usó para prioridad y ahora se usa para la clasificación de paquetes puede ser un poco pequeño. Las opciones son lentas para buscar, por lo que este debe ser un campo de posición fija, pero me gustaría tener suficiente espacio para dividir el clasificador en una jerarquía de dos o cuatro niveles. De esa manera, podría tener un control más fino sobre el manejo de paquetes. También podría admitir el nivel 5 del modelo OSI, ya que tendría una manera de definir una sesión en un protocolo en un paquete de servicios integrados, y sería capaz de realizar un enrutamiento de nivel 5. Esto sería casi tan bueno como el enrutamiento de nivel 7, pero a una fracción de la potencia de procesamiento.

Puede haber una forma de codificar la información de sesión adecuada en TCP. Estoy pensando en cómo podría hacerlo de manera eficiente, pero sigo dando vueltas para tener un túnel de capa 4 que se encargue de la información de enrutamiento y ponga los datos en la capa 5. No veo cómo hacer esto de alguna manera eso reduce los gastos generales, sin embargo.

Desearía que hubiera un indicador de registro opcional. Hubiera simplificado el ensamblaje de registros de los bytes en una secuencia TCP. UDP tiene límites de registro (implícitos) pero no la secuencia y entrega garantizadas (er..detección de falla de entrega).

Dicho esto, el hecho de que tal protocolo de transporte nunca se haya creado (bueno, SPX lo tenía, pero ese protocolo ya no está en uso) probablemente significa que no hay necesidad / ventaja real.

No mucho. Tomaría muchas de las cosas que hemos aprendido a lo largo de los años y las portaré a todas las implementaciones. El control actual de congestión, las ventanas extendidas y el reconocimiento selectivo vienen a la mente.

También respaldaría el puerto TCP de ruta múltiple y lo haría obligatorio.

  • Aumente los puertos src y dst a 32 bit int
  • Hacer que los números seq sean criptográficamente seguros por defecto
  • Cambie el cifrado obligatorio e2e lo más bajo posible en la pila de protocolos