本文将比较两种主要的传输协议 ,UDP的特点,以帮助读者更好地理解它们的应用场景和优缺点。
大家先来看一些UDP的报文格式具体是什么样子的.
实际上按照横向画出来的形式是这个样子的
其实就是端口号和报文长度和检验和组成,大家也别担心,我会一一去解释这些内容实际上是什么意思.
在计算机网络中,源端口和目的端口是用于标识不同应用程序或进程之间的通信的端口号。
源端口是指发送数据的应用程序或进程使用的端口号,目的端口则是接收数据的应用程序或进程使用的端口号。
但说实话,我们还可以用西游记唐僧的话来解释,贫僧自东土大唐而来,到西天拜佛求经,为什么这么说呢?我画个图来解释一下,你就明白这个其中的含义了.
如果这个样还没明白,我再举个生活的例子
电话通信。假设你想要打电话给朋友,你需要拨打对方的电话号码,这就相当于源端口号。而当你朋友接听电话后,你们就可以开始通话了,这时你们的通信就需要使用一个共同的频道,就像计算机网络中的端口一样。在这个例子中,你和朋友的电话就相当于计算机网络中的两个应用程序,电话通信使用的频道就相当于网络中的端口。
仔细看这个报文长度,16位长度,就是2个字节,代表的范围就是65535,这代表的就是64kb
这里代表的就是传输数据最大就是64kb,但又有人会问,我们有时候传输的数据很大怎么办,这个时候我们就需要分片传输,但这会增加网络传输的开销,并且会增加丢失和延迟的风险。因此,在设计UDP应用程序时,应尽量将数据分为适当大小的数据块,以避免UDP报文过大,从而提高传输效率和可靠性.
或许大家对校验和十分的感兴趣,校验,校验,说白就是,验证数据的传输是否正确.
具体的一个解释如下:
UDP 数据报时,发送端会计算出 UDP 数据报的校验和,将其添加到 UDP 数据报的头部,然后再将 UDP 数据报发送出去。接收端收到 UDP 数据报后,也会重新计算 UDP 数据报的校验和,并将计算结果与接收到的校验和进行比较,以验证 UDP 数据报的完整性和正确性。
当然我们再来举一个例子,大家就知道我们在传输过程中,校验和是干什么用的啦
我们检验和用于检测 UDP 数据报在传输过程中是否发生了错误或损坏。
知道对端的IP和端口号就直接进行传输,不需要建立连接;
类比于你给朋友发短信,不需要先和朋友建立电话通话连接,直接发送短信即可。
应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并;
用UDP传输100个字节的数据:
如果发送端一次发送100个字节,那么接收端也必须一次接收100个字节;而不能循环接收10次,
每次接收10个字节。
UDP 不提供可靠的数据传输,因为它不会重传丢失的数据包,也不保证数据包的顺序。
类比于你给朋友发快递,如果其中一件丢失了,你不会主动重新发送,而是等待朋友询问缺少了哪件快递,再重新发送。
UDP只有接收缓冲区,没有发送缓冲区:
UDP没有真正意义上的 发送缓冲区。发送的数据会直接交给内核,由内核将数据传给网络层协议
进行后续的传输动作;
UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一
致;如果缓冲区满了,再到达的UDP数据就会被丢弃;