前端知识点

TCP与UDP的区别

2021-03-03  本文已影响0人  Adonia汪

一、TCP/IP 模型

在介绍TCP和UDP协议之前,有必要先了解下TCP/IP模型,TCP/IP中的两个具有代表性的传输协议:TCP和UDP。
TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。
TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四层,分别为链路层、网络层、传输层和应用层。

二、TCP和UDP的简介

1、TCP

TCP协议全称是传输控制协议,是一种面向连接、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。流就是指不间断的数据结构,可以想象成水管中的水流。

TCP 在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的运输服务(TCP 的可靠体现在 TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。

a. TCP连接过程(三次握手)

最初客户端和服务端都处于CLOSED(关闭)状态,客户端主动打开连接,服务端被动打开连接。

为什么TCP建立连接需要三次握手?

--- 为了防止已经失效的连接请求又突然被服务端接收,从而产生错误。比如:A发出的第一个连接请求报文段并没有丢失,而是在网络结点时间长了,以致于延误到连接释放以后的某个时间段才到达B,但是B收到此失效的请求后,就误以为A又发出一次新的连接请求,于是就向A发出确认报文段,同意建立连接。
出现失效的连接请求报文段被服务端接收的情况,从而产生错误。

b. TCP断开连接(四次挥手)

c. TCP协议的特点

2、UDP

UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

UDP在传送数据之前不需要建立连接,远地主机在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下,UDP却是最有效的一种比如QQ语音、QQ视频、直播等即时通信应用。

UDP协议的特点

  • 两个十六位的端口号,分别为源端口(可选字段)和目标端口
  • 整个数据报文的长度
  • 整个数据报文的检验和(IPv4 可选 字段),该字段用于发现头部信息和数据中的错误

因此 UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的

三、区别

1、连接的区别
TCP面向连接,即发送数据之前先建立连接。
UDP是无连接的,即发送数据之前是不需要建立连接的。
2、安全方面的区别
TCP是全双工的可靠通信,提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。使用流量控制和拥塞控制。
UDP是不可靠传输,尽最大努力交付,即不保证可靠交付。
3、传输效率的区别
TCP传输效率较低。
UDP传输效率高,适用于对高速传输和实时性有较高要求的通信或广播通信。
4、连接对象数量的区别
TCP连接只能是点到点,一对一的。
UDP支持一对一,一对多,多对一和多对多的交互通信。
5、传输方式的区别
TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流。适用于要求可靠传输的应用比如文件传输等。
UDP面向报文,没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低,对实时应用很有用比如实时视频会议等。
6、首部开销
TCP首部开销最小20字节,最大60字节。
UDP首部开销小,只有8个字节。

我们可以把发送端和接收端比作河流的两端,把传输的数据包比作运送的石料。
TCP是先搭桥,即建立连接,再一车一车的运(面向数据流),确保可以顺利到达对岸,当遇到桥上运输车辆较多时可以自行控制快慢(拥塞控制)。
UDP 则是靠手一个一个的扔(即无连接,基于数据报),不管货物能否顺利到达对岸,也不关心扔的快慢频率。

上一篇下一篇

猜你喜欢

热点阅读