网络原理之 UDP
UDP的特点1. 无毗连
知道对服务器的端口号和 IP 即可直接举行传输, 并不必要建立毗连
2. 不可靠
没有任何的安全机制, 如 TCP 的 超时重传、确认应答等等, 发送端假如发送数据报以后, 由于网络故障没有送达, UDP 协议层也不会给应用层返回任何的错误信息
3. 面向数据报
应用层交给 UDP 多长的报文, UDP 只能原样发送, 不能拆分, 不能归并
好比传输100个本身的数据:
假如发送端一次性发送 100 个字节, 接收端也必须接受100 个字节, 不可以接受 10 次, 10 个字节
4. 全双工
UDP 的 socket 既可以读也可以写
增补一个缓冲区
[*]UDP 只有接收缓冲区, 不存在发送缓冲区
发送的数据会直接交给内核举行处理, 由内核将数据交给下面的网络层举行封装, 举行后面的发送操作
[*]UDP 的接收缓冲区不能包管收到的 UDP 数据报和发送的顺序一样, 而且假如接收缓冲区满了以后, 厥后到达的数据报都会被丢弃
~
UDP 报文的格式
https://i-blog.csdnimg.cn/direct/7b0269a8e90c440b80a675908da22ea6.png
根本上全部计网的课本中都有这个图片
以下比力准确
https://i-blog.csdnimg.cn/direct/19b1e4dc81574675bd13143c7db17225.png
端口号
[*]每个端口号在 UDP 报文中, 占据两个字节
端口号的取值范围是 0 - 65535
[*]其中 < 1024 的都是一些着名的端口号, 给一些名气大的服务器预留的端口(这部门端口写代码不应该使用), 其实用了也没事, 但是必要管理员权限才气使用
[*]例如
http 80
ssh 22
ftp 21
1 - 1023 相称于是 vip 席位, 0 虽然正当但是没有人使用
报文长度
由于其中报文长度最多为 2 个字节, 也就是最多只能表示两个字节, 0 - 65535 == 64KB
所以一个 UDP 报文的最大长度就是 64KB
所以使用 UDP 编程时, 肯定要注意数据报的长度不能太长, 否则会出现问题
校验和
由于网络传输是通过电信号, 也就是高低电平表示 0 大概 1 的
假如受到了外部的环境干扰, 如强磁场、太阳黑子等一些干扰, 就有大概导致高电平 -> 低电平, 低电平 -> 高电平
也就是发生了比特翻转,数据传输就堕落了
所以就诞生了校验和, 来判定一下, 当前的数据是否堕落
假如校验和不对, 此时你的数据肯定是错的
假如校验和对, 但是数据也有肯定的概率会堕落
一般校验和是通过取内容/ 内容的一部门, 通过一些数学公式变更, 算术运算, 得到一个数值.
假如内容发生变化, 校验和也会发生变化, 例如奇偶校验
例如
https://i-blog.csdnimg.cn/direct/24af4c7879a847aeb11e7e9e2cf1c1d0.png
发送方, 将数据载荷带入到校验和算法中, 举行盘算得到校验和的结果. 设置为 sum1
接收方收到的数据后, 可以使用同样的算法, 对载荷重新盘算一遍校验和, 得到 sum2
对比 sum1 和 sum2 举行对比, 假如不雷同的话,肯定是数据有问题
UDP 一般使用的是 CRC 算法, 感兴趣可以去 b站上相识一下, 这是一个非常简单粗暴的算法
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]