说起互联网,大家最熟悉的就是TCP/IP 协议,上一小节中学习了网络层的IP 协议。现在我们将学习在运输层运用得最多的两个协议:UDP 和TCP。
当我们的主机接入了互联网,获取到了IP 地址,那么它就可以使用UDP 或者TCP 的通信协议来和互联网上的其他主机进行通信。那么什么是UDP,什么是TCP 呢?UDP 是用户数据报协议,而TCP 是传输控制协议,它们都是互联网的正式标准。
(1)用户数据报协议UDP。它是无连接的,也就是说在发送数据之前不需要建立连接,当然发送数据结束后也无须释放连接。UDP 是尽最大努力交付,也就是说它不保证数据的可靠交付。它是面向报文的,应用层交给UDP 多长的报文,UDP 就在前面加上一个UDP 首部,然后就照着原样发送。UDP 也没有拥塞控制,也就是说如果网络上出现了拥塞,UDP 主机也不会降低发送速率。它支持一对一、一对多、多对一和多对多的交互通信。UDP 的首部开销很小,只有8 个字节,UDP 的数据部分,也就是应用层发下来的报文加上UDP 的首部就组成了一个UDP 数据报。
(2)面向连接的运输层协议TCP。应用层在使用TCP 协议之前,必须先建立TCP 连接,在传送数据完毕后,必须释放已经建立的TCP 连接。就好像两个应用进程之间在打电话通话之前要先拨号建立连接,通话结束之后要挂机释放连接。每一条TCP 连接只能有两个端点,也就是说TCP 连接只能是点对点或者说一对一。TCP 提供可靠的交付服务,也就是说通过TCP 连接传送的数据,可以认为是不差错、不丢失、不重复,并且按序到达。TCP 提供全双工通信,也就说TCP 允许双方的应用进程在任何时候都能发送数据。它是面向字节流的,接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。
常用的与UDP 和TCP 协议相关的各种应用和应用层协议,如表1-3-3 所示。我们所熟悉的万维网应用,也就是浏览网页,它使用的应用层协议是HTTP,它使用的运输层协议是TCP,域名系统使用的运输层协议是UDP。
表1-3-3 常用各种应用和应用层协议(www.xing528.com)
综上所述,UDP 是面向报文的,不提供可靠的数据交付,优点是开销小,通信速度快,因为它不需要应答,但还要等待应答;缺点是数据有可能出错或者丢失。
TCP 是面向连接的,它提供可靠的数据交付,优点是数据是可靠传输的;缺点是开销比较大,并且通信速度比较慢,因为要确认等待应答等。
在实际使用中,我们应根据自身的使用场景,选择其合适的传输协议。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。