TCP/UDP协议的概念及区别


前言

TCP和UDP协议是TCP/IP协议的核心,这两个协议属于网络中运输层的协议。

TCP协议

TCP协议(传输控制协议)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。互联网络与单个网络有很大的不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数。TCP的设计目标是能够动态地适应互联网络的这些特性,而且具备面对各种故障时的健壮性。TCP协议是一种可靠的协议,在使用TCP发送数据前,需要建立起连接。

TCP主要特点

  • 面向连接的运输层协议
  • 每条TCP连接只能有两个断电,只能是点对点的
  • 提供可靠交付的服务
  • 提供全双工通信
  • 面向字节流

TCP的首部格式

在这里插入图片描述
TCP虽然是面向字节流的,但TCP传送的数据单元是报文段。一个TCP报文段分为首部和数据部分,首部前20个字节是固定的,后面有4n字节是根据需要而增加的选项,因此TCP首部最小的长度是20字节。

  • 源端口和目的端口
    各占2个字节,分别写入源端口号和目的端口号,作用与下面UDP的分用相似。
  • 序列号
    序列号是指发送数据的位置,占4个字节。每发送一次数据,就累加一次该数据字节数的大小。
  • 确认号
    是指下一次应该收到的数据的序列号,占用4个字节。发送端接收到这个确认应答号以后就可以认为在这个序号以前的数据都已经被正常接收了。
  • 数据偏移
    该字段表示TCP所传输的数据部分应该从TCP包的哪个位置开始计算。也可以当成TCP的首部长度。字段长度4位。
  • 保留
    占6位,该字段主要为以后扩展使用。一般设置为0.
  • 控制位
    URG:为1时,表示包中有需要紧急处理的数据。
    ACK:该位为1时,确认应答的字段变为有效。TCP规定除了在最初建立连接时候的SYN包之外该位必须设置为1。
    PSH:该位为1时,表示需要将收到的数据立刻上传给上层应用协议。PSH为0时,则不需要立即传,而是先进行缓存。
    RST:该位为1时,表示TCP连接出现异常,必须强制断开连接。
    SYN:用于建立连接。SYN为1时表示希望建立连接,并在其序列号的字段进行序列号初始值的设定。
    FIN:该位为1时,表示今后都不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换FIN位置为1的TCP段。
  • 窗口大小
    占2个字节,用于通知从相同TCP首部的确认应答号所指位置开始能够接受的数据大小。TCP不允许发送超过此处所示大小的数据。
  • 检验和
    占2个字节,用于检测首部和数据两个部分的数据是否出错。
  • 紧急指针
    占2个字节,当URG=1时才有意义。它指出本报文段中的紧急数据的字节数,即指出了紧急数据的末尾在报文段中的位置。
  • 选项
    长度可变,最长可达40个字节。
  • 填充
    仅仅是为了使首部长度为4字节的整数倍

工作方式(重点)

  • 建立连接
    TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。
    在这里插入图片描述
    TCP三次握手的过程如下:
    1、客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
    2、服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
    3、客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
  • 连接终止
    建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。
    在这里插入图片描述
    四次握手过程如下:
    1、某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
    2、接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。
    3、一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
    4、接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。
    既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。

UDP协议

UDP协议(用户数据报协议)是一个简单的面向数据报的传输层协议。提供的是非面向连接的、不可靠的数据流传输。UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地,因此报文可能会丢失、重复以及乱序等。但由于UDP再传输数据报前不用在用户和服务器之间建立连接,且没有超时重发等机制,故而传输速度很快。

UDP主要特点

  • UDP是无连接的
  • UDP使用尽最大努力交付
  • UDP是面向报文的
  • UDP没有拥塞控制
  • UDP支持一对一、一对多、多对多的交互通信
  • UDP的首部开销小

UDP的首部格式

用户数据报UDP有两个字段:数据字段首部字段
在这里插入图片描述
UDP的数据报首部由4个字段组成,每个字段2个字节,所有UDP的数据报首部一共有8个字节。其中4个字段分别为:源端口、目的端口、长度和检验和。

  • 源端口
    源端口号,在需要对方回信时需要使用到,如果不需要可用全0。
  • 目的端口
    目的端口号,在终点交付报文时必须使用。
  • 长度
    UDP用户数据报的长度,其最小值为8,即没有数据字段,仅仅有首部
  • 验和
    用于检测UDP用户数据报在传输中是否出错。有错就丢弃。

TCP和UDP的区别

TCP UDP
是否连接 面向连接 无连接
传输可靠性 可靠的 不可靠的
应用场景 传输大量数据 传输少量数据
速度
首部对比 仅8字节 最小20字节,最大60字节

小结

TCP和UDP是网络运输层中主要的协议,其中TCP的原理很复杂,在该片文章中没有着重讲解,只是简单介绍一下这两个协议和这两个协议的区别。

  • 参考:
    计算机网络(第七版)谢希仁 著

猜你喜欢

转载自blog.csdn.net/weixin_45893787/article/details/125874374
今日推荐