How can I develop a Linux kernel module to make UDP reliable? This is my assignment in college, and I do not. how to change default UDP behavior in linux kernel by loading a new kernel module? and how to program such a kernel module?
Reliable UDP is not the same as just using TCP. There are a number of differences, but the most predominant is that you are guaranteed to always receive the entire UDP message or not at all. Whereas it is not only possible, but also very often to receive partial TCP messages.
, , ACK, . , . , , . , , .
UDP, RUDP, 9. , TCP.
: , UDT. UDP, .
, , " TCP", , , UDP TCP, - ( TCP)
- , .
, ..
TCP UDP, TCP. " UDP" . , .
UDP , "", , - ( IP-). , 90% , , ( , IP), , recipeint "".
, , TCP. UDP , .
. , ( # 1 ). , , UDP :
(. . IP-, ARP, , ARP).
"ARQ", .
, - , . (, Tanenbaum Kurose/Ross) . , , ARQ ARQ-, .
Linux, ARQ, , ARQ , , .
.
, , UDP , . UDP - ipso facto. , "".
, UDP, , , TCP. - - , , / . , SIP VoIP-; TCP- QoS, ( SIP). , - - .
, - - , UDP , , UDP , UDP .
, , TCP, , SCTP. API " UDP", .
- , , , , , . , FreeBSD - , . YMMV.
, ββLinux, - "linux kernel" google , , "socket". - Linux Kernel , .
,
1) , UDP Linux2) , RUDP ( )3)... ( )4) ! err... !
, UDP- .
- UDP- (net/ipv4/udp.c) IP- UDP. , , , (17) , Makefile , , Kconfig.
/etc/protocols, , .
: , udp.c . (, ipip.c ip_gre.c), , .
, , . , , , , ( ) , , . UDP , , ββ .
, , . , , , UDP . , , UDP, .
, . , . , ACK, -. , . , , .
, , , , - "". , , , ? (, , , ).
, , , , . , - , .
If you need reliable UDP, the best option would be to use SCTP ( Flow Control Protocol ). A well established protocol is currently in use.
If for some reason you MUST use UDP (seriously, just use TCP), some quick and easy reliability features are the presence of presence bits, acks and xor'ed.
Source: https://habr.com/ru/post/1706339/More articles:https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=https://fooobar.com/questions/1706334/tomcat-what-is-the-init-context-params-to-use-for-making-an-external-client-connection-to-tomcat-55-jndi-tree&usg=ALkJrhiYnaYALV-j1Ey0rmQlsk2HSP5MKQMOSS 2007 site in farm type initializer exception - exceptionHow can I use the Groovy mock.interceptor package to model an object constructor? - mockingmultiple folders in App_Code folder - c #Understanding the Discrete Fourier Transform - mathExtract format string from Format object - javaPrefix / suffix for classes - c #How to imagine a path for a genetic algorithm? - language-agnosticModern and on demand - c #Reverse not found: context for sending request from templates - djangoAll Articles