经典面试题 TCP和UDP有什么区别?

解决面试题,斩获心仪的 Offer


文章目录

  • 经典面试题 TCP和UDP有什么区别?
  • 一、TCP和UDP是什么?
  • 二、TCP和UDP有什么区别?
    • 1.TCP和UDP区别总结
    • 2.TCP三次握手和四次挥手
      • 2.TCP三次握手
      • 2.TCP四次挥手
    • 3.TCP维护可靠的通信方式
    • 4.TCP和UDP使用场景
      • 1.UDP 使用场景:
      • 2.TCP 使用场景:
  • 总结

一、TCP和UDP是什么?

TCP:
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。

UDP:
Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。RFC 768 描述了 UDP。

二、TCP和UDP有什么区别?

1.TCP和UDP区别总结

TCP与UDP区别总结:

  1. TCP面向连接,通过三次握手建立连接,四次挥手接除连接;UDP是无连接的,即发送数据之前不需要建立连接,这种方式为UDP带来了高效的传输效率,但也导致无法确保数据的发送成功。
  2. TCP是可靠的通信方式。通过TCP连接传送的数据,TCP通过超时重传、 数据校验等方式来确保数据无差错,不丢失,不重复,且按序到达;而UDP由于无需连接的原因,将会以最大速度进行传输,但不保证可靠交付,也就是会出现丢失、重复等等问题。
  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流,由于连接的问题,当网络出现波动时,连接可能出现响应问题;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低。
  4. 每一条TCP连接只能是点到点的;而UDP不建立连接,所以可以支持一对一,一对多,多对一和多对多的交互通信,也就是可以同时接受多个人的包。
  5. TCP需要建立连接,首部开销20字节相比8个字节的UDP显得比较大。
  6. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

2.TCP三次握手和四次挥手

2.TCP三次握手

三次握手是TCP用来确保连接可靠建立的方式:

  • 第一次握手: A给B发短信说:“B,你现在有空吗?”
  • 第二次握手: B此时收到了A的信息,然后对A说: “ 我有空,你呢?有空吗? ”
  • 第三次握手: A此时收到了B的确认信息,然后说:“我也有空,那我跟你说个事。”

在三次握手之后,A和B都能确定这么一件事: 双方的通信可以流畅的进行。 这样,双方就可以开始进行正常的对话了。

2.TCP四次挥手

四次挥手是TCP用来确保连接可靠关闭的方式:

  • 第一次挥手: A给B发短信说:“B,我要准备吃饭了?”

  • 第二次挥手: B此时收到了A的信息,然后先对A说: “ 我知道了。”

  • 第三次挥手: B对A说到: “ 我也要准备吃饭了。”然后放下了手机,

  • 第四次挥手: A此时收到了B的确认信息,然后想B发一个包说:“好的,我知道了。”这时才放下手机去吃饭,

在四次挥手之后,A和B都能确定这么一件事: 双方的通信可以正常关闭。 这样,双方就可以确定对方已经完全知晓自己确认要关闭连接。

3.TCP维护可靠的通信方式

  1. 数据分片:在发送端对用户数据进行分片,在接收端进行重组,由TCP确定分片的大小并控制分片和重组;
  2. 到达确认:接收端接收到分片数据时,根据分片数据序号向发送端发送一个确认包;
  3. 超时重发:发送方在发送分片后计时,若超时却没有收到相应的确认包,将会重发对应的分片;
  4. 滑动窗口:TCP连接双方的接收缓冲空间大小都固定,接收端只能接受缓冲区能接纳的数据。
  5. 失序处理:TCP的接收端需要重新排序接收到的数据。
  6. 重复处理:如果传输的TCP分片出现重复,TCP的接收端需要丢弃重复的数据。
  7. 数据校验:TCP通过保持它首部和数据的检验和来检测数据在传输过程中的任何变化。

4.TCP和UDP使用场景

1.UDP 使用场景:

因此UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务,随时都可以发送数据,处理简单且高效。
所以主要使用在以下场景:

  • 包总量较小的通信(DNS、SNMP)
  • 视频、音频等多媒体通信(即时通信)
    QQ就是使用的UDP协议。
  • 广播通信

主要是一切追求速度的场景上

2.TCP 使用场景:

TCP 使用场景:相对于 UDP,TCP 实现了数据传输过程中的各种控制,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。在对可靠性要求较高的情况下,可以使用 TCP,即不考虑 UDP 的时候,都可以选择 TCP。

特别是需要可靠连接,比如付费、加密数据等等方向都需要依靠TCP


总结

面向连接的TCP与无连接的UDP将是网络协议中不可或缺的重要知识点,TCP 和 UDP是TCP/IP 中有两个具有代表性的传输层协议,也是常年常考题型。

希望这个博客能对你有所益处。我是轻王,我为自己代言。

经典面试题 TCP和UDP有什么区别?相关推荐

  1. 经典面试题 HTTPS和HTTP有什么区别?

    经典面试题 HTTPS和HTTP有什么区别? 解决面试题,斩获心仪的 Offer 文章目录 经典面试题 HTTPS和HTTP有什么区别? 一.HTTPS和HTTP是什么? 二.HTTPS和HTTP有什 ...

  2. TCP和UDP协议的区别以及原理

    TCP和UDP协议的区别以及原理 该文章是学习了B站up主的视频做的总结,讲的很通俗易懂,首先感谢博主的分享.视频地址:https://www.bilibili.com/video/BV1kV411j ...

  3. TCP和UDP的详细区别

    TCP和UDP的详细区别 秋招季,总结一波TCP和UDP详细的区别以及TCP相关,哦,除了卖萌我也喜欢分享. 1.      TCP是面向连接的,而UDP是无连接的. 连接的三次握手和断开连接的四次挥 ...

  4. tcp udp区别优缺点_Linux网络编程面试题--tcp和udp的区别

    (1)TCP是基于连接的,UDP是基于无连接的. (2)TCP的数据是可靠的,UDP的数据是不可靠的. (3)TCP的数据是有序的,UDP的数据是无序的. (4)TCP不保存用户边界,UDP保存用户边 ...

  5. TCP与UDP之间的区别

    TCP和UDP区别 OSI 和 TCP/IP 模型在传输层定义两种传输协议:TCP(或传输控制协议)和 UDP(或用户数据报协议). UDP UDP 与 TCP 的主要区别在于 UDP 不一定提供可靠 ...

  6. (转)TCP和UDP之间的区别

    TCP和UDP区别 TCP UDP 是否连接 面向连接 面向非连接 传输可靠性 可靠的 不可靠的 应用场合 传输大量的数据 少量数据 速度 慢 快 OSI 和 TCP/IP 模型在传输层定义两种传输协 ...

  7. TCP与UDP特点与区别

    TCP/IP协议 IP地址(IP Address) 计算机分布在世界各地,要想和它们通信,必须要知道确切的位置.确定计算机位置的方式有多种,IP 地址是最常用的,例如,114.114.114.114 ...

  8. 端口 0-65536 TCP和UDP端口的区别

    1.端口只有0-65535. 这个跟TCP.UDP无关. 2.TCP/UDP有独立的端口空间.比如某个应用使用了TCP的1000端口,另一个也可以使用UDP的1000端口,相互独立. 3.UDP,TC ...

  9. TCP和UDP编程的区别,步骤

    TCP和UDP编程有一些不同的地方总结如下; TCP:  TCP编程的服务器端一般步骤是: 1.创建一个socket,用函数socket(): 2.设置socket属性,用函数setsockopt() ...

  10. TCP与UDP有哪些区别?

    (1)首先,TCP和UDP是TCP/IP体系结构中的传输层中很主要的两个协议,UDP的全称是用户数据报协议,TCP的全称是传输控制协议 (2)区别有五个方面 ①有无连接: 使用UDP协议的通讯双方是随 ...

最新文章

  1. 翻译:CREATE DATABASE语句
  2. springboot中配置了拦截器后,拦截器无效的解决方案之一
  3. 来一波我和朋友们的私房菜!
  4. c++ 互斥量和条件变量
  5. 最全!最完整的设计词法分析程序的代码!!!
  6. 第二阶段个人工作总结04
  7. asurerp可以导出php文件吗,编译前的准备 - PHP 扩展开发及内核应用相关内容 - UDN开源文档...
  8. 数据存储与传输---编码与解码---硬盘和内存要分清!
  9. 爱python的胖虾_爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!
  10. opencv之cv::Mat像素遍历
  11. latex中的对号和错号
  12. 我也不知道取什么标题好了!
  13. 如何速成java_极*Java速成教程 - (2)
  14. 计算机课程总结word,大学生的计算机课程总结word.docx
  15. c# 金额小写转大写(财务金额)
  16. python——spilt和strip用法
  17. 快捷键:浏览器关闭网页的快捷键,切换网页的快捷键,打开网页的快捷键
  18. python flask大作业,疫情数据大屏可视化展示
  19. Matlab之随机森林TreeBagger
  20. Vue table 点击按钮展开折叠面板

热门文章

  1. 存储器——存储器容量扩充
  2. [个人笔记] origin学习 入门教程
  3. cnpack 菜单顺序
  4. Android调用miui给权限,Android跳转至MIUI权限设置页面
  5. 【长文预警】美团联合创始人王慧文清华产品课
  6. sql server 2008 新建服务器注册,SQL Server 2008中不能注册服务器怎么回事
  7. java 纯真ip 乱码_UTF-8使用纯真IP数据库乱码问题
  8. 疫情之下,分享几款免费CRM系统,提高在家办公效率!
  9. 开源免费CRM云端的客户管理系统SuiteCRM简介(视频)
  10. MMORPG大型游戏设计与开发(概述)updated