文章目录
- 前言
- 一、UDP协议
- 协议段格式(简图)
- 校验和
- 二、UDP与TCP
前言
随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完成业务,就有了⽹络互连。
一、UDP协议
协议段格式(简图)
校验和
校验和的作用:尝试检查当前传输的数据是否存在问题?是否出现了bit翻转?如果发现存在问题,就可以把这个错误的数据包丢弃掉,避免将错就错。
UDP中,校验和使用比较简单的CRC算法(循环冗余校验)来完成校验。
原理是:UDP数据报发送方,在发送之前,先计算一遍CRC,把算好的CRC值放到UDP数据报中(设这个CRC值为value1),接下来这个数据包通过网络传输到达接收端,接收端收到这个数据后,也会按照同样的算法再算一遍CRC的值,得到的结果为value2,比较这两个值是否一致,如果一致说明数据没问题,如果不一致,说明传输过程中发生了比特翻转。上述CRC算法,只要有一个bit位发生翻转,此时一定可以发现问题。如果两个/多个bit位发生翻转,有可能恰好校验和和之前一样(低概率事件忽略不计)。
二、UDP与TCP
TCP特点 | UDP特点 |
---|---|
有连接 | 无连接 |
可靠传输 | 不可靠传输 |
面向字节流 | 面向数据报 |
全双工 | 全双工 |
有连接/无连接
此处连接”不是物理意义的连接,而是抽象,虚拟的连接。
相当于打电话、拨号,直到对方接通,才算完成建立连接。TCP进行编程的时候,也存在类似的建立连接的过程。 像发微信、发短信,不论对方是否同意都能发过去,则不需要建立连接,就能进行通信。UDP进行编程时,则不需要进行连接。
可靠传输/不可靠传输
网络上存在的“异常情况”很多,无论使用什么样的软硬件的技术手段,无法100%保证网络数据能从A一定传输到B。此处的可靠传输是尽可能的完成数据传输,虽然无法确保数据到达对方,至少可以确认对方是否收到这个数据。则此处可靠传输,主要指的是发的数据到没到,发送方能够清楚感知到。
面向字节流/面向数据报
面向字节流:此处字节流和文件操作中的字节流完全一致,网络中传输数据的基本单位就是字节。
面向数据报:每次传输的基本单位是一个数据报(由一系列的字节构成特定的结构)。
全双工/半双工
全双工:一个通道可以双向通信。
半双工:一个通道只能单向通信。
最后,码字不易,如果觉得对你有帮助的话请点个赞吧,关注我,一起学习,一起进步!