「 计算机网络 」说说TCP和UDP的区别及其应用场景
Posted FrozenPenguin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「 计算机网络 」说说TCP和UDP的区别及其应用场景相关的知识,希望对你有一定的参考价值。
「 计算机网络 」说说TCP和UDP的区别及其应用场景
参考&鸣谢
文章目录
一、TCP/IP模型
计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。
TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。
TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四层,分别为链路层、网络层、传输层和应用层。
- 链路层:负责封装和解封装IP报文,发送和接受ARP/RARP报文等。
- 网络层:负责路由以及把分组报文发送给目标网络或主机。
- 传输层:负责对报文进行分组和重组,并以TCP或UDP协议格式封装报文。
- 应用层:负责向用户提供应用程序,比如
HTTP、FTP
、Telnet、DNS、SMTP等。
在网络体系结构中网络通信的建立必须是在通信双方的对等层进行,不能交错。 在整个数据传输过程中,数据在发送端时经过各层时都要附加上相应层的协议头和协议尾(仅数据链路层需要封装协议尾)部分,也就是要对数据进行协议封装,以标识对应层所用的通信协议。接下去介绍TCP/IP 中有两个具有代表性的传输层协议----TCP 和 UDP。
二、UDP
UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
它有以下几个特点:
相较于TCP,UDP的特点可以归纳为:实时性高、资源占用少、基于数据报。
实时性高
在遇到网络拥塞时,UDP协议可以在应用层控制重传策略,减少重传间隔,超时时间后无法发送的数据直接丢弃。
资源占用少
UDP通信双方不需要保持长连接状态,没有三次挥手/四次挥手的过程,通信双方无需为了保持连接状态消耗资源。
基于数据报
UDP协议不会对应用层发送的数据进行拆分、合并,直接以数据报的形式发送到网络中。因此,使用UDP通信的双方协商好发送/接收的数据长度,才能完整的收发数据,并且一次数据发送必须对应一次数据接收。
头部开销小
UDP 头部包含了以下几个数据:
- 两个十六位的端口号,分别为源端口(可选字段)和目标端口
- 整个数据报文的长度
- 整个数据报文的检验和(IPv4 可选 字段),该字段用于发现头部信息和数据中的错误
因此 UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的
有单播、多播、广播的功能
UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。
三、TCP
当一台计算机想要与另一台计算机通讯时,两台计算机之间的通信需要畅通且可靠,这样才能保证正确收发数据。例如,当你想查看网页或查看电子邮件时,希望完整且按顺序查看网页,而不丢失任何内容。当你下载文件时,希望获得的是完整的文件,而不仅仅是文件的一部分,因为如果数据丢失或乱序,都不是你希望得到的结果,于是就用到了TCP。
TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议
,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。
面向连接
使用TCP协议通信的双方在传输数据之前,必须先建立一对一的连接,并且这个连接是全双工的,双方可以在一个连接上完成数据读/写,完成数据交互后,双方必须断开连接以释放系统资源。所以,在这期间通信双方会产生资源开销以维护、管理连接的状态(读写缓冲区、定时器等等)。
字节流传输
基于字节流传输的数据没有长度限制,就像一根无限长的水管一样,数据可以源源不断的从通信的一端流向另一端,发送端可以逐个字节的向数据流中写入数据,接收端也可以逐个字节的从数据流中读出数据。TCP通信双方的读/写数据次数不一定相等,发送端在连续进行写操作时,TCP模块会先将数据放入TCP发送缓冲区,等待真正发送数据的时候,将发送缓冲区中的数据组成一个或者多个报文段发出。同样地,接收端也拥有TCP接收缓冲区,接收端收到一个或多个报文段后按序依次放入接收缓冲区,可以一次性读取全部数据或分多次读取,这取决于用户指定的读缓冲区大小。
可靠传输
TCP是可靠传输依赖于以下几种机制:应答机制、超时重传、拥塞控制。
- 应答机制
即TCP三次握手、四次挥手,发送端发送的每个TCP报文段都必须得到接收端的应答,才认为这个报文段传输成功。
- 超时重传
TCP模块为每一个TCP报文段都维护一个重传定时器,发送端发出报文后启动重传定时器,在定时时间未收到应答,则重新发送该报文段。(关于重传定时器的定时时间以及如何重传都依赖于内核指定的重传策略,此处不做讨论)。
- 拥塞控制
拥塞控制其实分为两部分,一部分是拥塞发生之前避免拥塞发生(慢启动、拥塞避免),另一部分是拥塞发生之后解决拥塞(快速重传、快速恢复)。
i.慢启动。TCP连接成功建立后,并不清楚网络的状况,以慢启动的方式更加平滑的发送数据,假设发送端此时最多发送X个报文段,此后每成功接受到一次确认信息都线性增大X的值。
ii.拥塞避免。由于慢启动会不断增加发送报文段的数量X,X越来越大必然会导致网络拥塞,因此TCP中定义了慢启动门限值来限制X的值,当超过门限值时,将启用拥塞避免算法,来减缓X的增大。
iii.快速重传。发送端连续收到三个重复的确认后重新发送丢失的报文段,并且减小慢启动门限值,避免拥塞。(引起接收端发送连续确认的原因可能有:报文段丢失、收到的报文段乱序)
iiii.快速恢复。当收到新数据的确认时,恢复因快速重传修改的慢启动门限值为初始状态。
仅支持单播传输
每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。
提供全双工通信
TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)
四、使用场景
五、小结
对比
UDP | TCP | |
---|---|---|
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠传输,不使用流量控制和拥塞控制 | 可靠传输,使用流量控制和拥塞控制 |
连接对象个数 | 支持一对一,一对多,多对一和多对多交互通信 | 只能是一对一通信 |
传输方式 | 面向报文 | 面向字节流 |
首部开销 | 首部开销小,仅8字节 | 首部最小20字节,最大60字节 |
适用场景 | 适用于实时应用(IP电话、视频会议、直播等) | 适用于要求可靠传输的应用,例如文件传输 |
TCP 和 UDP 的优缺点无法简单地、绝对地去做比较:TCP 用于在传输层有必要实现可靠传输的情况; 而在一方面,UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信。TCP 和 UDP 应该根据应用的目的按需使用。
计算机网络_UDP和TCP的区别
以铜为镜可以正衣冠,以史为镜可以明得失,以文为镜可以修内功,本系列我们来说说计算机网络,修修内功以识这巨大的“网”。
目录
一、为什么要了解
身处于巨大的万维网中,我们每天通过各种终端与他人保持着联系,可以说现代社会中,没有人会脱离计算机网络而独立存在。我们是怎样与他人保持联系的,我们的终端如何将信息发送到服务器的,这无不关乎计算机网络。
运输层是计算机网络体系结构中非常关键的层次之一,主要有两个协议:用户数据报协议UDP和传输控制协议TCP。协议听起来很抽象,实际上是计算机上运行的协议进程(程序)。因此要了解运输层,必须先了解这两个协议,它有助于我们理解计算机网络的工作原理,也有助于我们理解现代信息社会。
二、UDP的特点
UDP是TCP/IP运输层中一个重要的协议,UDP在传送数据前不需要先建立连接。远端主机的运输层在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下却是最有效的工作方式,如:大规模的即时通信,可以参考这篇文章《开发即时通信是选择UDP还是TCP协议》。
用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,即复用、分用以及差错检测的功能。UDP的主要特点是:
- UDP是无连接的。发送数据之前不需要建立连接,发送数据结束也不需要释放,因此减少了开销和发送数据之前的时延。
- UDP尽最大努力交付。不保证可靠交付,因此主机不需要维持复杂的连接状态表。
- UDP是面向报文的。发送方的UDP对应用程序叫下来的报文,既不合并,也不拆分,在添加首部就向下交付给IP层。
- UDP没有拥塞控制。网络出现拥塞时不会使源主机的发送速率降低,UDP刚好满足实时应用中,要求源主机以恒定的速率发送数据,允许网络拥塞时丢失一些数据,却不允许太大的数据时延。
- UDP支持一对一、一对多、多对一和多对多的交互通信。
- UDP的首部开销小,只有8个字节,比TCP的20个字节的首部短。
三、TCP的特点
TCP是TCP/IP运输层中一个重要的协议,TCP在传送数据前必须先建立连接,数据传送结束后要释放连接。由于TCP要提供可靠的、面向连接的运输服务,因此增加了许多开销。TCP的主要特点是:
- TCP是面向连接的运输层协议。应用程序在使用TCP协议之前,必须先先建立TCP连接。在传送数据完毕后,必须释放已经建立的TCP连接。
- TCP只支持一对一。每一条TCP连接只能有两个端点,连接只能是点对点的。
- TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达。
- TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据,连接的两端都设有发送缓存和接受缓存。
- 面向字节流。TCP把应用程序交下来的数据看成是一连串的无结构的字节流,接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。
四、总结
本文首先提出了作为信息社会的一份子,了解网络体系结构中的运输协议的必要性,并解释了抽象的协议实际上是计算机上的进程;其次介绍了UDP协议的特点:UDP是不可靠、无连接、面向报文的、支持多对多的、无拥塞控制的运输层协议;最后介绍了TCP协议的特点:TCP是可靠的、面向连接、面向字节流、只支持一对一、提供全双工通信的运输层协议。
以上是关于「 计算机网络 」说说TCP和UDP的区别及其应用场景的主要内容,如果未能解决你的问题,请参考以下文章