TCP和UDP的区别

简述

UDP和TCP是TCP/IP体系结构中的运输层中的很重要的两个协议

image-20201223085551416

  • UDP全称是用户数据报协议

  • TCP全称是传输控制协议

接下来,我们从几个方面来谈一下两者的区别

区别

是否面向连接

  • 因特网上两台主机,使用UDP协议进行通信,使用UDP协议的通信双方是可以随时进行数据传输

  • 因特网上两台主机,如果使用TCP协议进行通信

    • 通信双方在数据传输前需要三次握手进行连接
    • 通信双方在数据传输后需要四次挥手释放连接

image-20201225145420184

是否支持广播或多播

  • 在某个局域网上通过UDP协议进行通信的四台主机,任何一台主机都可以向其他三台主机发送广播,可以向某个多播组发送多播,也可以向某台主机发送单播

  • 在某个局域网上通过TCP协议进行通信的四台主机,任何一台主机可以和某一台主机建立“三次握手”连接,进行数据传输,即TCP仅仅支持单播

image-20201225145559152

报文是面向字节流或报文段

UDP

  • 应用层将报文交付给UDP,UDP直接给应用层报文添加一个UDP首部,然后直接发送给接收方

  • UDP一次发送一个报文,而且UDP对应用层交下来的报文既不会拆分,也不会合并。换而言之,UDP是面向应用报文的

image-20201225145747917

TCP

  • 发送方的TCP把应用进程交付下来的报文数据块仅仅看成是无结构的字节流,发送方TCP会将数据放入“蓄水池”(缓冲区),等到可以发送的时候就发送,不能发送就等着,TCP会根据发送策略发送给接受方,换而言之,TCP是面向字节流的

image-20201225145845570

首部对比

  • UDP数据报首部包括了源端口、目的端口、长度、检验和,首部仅有8个字节构成,首部开销小

  • TCP的首部从图中可以看到最小长度是20字节,最大长度是60字节,这是因为TCP要实现可靠传输、拥塞控制、流量传输

image-20201223133938786-1608824997859

image-20201223134136608

向上层提供的服务

UDP向其上层提供无连接不可靠传输服务

  • 主要体现在发送方给接收方发送用户数据报,传输过程中用户数据报受到干扰而产生误码,接收方UDP可以通过该数据报首部校验和的值检查出误码,但是仅仅丢弃,其他什么都不做
  • 或者发送方给接收方发送数据报,该数据报被因特网中的某个路由器丢弃了,发送方UDP不做任何处理
  • 它并不关心数据时候被另一端收到

image-20201223135118340

  • UDP适用于实时性要求高的场景,比如视频会议、直播等等
  • 举一个视频会议的例子,因为用户一般来说可以接受图像稍微模糊一点,声音稍微不清晰一点
  • 但是如果在几秒钟以后再出现之前丢失的画面和声音,这恐怕是很难接受的
  • 这也说明了不可靠传输,意味着如果数据丢失的话,不会有重传

TCP向其上层提供面向连接可靠传输服务

  • 使用TCP协议的收发双方不会出现上面误码,丢失的情况
  • TCP的可靠性体现在
    • TCP在传递数据前,会有三次握手来建立连接
    • 而且在数据传递的时候,有确认、窗口、重传、拥塞控制机制
    • 数据传递完之后释放连接以节约资源
  • TCP适用于要求可靠传输的应用,文件传输,查看网页
    • 当我们想查看网页,希望完整且按顺序查看网页,不丢失任何内容
    • 当你下载文件,希望得到的是完整的文件,而不仅仅是文件的一部分
    • 应用层HTTP和FTP基于TCP协议

image-20201225150408144

当面试官问你,你应该怎么回答?

首先呢,UDP和TCP是TCP/IP体系结构中的运输层中的很重要的两个协议

UDP全称是用户数据报协议,而TCP全称是传输控制协议
两者的区别主要体现在以下五个方面
第一点

使用UDP协议的通信双方是可以随时进行数据传输,无需建立连接
而TCP提供面向连接服务,在传送数据前需要三次握手建立连接,在传送数据后需要四次挥手释放连接
第二点

UDP提供了广播,多播,单播的服务,而TCP仅仅支持单播
第三点

UDP是面向应用报文,UDP对应用层交下来的报文,既不会拆分,也不会合并
TCP是面向字节流的,发送方的TCP把应用进程交付下来的报文数据块,看成是无结构的字节流
发送方TCP会将数据放入缓冲区,等到可以发送的时候再发送,TCP会根据发送策略,发送给接受方
第四点

UDP首部开销小,只有8字节,TCP的首部,最小长度是20字节,最大长度是60字节
主要原因是TCP要实现可靠传输、拥塞控制、流量传输等等
第五点

UDP向其上层提供无连接不可靠传输服务,数据可能会发生丢失,误码,但是传输效率高
所以常用于实时性要求高的场景,比如视频会议,因为我们可以接受图像稍微模糊一点,声音稍微不清晰一点
TCP向其上层提供面向连接可靠传输服务,主要适用于要求可靠传输的应用
比如文件传输,当我们下载文件,希望得到的是完整的文件,而不仅仅是文件的一部分
以上,就是我对这个问题的理解

posted @ 2020-12-25 15:11  DJ同学  阅读(500)  评论(0编辑  收藏  举报