目录
前言
在网络传输的过程中有很多的传输方式,而现在主流的传输协议主要包含的有两种协议,分别是今天要讲到的UDP和TCP协议,而它们之间有很大区别,可以在不同的需求下搭配两者使用,这样就会使传输做到又稳定又迅速。而今天让我们来讲一下在面试中它们的一些考点!!!
一、什么是端口号?
在网络中每个设备之间都可能会互相发送数据,而且每个设备又有很多个不同的程序,而要准确的找到对端设备的指定的一个程序是十分困难的,那么就需要一个类似于身份证的东西来确保对端设备的指定程序或者自己设备的指定程序。而计算机中程序的身份证号码也就是端口号,都是独一无二的,也就只有这样才能保证对端设备程序就是自己找的设备程序。

二、什么是UDP和TCP?
UDP与TCP都是网络传输中的在传输层的协议,它们都要求了信息的传递格式,而在不同的格式要求下,它们带来的效果就截然不同。若能够将两者搭配使用则可以达到又快又准确的效果!
三、UDP协议
1、UDP协议段格式
下图为UDP包的数据格式。
(1)16位源(目的)端口号
16位源端口号保存的就是自己设备的端口地址。
举个栗子:如果一次信息发送看成一次寄快递,那么源端口号就是发货地址。
16位目的端口号保存的就是对端的端口地址。
再举个栗子:如果将一次信息发送看成寄一次快递,那么目的端口号就是收货地址了。
而在这里不管是目的端口号还是源端口号都是相对的概念,并不是客户端都是源端口,服务端都是目的端口。
(2)16位UDP长度
在发送UDP数据时,都是使用数据报的形式去发送,而这里的16位UDP长度就是告诉目的端口这次发送的数据有多少。而16位UDP长度不仅包含数据的长度还包含了UDP首部的长度。
所以这里就包含了UDP协议的一个缺点,这里已经限制了整个UDP数据报的最大长度就是2的16次方个比特位,也就是64KB。
(3)16位UDP检验和
在UDP协议中并没有去让信息交互的两台设备保存对方的信息,所以难以去保证数据的准确性,所以引入16位UDP检验和,目的端口在收到UDP数据报之后会将每个比特位的值相加来比较这个检验和,如果检验和于相加的值相等那么就证明了这次数据传输是没有问题的。若如有问题目的端口就会删去这个数据报。
(4)数据
这里的数据就属于是用户自己填写的。
还是举个栗子:如果将一次信息发送看成寄一次快递,那么数据就是要寄得东西了。
2、UDP的特点
(1)无连接
只知道对端的IP和端口号就可以直接进行传输,不需要保存对端的信息。
(2)不可靠!!!
整个UDP的发送过程双方都不会保存对端的信息,所以每次传递都能理解为一次性的。可以将每次UDP发送看成一次寄信,只管寄了没有,却不在乎对面收到了吗。

(3)面向数据报
UDP的传输是以一个数据报的形式进行的,应用层给它多长的报文(不超过64KB),UDP就照样发送,既不会拆分,也不会合并。
如果发送端发送了一个100字节的数据,那么接受端也只能一次接受一个100字节的数据报,不能一次10个字节10个字节的去分段读取。
四、UDP的使用注意事项
刚刚我们也提到了在UDP报头中包含了一个16位的UDP长度,这个相当于给UDP带了一个紧箍咒,大大的限制了UDP能力,不能让UDP大展身手,每次只能保存64KB的数据(包含UDP报头)。
而64KB在现在看来是一个非常小的数字,如果我们要传输的数据超过了64KB,那么我们需要自己在应用层实现自己进行拆包、组包的功能。
五、UDP的优点
上面我们就只提到了UDP协议的一些缺点,难道UDP就没有一点点的优点吗?

当然是有的!!!虽然UDP牺牲了准确性,但是他换来了非常快的速递,发送速度完全就取决于发送端这边的速度了。
总结
这里我们已经明白了UDP协议的具体实现过程了,非常的快也是非常的不可靠,而后面我们将会学到TCP协议,相对于UDP协议,TCP协议虽然慢了,但是换来了准确性。
如果看到这里了,并且理解了UDP的内容,希望能给作者点个小心心支持一下,原创不易!!!学习不易!!!希望后面能和大家一起进步!!!







