首页 > 其他分享 >【面试】阐述TCP和UDP的区别

【面试】阐述TCP和UDP的区别

时间:2024-08-19 16:53:51浏览次数:13  
标签:UDP 传输 TCP 面试 拥塞 接收 连接

面试模拟场景

面试官: 你能阐述一下TCP和UDP的区别吗?

###参考回答示例

1. 连接性

TCP:

  • 面向连接(Connection-Oriented): TCP 是一种面向连接的协议,在传输数据之前需要建立连接。在TCP通信过程中,客户端和服务器之间通过“三次握手”来建立连接,然后再进行数据传输,确保两者之间的连接是可靠的。

UDP:

  • 无连接(Connectionless): UDP 是一种无连接的协议,发送数据之前不需要建立连接。数据报文(datagram)直接发送给目标地址,接收方也无需确认接收到的数据。因此,UDP 通信过程更简单,但也不保证数据的可靠传输。

2. 可靠性

TCP:

  • 可靠传输: TCP 通过序列号(Sequence Number)、确认应答(Acknowledgement)、重传机制、超时重传等手段保证数据的可靠性。如果数据包在传输过程中丢失或损坏,TCP会进行重传,确保数据准确无误地到达接收方。
  • 数据完整性: TCP 通过校验和(Checksum)来验证数据的完整性,确保传输的数据不出现错误。

UDP:

  • 不保证可靠性: UDP 采用“尽力而为”的传输方式,不提供数据重传、丢包检测、顺序控制等机制。因此,数据包可能在传输过程中丢失、重复或乱序到达接收方。
  • 适合实时应用: 尽管不可靠,但UDP的低开销使其适合对实时性要求较高的应用,如视频会议、在线游戏等,这些场景可以容忍少量数据丢失。

3. 传输顺序

TCP:

  • 有序传输: TCP 保证数据按顺序到达接收方,即使数据包乱序到达,TCP也会重新排序,确保应用层收到的数据是有序的。

UDP:

  • 无序传输: UDP 不保证数据的顺序性,数据包可能以不同的顺序到达接收方,接收方需要自行处理数据包的顺序问题。

4. 流量控制和拥塞控制

TCP:

  • 流量控制: TCP 采用滑动窗口机制进行流量控制,确保发送方不会超出接收方的处理能力。接收方通过调整窗口大小来控制发送方的数据流量。
  • 拥塞控制: TCP 有一套复杂的拥塞控制机制(如慢启动、拥塞避免、快速重传和快速恢复),用于避免网络拥塞,提升网络效率和稳定性。

UDP:

  • 无流量控制和拥塞控制: UDP 没有内置的流量控制和拥塞控制机制,发送方以最大可能的速率发送数据,而不考虑接收方的处理能力和网络的拥堵情况。

5. 传输效率

TCP:

  • 较高的开销: 由于TCP提供可靠性、流量控制、拥塞控制等功能,这些功能增加了协议的开销,使得TCP在传输效率上略逊于UDP。
  • 适合可靠性要求高的应用: TCP适合需要数据完整、准确传输的应用,如文件传输、电子邮件、远程登录等。

UDP:

  • 低开销,高效率: UDP 的报头只有8字节,协议本身非常简单,没有连接管理和数据确认机制,因此传输效率较高。
  • 适合实时性要求高的应用: UDP适合需要快速传输、实时性高的应用,如视频流、音频流、在线游戏、DNS查询等。

6. 报文格式

TCP:

  • 复杂的报文结构: TCP报文头较长,通常为20到60字节,包含源端口、目的端口、序列号、确认号、数据偏移、标志位、窗口大小、校验和、紧急指针和选项等字段。这些字段提供了丰富的功能支持。

在这里插入图片描述

UDP:

  • 简洁的报文结构: UDP报文头只有8字节,包含源端口、目的端口、长度和校验和。结构简单,开销较低。
    在这里插入图片描述

7. 应用场景

TCP:

  • 典型应用: TCP适用于需要可靠性和顺序性的场景,例如:
    • HTTP/HTTPS: 用于网页浏览。
    • FTP: 文件传输协议。
    • SMTP: 电子邮件传输。
    • SSH: 安全远程登录。

UDP:

  • 典型应用: UDP适用于对实时性要求高,能容忍一定程度数据丢失的场景,例如:
    • DNS: 域名解析服务。
    • 视频/音频流: 实时视频、语音通信。
    • 在线游戏: 低延迟的游戏数据传输。
    • SNMP: 简单网络管理协议。

8. 总结

TCP和UDP在连接性、可靠性、传输顺序、流量控制、传输效率和应用场景等方面有显著区别:

  • TCP提供可靠、有序的连接,适合需要数据完整性的应用,但传输效率较低。
  • UDP提供无连接、不可靠的传输,适合实时性要求高的应用,传输效率较高。

标签:UDP,传输,TCP,面试,拥塞,接收,连接
From: https://blog.csdn.net/Lewiz_124/article/details/141329585

相关文章

  • .NET面试题系列(27)反射
    序言 应该场景数据库对象转实体 publicstaticList<T>TableToList<T>(DataTabletable)whereT:classORMAutoMapperSystem.TypeSystem.Type类对于反射起着核心的作用。但它是一个抽象的基类,Type有与每种数据类型对应的派生类,我们使用这个派生类的对象的方法、字段......
  • 该如何面对大量的简历筛选和繁琐的面试流程???
    在当今这个人才竞争激烈的时代,招聘工作变得越来越复杂和具有挑战性。HR在招聘过程中需要从成百上千的简历中筛选出符合岗位要求的候选人,然后面试官通过面试进一步评估他们的技能和文化适应性。过程不仅耗时而且效率低下,尤其是对于大型企业而言,面对海量的简历和面试,如何快速而准......
  • 常见面试题问题及答案
    常见面试题问题及答案1、什么是API端点(APIendpoint)?说说相关技术点用于访问特定资源或功能的网络地址或URI,代表了API的一个具体操作或服务,并定义了客户端与服务器之间进行交互的方式;1:URI(统一资源标识符),包含了协议(如HTTP/HTTPS)、主机名、路径、查询参数等2:请求方法,GET(获......
  • Mybatis的一些常用知识点(面试)
    什么是MyBatis?Mybatis是⼀个半ORM(对象关系映射)框架,它内部封装了JDBC。它让开发者在开发时只需要关注SQL语句本身,不需要花费精⼒去处理加载驱动、创建连接等繁杂的过程缺点:SQL语句的编写⼯作量较⼤SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库MyBat......
  • UDP的可靠性传输——KCP
    目录一:TCP是怎么做到可靠的?1、UDP和TCP的区别 2、ARQ协议(AutomaticRepeat-reQuest)2.1、ARQ协议-停等式(stop-and-wait)2.2、ARQ协议-回退n帧(go-back-n)2.3、ARQ协议-选择性重传(selectiverepeat)3、RTT和RTO4、流量控制5、如何进行流量控制(滑动窗口)6、流量控......
  • 【TCP/IP】自定义应用层协议,常见端口号
    互联网中,主流的是TCP/IP五层协议5G/4G上网,是有自己的协议栈,要比TCP/IP更复杂(能够把TCP/IP的一部分内容给包含进去了)应用层可以代表我们所编写的应用程序,只要应用程序里面用到了网络通信,就可以认为这个代码就是属于应用层的代码日常开发中最常用到的一层:使用大佬......
  • 【TCP/IP】UDP协议数据格式和报文格式
    学习一个网络协议,主要就是学习“数据格式”/“报文格式”源端口/目的端口端口号是属于传输层的概念UDP报头使用两个自己的长度来表示端口号之所以端口号的范围是0~65535,是因为底层网络协议做出了强制要求如果使用一个10w这样的端口,就会在系统底层被“截断”UDP......
  • 【面试题 02.07. 链表相交 简单】
    题目:同:160.链表相交给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。示例1......
  • 2024年Java面试题最新整理
    一、Java基础部分面试题1.Java面向对象的三个特征封装:对象只需要选择性的对外公开一些属性和行为。继承:子对象可以继承父对象的属性和行为,并且可以在其之上进行修改以适合更特殊的场景需求。多态:允许不同类的对象对同一消息做出响应。篇幅限制下面就只能给大家展示小册部分内容......
  • IC验证面试经验分享——UVM篇
    验证最需要会的技能树是什么?!那肯定是非UVM莫属了,趁着校招之际,准备IC面试的ICer赶快码住!IC验证面试经验分享UVM篇一、UVM验证平台组件二、UVM_component和uvm_object三、sequence启动方式四、seqence是怎么给到dut的?五、p_sequencer和m_sequencer的区别1)含义2)区别六、......