UDP has one good feature - it is connectionless. But it has many bad features - packets can be lost, arrive multiple times, there is no packet sequence - packet 2 can arrive faster than 1. How to keep good and remove bad?. Is there any good implementations that provide reliable transport protocol on top of udp so that we are still conectionless but without mentioned problems. One example of what can be done with it is mosh.
Reliable transport protocol on top of UDP
2k Views Asked by Pavlo At
1
There are 1 best solutions below
Related Questions in UDP
- Discussion on using golang to implement UDP client timeout retransmission
- What is the correct way to setup and use the Ethernet library in Arduino in order to send and receive UDP broadcast messages between LAN devices?
- Multicast packets not received on windows
- Microcontroller hangs with LWIP UDP
- UDP socket client not able to receive data
- "Parameter is not valid" exception when using Image.FromStream() - UDP Video live stream
- k3s change requested UDP port assignment
- Why does the python client socket receiving a reply but still throw the exception in some threadings?
- Gnuradio "double free or corruption (!prev)" error
- Why we need wraparound in UPD checksum algorithm?
- Simple Java UDP server/client-program works on local machine but not over either LAN (different machines) or internet
- Docker bridge does not transmit from tcpreplay IPv6/UDP/GTP traffic
- trying to send TCP packet and recieve it back and count time in client+server app
- recvmsg returns EAGAIN after select reports file descriptor is ready
- Receiving UDP broadcast on Android
Related Questions in IMPLEMENTATION
- How to immediately apply DISPLAYCONFIG_SCALING display scaling mode with SetDisplayConfig and DISPLAYCONFIG_PATH_TARGET_INFO
- Adding in Tasks time spend on them with option to add endlessly until is Task done
- I can't import Connect SDK Android to my project
- DFS Recursion, why save results instead of running it again
- what's the purpose of a local variable copy of internal array in dotnet collections source code
- Is there a way to encapsulate certain properties in a Swift protocol so they aren't visible to users of the protocol?
- How is asynchronous programming implemented under the hood without continuous cheching?
- Can I create a Flutter App which downloads videos in the Background?
- My use of __str__() inside of another object's __str__() is not working
- how can i generate this series of sequence using recursion?
- Dart source code for basic mathematical functions
- Why does the string class have the parameterless constructor and the constructor that takes a string literal as argument?
- Typescript interface operating over the same implementation exclusively
- How can I return an impl trait from a function dynamically when this trait contains a method which returns itself an impl trait?
- How do I fix this Quick sort implemented with python so that it returns the correctly sorted array?
Related Questions in NETWORK-PROTOCOLS
- Why we say "Every Fragment-Offset except the last one, must contain a multiple of 8 bytes of data. In IPv4 header
- Trouble Understanding how upgrading a request works for Web Sockets
- HTTP2_PROTOCOL_ERROR and ERR_CONNECTION_CLOSED when updating weblogic version 12 to 14
- Is TLS gRPC distinguishable from TLS HTTP2?
- How The network header is represented at the bit level
- Installing latest protocol decoders in Sigrok PulseView
- How to switch routing protocol midway from aodv to olsr in ns3?
- Using CIP in C# as the Target?
- HDLC encoding protocol
- How can server with HTTP 1.1 understand client that uses HTTP 2?
- Create Gstreamer RTSP Onvif server
- How does QUIC's multiplexing differ from that of HTTP/2 in detail
- How to test IoT devices in the context of home automation?
- How does application layer in OSI model conveys this information to Network layer if incoming data should be fragmented or not?
- How can I solve this network problem that arose in my react project when using an aws rds?
Related Questions in RELIABILITY
- Error in using splithalf () of the package "splithalf"
- How can I figure out which items were automatically reversed (because they were negatively correlated) using psych::splitHalf?
- What is the advantage of journaling multiple transactions?
- Why are USB connections so unreliable and sporadic?
- Reliablity Crow Amsaa Model
- Alpha in the psych package
- Plot CI bounds with Fit_Weibull_Mixture
- How can I store data code for LONG time 100-200 years
- Agreement (Cohen Kappa) calculation of binary variable with multiple measurements over time
- Is it possible to do reliability analysis using lifeline library python using nevada data?
- Error in corCFA(fun_call = match.call(), ...) : object 'mycor' not found
- Request-based SLO for cloud run service
- Python implementation of MLE for NHPP model
- Python Error: "On entry to DLASCL parameter number 4 had an illegal value" When Plotting Cyclic Loading Figure
- How can I get p value for Cronbach alpha?
Related Questions in MOSH
- How do I force mosh to try connecting again?
- Can't use mosh to connect remote server through frp
- Install Mosh on Almalinux 9
- Can't connect to server via mosh
- Moshi with Retrofit send empty request
- In mosh how can I scrollback in the terminal and use mouse in emacs, less etc
- Trying to implement HTML Template into first Django project. Movies not showing
- Using Mosh instead of SSH
- bcrypt not installing when tried to using npm i bcrypt
- Mosh using MobaXterm fails to connect with error, how to fix?
- How to run mosh in a python subprocess
- MalformedJsonException only thrown during unit tests on Android Emulator
- How to actually connect to my vps via Chromebook
- Reliable transport protocol on top of UDP
- mosh + osx + /bin/false error
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
What you describe as bad isn't really bad depending on the context. For example UDP is used a lot in realtime streaming, delivery confirmation and resending is useless in this context.
That being said there are e few implementations that you might want to look at:
ENet (http://enet.bespin.org/)
RUDP (https://en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol)
UDT (https://en.wikipedia.org/wiki/UDP-based_Data_Transfer_Protocol)
I work in embedded context:
CoAP (https://en.wikipedia.org/wiki/Constrained_Application_Protocol) also implements a lot of these features, so its worth a look.
What is your reason for not choosing TCP?