前言

TCP和UDP都位于计算机网络模型中的运输层,它们负责传输应用层产生的数据。在面试中也经常会问TCP和UDP的区别,下面我们将从几个方面来聊一聊TCP和UDP两者的区别。

文章目录

  • 前言
  • 1、概念
  • 2、从是否面向连接来看
    • 2.1、UDP
    • 2.2、TCP
  • 3、从连接对象个数来看
    • 3.1、UDP
    • 3.2、TCP
  • 4、从对应用报文的处理来看
    • 4.1、UDP
    • 4.2、TCP
  • 5、从向其上层提供传输服务来看
    • 5.1、UDP
    • 5.2、TCP
  • 6、从首部格式来看
    • 6.1、UDP
    • 6.2、TCP
  • 7、总结

1、概念

UDP和TCP 在使用TCP/IP 体系结构的网络通信中,这两个协议的使用频率仅次于网际层的IP协议。TCP/IP 体系结构应用层中的某些协议需要使用运输层的TCP 提供的服务,而另一些协议需要使用运输层的UDP 提供的服务,UDP 是用户数据报协议的英文缩写词TCP 是传输控制协议的英文缩写词。

2、从是否面向连接来看

如下图所示,两个小电脑图标代表英特网上的两台主机,纵坐标为时间。

2.1、UDP

两台主机如果在运输层使用UDP协议进行通信,双方可以随时发送数据,因此UDP是无连接的。

2.2、TCP

再来看使用TCP 协议的情况,使用TCP协议的通信,双方在进行数据传输之前必须使用三报文握手来建立TCP 连接。TCP 连接建立成功后才能进行数据传输,数据传输结束后必须使用四报文挥手来释放TCP连接。需要注意的是这里所谓的连接是指逻辑连接关系,而不是物理连接,综上所述UDP是无连接的,而TCP是面向连接的。

3、从连接对象个数来看

3.1、UDP


下图是某个局域网上的使用UDP协议进行通信的四台主机,其中任何一台主机都可向其他三台主机发送广播,也可以向某个多播组发送多播,还可以向某台主机发送单播。也就是说UDP支持单播多播以及广播,换句话说UDP支持一对一,一对多以及一对全的通信。


一台主机向其他三台主机发送广播:

向某个多播组发送多播:

向某台主机发送单播:


3.2、TCP

再来看使用TCP协议的情况。使用TCP协议的通信,双方在进行数据传输之前必须使用三报文握手来建立TCP连接。TCP连接建立成功后

,通信双方之间就好像有一条可靠的通信信道,通信双方使用这条基于TCP连接的可靠信道进行通信。很显然,TCP仅支持单播,也就是一对一的通信。


三报文握手”建立TCP连接:

基于TCP连接的可靠信道:


4、从对应用报文的处理来看

4.1、UDP

先来看使用UDP协议的情况。发送方的应用进程将应用层报文交付给运输层的UDP,UDP直接给应用层报文添加一个UDP首部,使之成为UDP用户数据报,然后进行发送。需要说明的是,为了简单起见,我们忽略运输层下面的各层处理。

接收方的UDP收到该UDP用户数据报后,去掉UDP首部,将应用层报文交付给应用进程。也就是说,UDP对应用进程交下来的报文既不合并也不拆分,而是保留这些报文的边界。换句话说,UDP是面向应用报文的。

4.2、TCP

再来看使用TCP协议的情况。

发送方:

  • 1、发送方的TCP把应用进程交付下来的数据块仅仅看作是一连串的无结构的字节流,TCP并不知道这些带传送的字节流的含义。
  • 2、发送方将他们编号并存储在自己的发送缓存中。
  • 3、TCP根据发送策略,从发送缓存中提取一定数量的字节构建TCP报文段并发送。

接收方:

  • 1、接收方的TCP一方面从所接收到的TCP报文段中取出数据载荷部分,并存储在接收缓存中,一方面将接收缓存中的一些字节交付给应用进程。

  • 2、TCP不保证接收方应用进程所收到的数据块与发送方应用进程所发出的数据块具有对应大小的关系(例如,发送方应用进程交给发送方的TCP共10个数据块,但接收方的TCP可能只用了4个数据块,就把收到的字节流交付给了上层的应用进程,但接收方收到的字节流必须和发送方应用进程发出的字节流完全一样。)当然,接收方的应用进程必须有能力识别收到的字节流,并把它还原成有意义的应用层数据。

因此,TCP是面向字节流的,这正是TCP 实现可靠传输、流量控制以及控制的基础。

需要说明的是,为了突出示意图的要点,我们只画出了一个方向的数据流。在实际网络中,基于TCP连接的两端,可以同时进行TCP 报文段的发送和接收,也就是全双工通信。另外,图中的数据部分只包含了几个字节,实际当中一个TCP报文段包含上千个字节是很常见的。

5、从向其上层提供传输服务来看

5.1、UDP

TCP/IP体系结构的网际层向其上层提供的是无连接不可靠的传输服务,当运输层使用UDP协议时,向其上层提供的也是无连接不可靠的传输服务。

发送方给接收方发送UDP用户数据报,若传输过程中用户数据报受到干扰而产生误码,接收方UDP可以通过该数据报首部中的校验和字段的值检查出产生物码的情况,但仅仅丢弃该数据报其他什么也不做。

发送方给接收方发送UDP用户数据报,如果该数据报被英特网中的某个路由器丢弃了,发送方UDP不做任何处理,因为UDP向上层提供的是无连接不可靠的传输服务。

因此,对于UDP用户数据报出现的物码和丢失等问题,UDP并不关心,基于UDP的这个特点,UDP适用于实时应用例如IP电话、视频会议等。

5.2、TCP

再来看使用TCP协议的情况,尽管网际层中的IP协议向上层提供的是无连接不可靠的传输服务,也就是说,IP数据报可能在传输过程中出现丢失,误码,但只要运输层使用TCP协议,就可向其上层提供面向连接的可靠传输服务。

我们可将其想象成使用TCP协议的收发,双方基于TCP连接的可靠性到进行数据传输,不会出现误码丢失、乱序以及重复等传输差错。因此,TCP适用于要求可靠传输的应用,例如文件传输。

6、从首部格式来看

6.1、UDP

一个UDP用户数据报由首部和数据载荷两部分构成,其首部格式如下图所示:

仅有4个字段,每个字段长度为2个字节,由于UDP不提供可靠传输服务,它仅仅在网际层的基础上添加了用于区分应用进程的端口,因此他的首部非常简单,仅有8个字节。

6.2、TCP

一个TCP报文段由手部和数据载荷两部分构成,其首部格式如下图所示:

这比UDP用户数据报的首部复杂的多,其最小长度为20字节,最大长度为60字节,这是因为TCP要实现可靠传输、流量控制控制等服务,其首部自然会比较复杂,首部中的字段比较多,首部长度也比较长。

7、总结

UDP和TCP对比表格:

类型 是否面向连接 传输可靠性 传输形式 传输效率 所需资源 应用场景 首部字节
TCP 可靠 字节流 文件传输、邮件传输 20~60个字节
UDP 不可靠 数据报文段 即时通讯、域名转换 8个字节

UDP和TCP对比图:


如果我的文章对你有帮助的话,欢迎一键三连!!!

面试官:TCP和UDP两者的区别是什么?相关推荐

  1. python怎么接收udp报文_面试官:说说UDP和TCP的区别及应用场景

    上一篇聊完一文彻底搞懂 TCP三次握手.四次挥手过程及原理 这次聊聊TCP和UDP的区别和场景 TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP.来看看传输层位于OSI七层协议 ...

  2. 某大厂面试官被吐槽不讲武德,评论区网友疯狂“补刀”

    俗话说得好,MySQL学得好,工作随便找. MySQL作为开发工程师的必备技能,非常易学,好上手.但播妞也发现,在许多同学应对大厂面试时,最容易遭遇滑铁卢.功败垂成的也是它. 上手简单,玩转难,是这款 ...

  3. 【面试】TCP、UDP、Socket、HTTP网络编程面试题

    文章目录 什么是网络编程 网络编程中两个主要的问题 网络协议是什么 为什么要对网络协议分层 计算机网络体系结构 1 TCP / UDP 1.1 什么是TCP/IP和UDP 1.2 TCP与UDP区别: ...

  4. 跟Java面试官对线的一天!唬住就要50K,唬不住就要5K

    个人面经 前言 JVM篇 计网篇 Java基础篇 多线程篇 Spring框架篇 MyBatis框架篇 MySQL篇 Redis篇 分布式.微服务篇 小结 前言 不积跬步无以至千里,不积小流无以成江海 ...

  5. 面试官问我JVM内存结构,我真的是

    面试官:今天来聊聊JVM的内存结构吧? 候选者:嗯,好的 候选者:前几次面试的时候也提到了:class文件会被类加载器装载至JVM中,并且JVM会负责程序「运行时」的「内存管理」 候选者:而JVM的内 ...

  6. 你遇到的面试官是「伯乐」吗?

    之前写了一篇应应聘者视角的「面试中要注意的点」,<聊聊面试的事(应聘方)>.这次再来一篇面试官视角的. 如果你不是面试官,也没关系.所谓"知己知彼,方能百战百胜",了解 ...

  7. 美团四面 Java 岗,终获 offer,我是这么回答面试官的

    前言 经历了 10 月的疫情挣扎与 11 月失业的煎熬,终于来到了春末的 12 月,内心的压力也稍稍的松懈了一些,终于可以放心找个工作了,可是随着的等待面试的机会的越来越少,这份焦虑反而越来越大,也偶 ...

  8. 对TCP和UDP的简单理解——通俗易懂,图文并茂

    前言 tcp协议和udp协议都在传输层工作,他们的目标都是在程序之间传输数据(可是文本,图片,视频)对于tcp和udp都是二进制数. TCP和UDP之间的区别是什么? TCP是基于连接的,而UDP是基 ...

  9. 阿里面试官常问的TCP和UDP,你真的弄懂了吗?

    作为软件测试,大家都知道一些常用的网络协议是我们必须要了解和掌握的,面试的时候面试官也非常喜欢问一些协议相关的问题,其中有两个协议因为非常基础,出现的频率非常之高,分别是 "TCP 协议&q ...

  10. 关于面试中的TCP和UDP怎么用自己的话给面试官说

    从春招也就是2.19开始面试,到现在的9.27签了腾讯三方,终于可以休息下了,也算是对自己15年的读书生涯有了一个交代.这一篇的话我就讲讲如何给面试官说TCP和UDP,而且也会让面试官感觉你对这一块有 ...

最新文章

  1. 全网把Map中的hash()分析的最透彻的文章,别无二家。
  2. 谷歌发布 RLDS,在强化学习生成、共享和使用数据集
  3. 自动驾驶中可解释AI综述和未来研究方向
  4. 047_Unicode对照表十三
  5. jquery选择器连续选择_JQuery中的选择器
  6. 利用钩子机制取得Windows的消息监控权
  7. validform 一行代码完成所有验证
  8. 网络管理与维护作业12
  9. Spark SQL运行架构
  10. 手把手教你强化学习 (七) 强化学习中的无模型控制
  11. pycharm安装scrapy失败_python爬虫框架scrapy
  12. python抓取直播源 并更新_如何抓取和转换播放电视直播源m3u8?
  13. 关于男生追女生的数学模型【转王博】
  14. h5页面如何切图_HTML5自助切图
  15. linux查看气质系统文件命令,气质_ITPUB博客
  16. Jetson TX2实现EfficientDet推理加速(二)
  17. sql语句--模糊查询
  18. 生物AI插图免费领取
  19. 组件 :normal ordered local Broadcasts
  20. 魅族手机刷linux系统下载,把Ubuntu版魅族PRO 5刷成安卓系统

热门文章

  1. PPT排版细节,写给大家看的设计书,完美总结
  2. 应用密码学:协议、算法与C源程序(学习第二章)
  3. verlay虚拟化技术_Overlay解决虚拟化难题 - 节点动态 - 海南师范大学信息网络与数据中心| Network Center HaiNan Normal University...
  4. 计算机职业学校教学论文,中等职业学校计算机教学论文
  5. 中国移动MM,你需要了解
  6. myfiles_WINDOWSXP-KB936929-SP3-X86-CHS.zip
  7. 十个随机数排列(vb代码)
  8. 知识积累:wps宏 开发工具 vb代码 合并多个excel文件到一个excel文件,并去掉表头的方式,宏合并excel表格,多表格合并
  9. Structs2-基础
  10. 编辑器,在线编辑器,微信编辑器,公众号编辑器,UEditor编辑器