【华为OD技术面试真题 - 技术面】- Java面试题(15)

华为OD面试真题精选

专栏:华为OD面试真题精选
目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录

封面

介绍下TCP/UDP

TCP(传输控制协议)和 UDP(用户数据报协议)

TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)是两种常见的传输层协议,主要用于不同类型的网络通信。它们各自有不同的特性、应用场景以及优缺点。下面是对这两种协议的详细介绍:

1. TCP(传输控制协议)

TCP 是一种面向连接的协议,它确保数据包的可靠传输。它使用的是连接建立和断开机制,这意味着在数据传输开始之前,发送方和接收方之间需要先建立连接。TCP 协议适用于那些对可靠性要求高的场景。

特性:
  • 面向连接:在数据传输之前,发送端和接收端需要建立一个连接,使用三次握手(3-way handshake)过程来完成连接的建立。
  • 可靠性:TCP 确保数据按顺序到达接收方,并且通过校验和、确认应答、重传机制来保证数据的完整性。
  • 流量控制:TCP 使用滑动窗口协议来控制数据的流量,防止发送过快导致接收方无法处理。
  • 拥塞控制:TCP 还通过算法(如慢开始、拥塞避免)来避免网络拥塞,确保数据传输的高效性。
  • 顺序保证:TCP 确保数据包按发送顺序到达接收方。如果数据包丢失或顺序错乱,会进行重传,确保顺序一致。
工作原理:
  • 三次握手:建立连接时,发送方和接收方通过三次握手的过程来同步各自的初始序列号,确保连接的可靠性。
  • 数据传输:数据按字节流的形式传输,接收方会对每一个收到的数据包进行确认,发送方根据接收方的确认应答进行重传,确保数据的完整性。
  • 四次挥手:连接结束时,发送方和接收方通过四次挥手过程来关闭连接,释放资源。
应用场景:
  • Web 浏览(HTTP/HTTPS)
  • 文件传输(FTP)
  • 电子邮件(SMTP, IMAP, POP3)
  • 远程登录(SSH, Telnet)
优点:
  • 可靠性高,数据传输保证无误。
  • 数据按顺序到达。
缺点:
  • 建立连接需要时间(3次握手),增加延迟。
  • 流量和拥塞控制带来额外的开销。
  • 不适合实时应用,因为延迟较高。

2. UDP(用户数据报协议)

UDP 是一种无连接的协议,相较于 TCP,它提供较低的开销和更少的延迟。UDP 不保证数据的可靠性,数据包可能丢失、重复或无序到达。因此,它适用于对传输速度要求较高,但对可靠性要求不那么严格的应用。

特性:
  • 无连接:UDP 不需要在发送数据之前建立连接,因此减少了建立和断开连接的时间。
  • 不可靠性:UDP 不保证数据包的到达和顺序,不进行任何重传或确认。
  • 无流量控制和拥塞控制:UDP 不会控制发送的速率,因此没有流量控制和拥塞控制机制。
  • 轻量级:UDP 的头部开销非常小,相比 TCP 它传输数据更高效。
工作原理:
  • 数据传输:发送方直接发送数据包给接收方,没有建立连接,也没有确认机制。如果数据丢失或顺序错误,接收方也不会请求重传。
  • 数据报文:UDP 每次发送的数据是一个独立的“数据报”,即使数据包丢失或错乱,UDP 也不进行任何补救。
应用场景:
  • 流媒体(视频、音频传输)
  • 实时通讯(VoIP、在线游戏)
  • DNS 查询
  • SNMP(简单网络管理协议)
  • DHCP(动态主机配置协议)
优点:
  • 速度快,延迟低,适合实时应用。
  • 传输开销小,没有连接建立和维护的过程。
  • 无连接,适合广播、单播等场景。
缺点:
  • 不保证数据的可靠性、顺序和完整性。
  • 不适合需要高可靠性的应用。

3. TCP 和 UDP 的对比

特性 TCP UDP
连接性 面向连接,需要建立连接(3次握手) 无连接,数据包独立发送
可靠性 保证数据按顺序到达,丢失数据会重传 不保证数据到达,也不保证顺序,不重传丢失数据
流量控制 有流量控制和拥塞控制 无流量控制
传输速度 相对较慢,因有重传和确认过程 较快,无重传和确认过程
头部开销 大,通常是20字节以上 小,通常是8字节
适用场景 需要可靠性保证的应用,如 HTTP、FTP、SSH 等 对速度要求高、可容忍丢包的应用,如视频、音频流等

TCP为什么可靠

TCP(Transmission Control Protocol)被设计为一个可靠的传输协议,提供可靠的数据传输服务。它通过一系列机制来确保数据从发送方到接收方的可靠性,以下是 TCP 保证可靠性的几个关键特性:

1. 数据完整性

  • TCP 在发送数据时会计算数据的校验和(Checksum)。在接收方,TCP 会使用相同的算法重新计算接收到的数据的校验和。如果校验和不匹配,数据就被认为是损坏的,接收方会丢弃该数据包并要求重传。

2. 数据顺序保证

  • TCP 使用序列号(Sequence Number)来标识每个数据包。当接收方收到数据包时,它会根据序列号对数据进行排序。即使数据包到达的顺序不同,接收方仍能根据序列号按正确的顺序重组数据。

    • 如果一个数据包丢失或乱序,接收方会按顺序等待并请求重传。

3. 确认应答与重传机制

  • 在 TCP 中,发送方会在发送每个数据包后等待接收方的确认应答(ACK)。接收方收到数据包后,会向发送方发送一个确认信号,告知已经收到的数据包的序列号。

    • 如果发送方在一定时间内没有收到确认应答,它会认为数据包丢失,并会重传该数据包。这保证了数据的可靠传输。

4. 流量控制(Flow Control)

  • TCP 使用滑动窗口机制进行流量控制,以避免发送方发送过快,导致接收方处理不过来。

    • 接收方会告知发送方它的缓冲区大小(即窗口大小),发送方会根据这个信息调整发送速度,从而避免缓冲区溢出和数据丢失。

5. 拥塞控制(Congestion Control)

  • 为了防止网络拥塞,TCP 使用拥塞控制算法(如慢开始、拥塞避免、快速重传、快速恢复等)来动态调整数据的发送速度。

    • 这些机制确保了网络中不会因为数据发送过快而导致网络拥塞,从而减少了丢包和延迟。

6. 三次握手(Three-Way Handshake)

  • 在连接建立时,TCP 使用三次握手来确认双方是否都准备好开始数据传输:

    1. SYN:客户端向服务器发送一个连接请求。
    2. SYN-ACK:服务器响应确认请求。
    3. ACK:客户端确认收到服务器的响应。

    这个过程确保了双方的连接建立是可靠的。

7. 四次挥手(Four-Way Handshake)

  • 在连接断开时,TCP 使用四次挥手来确保双方都知道连接已经关闭,数据传输也已完全结束。这确保了没有数据丢失,并且连接能够安全地关闭。

8. 重传机制(Retransmission)

  • 当发送方没有收到接收方的确认应答时,TCP 会定时进行重传。通过超时重传(Timeout Retransmission)机制,保证丢失的数据包能够及时重传并且最终到达接收方。

9. 流控制和拥塞控

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值