1.TCP和UDP的既念及特点
TCP和UDP都是传输层协议,他们都属于TCP/IP协议族:
UDP
UDP的全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OS模型中,在传输层,处于P协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
它的特点如下:
- 面向无连接
首先UDP是不需要和TCP一样在发送数据前进行三次握手建立连接的,想发数据就可以开始发送了。并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。
具体来说就是:
- 在发送端,应用层将数据传递给传输层的UDP协议,UDP只会给数据增加一个UDP头标识下是UDP协议,然后就传递给网络层了
- 在接收端,网络层将数据传递给传输层,UDP只去除P报文头就传递给应用层,不会任何拼接操作
- 有单播,多播,广播的功能 UDP不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说UDP提供了单播,多播,广播的功能。
- 面向报文 发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付P层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文
- 不可靠性 首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。 再者网络环境时好时坏,但是UDP因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用UDP而不是TCP。
- 头部开销小,传输数据报文时是很高效的
UDP头部包含了以下几个数据:
- 两个十六位的端口号,分别为源端口(何选字段)和目标端口
- 整个数据报文的长度
- 整个数据报文的检验和(PV4可选字段),该字段用于发现头部信息和数据中的错误
大约 22 分钟