返回 登录
0

浅谈TCP/IP协议栈(八)UDP协议简述

附上博客链接,欢迎大家一起来交流和学习。
介绍完网络层的协议后,今天开始为大家介绍网络层之上的传输层协议。如果把网络层中的IP协议看成是TCP/IP协议栈中的顶梁柱,那么UDP和TCP就好比是IP协议最亲密的两个儿子,尽管UDP和TCP是传输层中最为重要的的两兄弟,但是这两兄弟可以说是截然不同,这一章先介绍UDP协议。

UDP是一个简单的面相数据报的运输层协议,进程中的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报,一封UDP数据报如下:
图片描述

先来介绍UDP的首部,UDP首部很简单,其固定字段为8字节,比起IP首部的20字节还要少很多,其组成如下:
图片描述
可以看到,首部包括端口号,目的端口号,报文长度和校验和,其各自代表的含义如下:
端口号表示发送进程和接受进程,这里的进程和Linux系统中的进程可以简单理解为是一样的,即应用层需要传输某些数据,而开辟一个进程,其唯一的标识符就是端口号,而传输协议是端对端的协议,因此务必要包含源端口号和目的端口号,后面还会介绍socket,socket简单来说就是IP地址和端口号作为key值的一个服务。
UDP首部中也包含了检验和,但是UDP协议并不强制检验,想想我们之前介绍过的IP协议,,同样也是不要求检验报文和,在这一点上,UDP倒是和IP保持一致,因此UDP像IP一样,无法保证报文的有序性,也不能保证报文一定能传到,如果报文发送失败,则就相当于是丢包了,因此也是提供不可靠的传输服务。

UDP协议相对来说较为简单,把上面的介绍总结下来就能得到UDP协议的特点:
1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。
2、UDP不对收到的数据进行排序,在UDP报文的首部中并没有数据的顺序信息(TCP协议中是有的),而且报文不一定按照顺序到达,因此接收端无法保证报文的顺序。
3、UDP对于接收到的数据报文不发送确认信息,发送端不知道数据是否被正确接收,也不会重发数据。
4、UDP传送数据较TCP更为快速,系统开销也小很多。
从以上的总结可以看出,UDP提供的是无连接,不可靠的数据传送方式,是一种尽力而为的数据传输服务。
UDP协议的介绍就到此为止,下一节我们来介绍它的兄弟协议,整个TCP/IP协议栈中最为重要的协议——TCP协议,敬请期待!

评论