admin管理员组

文章数量:1130349

途游游戏(后端一面)

1. 传输层的报头是什么?

TCP 报头至少包含 20 字节的固定字段,若有选项字段可扩展至 60 字节。具体结构如下图:

例如,TCP 三次握手时,第一个报文的 SYN 标志位为 1,序号为随机值;第二个报文的 SYN 和 ACK 标志位均为 1,确认号为对方序号 + 1,通过这些字段完成连接建立。

UDP 是无连接协议,报头仅 8 字节,结构简洁,不包含可靠性相关字段,具体如下图:

UDP 的简洁性使其适用于实时场景(如视频通话、DNS 查询),但因无重传和排序机制,可能出现丢包或乱序。

2. TCP协议特点是什么?

TCP是可靠的传输协议,其设计围绕 “可靠传输” 和 “有序交互” 展开,确保数据从发送方到接收方的过程中 “不丢、不重、不错序”。

  • 特点一:面向连接 。通信前必须 “握手” 建立关系,TCP 不像 UDP 那样 “发完就走”,而是在传输数据前必须通过三次握手建立连接,结束后通过四次挥手断开连接。

  • 特点二:可靠传输 。TCP 通过多重机制保证数据可靠到达,核心手段包括:序号与确认机制:每个数据包都带有唯一序号,接收方收到后会返回确认报文(ACK)。若发送方超时未收到 ACK,会自动重传该数据包(解决丢包问题)。重传机制:针对两种场景触发重传:一是发送方等待超时(如网络延迟导致 ACK 未及时返回);二是接收方收到乱序或重复数据包时,通过 ACK 告知发送方 “需要重传某序号的包”(解决错序、重复问题)。

  • 特点三:有序传输。TCP 会给每个数据包按发送顺序编号(如 1、2、3…),接收方收到后会按序号重新排序,再交给应用层(如浏览器、聊天软件)。假设发送方按顺序发送数据包 1、2、3,若接收方先收到 3,再收到 1、2,TCP 会将其整理为 1、2、3 的顺序后再交付,避免应用层处理混乱的数据。

  • 特点四:流量控制。接收方的缓存空间有限(如手机内存不足),若发送方发送速度过快,接收方可能来不及处理,导致数据溢出丢失。TCP 通过滑动窗口机制解决这一问题:接收方在 ACK 报文中告知发送方自己的 “接收窗口大小”(即当前能接收的最大数据量)。发送方根据接收窗口动态调整发送速率,确保发送的数据量不超过接收方的处理能力。

  • 特点五:拥塞控制。TCP 通过慢启动、拥塞避免、快重传、快恢复等算法,动态调整发送速率,防止因数据量过大导致网络拥塞(路由器缓存溢出、丢包激增)。其核心逻辑是:网络通畅时逐步加快发送速度,检测到拥塞(如丢包)时立即减速,平衡 “传输效率” 和 “网络稳定性”,同时保证多个 TCP 连接公平共享带宽。

TCP 的上述特点使其成为需要高可靠性场景(如网页浏览、文件传输、邮件发送)的首选协议,但也因此比 UDP 更复杂,额外的握手、确认、重传机制会带来一定的延迟和开销。相比之下,UDP 更适合实时性要求高(如视频通话、游戏)但可容忍少量丢包的场景。

3. TCP 拥塞控制的过程是怎样的?

整个过程可分为四个核心阶段:慢启动、拥塞避免、拥塞检测、快速恢复。

  • 慢启动:连接建立时,cwnd初始化为1 个 MSS(最大段大小)。每收到一个 ACK,cwnd增加 1 个 MSS(指数增长:1→2→4→8...)。比如初始cwnd=1,发送 1 个段,收到 ACK 后cwnd=2;再发送 2 个段,收到 2 个 ACK 后cwnd=4,以此类推。当cwnd ≥ ssthresh时,切换到拥塞避免阶段。

  • 拥塞避免:每收到一轮 ACK(窗口内所有段的确认),cwnd增加 1 个 MSS/cwnd(线性增长:如cwnd=10时,每轮 ACK 后cwnd=10+1=11)。若发生拥塞(超时或 3 个重复 ACK),进入拥塞检测

  • 拥塞检测:当检测到拥塞时,TCP 通过以下两种方式应对:

    • 超时重传:长时间未收到 ACK,通常意味着网络严重。ssthresh设为当前cwnd一半(即ssthresh = cwnd/2)。cwnd重置为1 个 MSS,重新进入慢启动

途游游戏(后端一面)

1. 传输层的报头是什么?

TCP 报头至少包含 20 字节的固定字段,若有选项字段可扩展至 60 字节。具体结构如下图:

例如,TCP 三次握手时,第一个报文的 SYN 标志位为 1,序号为随机值;第二个报文的 SYN 和 ACK 标志位均为 1,确认号为对方序号 + 1,通过这些字段完成连接建立。

UDP 是无连接协议,报头仅 8 字节,结构简洁,不包含可靠性相关字段,具体如下图:

UDP 的简洁性使其适用于实时场景(如视频通话、DNS 查询),但因无重传和排序机制,可能出现丢包或乱序。

2. TCP协议特点是什么?

TCP是可靠的传输协议,其设计围绕 “可靠传输” 和 “有序交互” 展开,确保数据从发送方到接收方的过程中 “不丢、不重、不错序”。

  • 特点一:面向连接 。通信前必须 “握手” 建立关系,TCP 不像 UDP 那样 “发完就走”,而是在传输数据前必须通过三次握手建立连接,结束后通过四次挥手断开连接。

  • 特点二:可靠传输 。TCP 通过多重机制保证数据可靠到达,核心手段包括:序号与确认机制:每个数据包都带有唯一序号,接收方收到后会返回确认报文(ACK)。若发送方超时未收到 ACK,会自动重传该数据包(解决丢包问题)。重传机制:针对两种场景触发重传:一是发送方等待超时(如网络延迟导致 ACK 未及时返回);二是接收方收到乱序或重复数据包时,通过 ACK 告知发送方 “需要重传某序号的包”(解决错序、重复问题)。

  • 特点三:有序传输。TCP 会给每个数据包按发送顺序编号(如 1、2、3…),接收方收到后会按序号重新排序,再交给应用层(如浏览器、聊天软件)。假设发送方按顺序发送数据包 1、2、3,若接收方先收到 3,再收到 1、2,TCP 会将其整理为 1、2、3 的顺序后再交付,避免应用层处理混乱的数据。

  • 特点四:流量控制。接收方的缓存空间有限(如手机内存不足),若发送方发送速度过快,接收方可能来不及处理,导致数据溢出丢失。TCP 通过滑动窗口机制解决这一问题:接收方在 ACK 报文中告知发送方自己的 “接收窗口大小”(即当前能接收的最大数据量)。发送方根据接收窗口动态调整发送速率,确保发送的数据量不超过接收方的处理能力。

  • 特点五:拥塞控制。TCP 通过慢启动、拥塞避免、快重传、快恢复等算法,动态调整发送速率,防止因数据量过大导致网络拥塞(路由器缓存溢出、丢包激增)。其核心逻辑是:网络通畅时逐步加快发送速度,检测到拥塞(如丢包)时立即减速,平衡 “传输效率” 和 “网络稳定性”,同时保证多个 TCP 连接公平共享带宽。

TCP 的上述特点使其成为需要高可靠性场景(如网页浏览、文件传输、邮件发送)的首选协议,但也因此比 UDP 更复杂,额外的握手、确认、重传机制会带来一定的延迟和开销。相比之下,UDP 更适合实时性要求高(如视频通话、游戏)但可容忍少量丢包的场景。

3. TCP 拥塞控制的过程是怎样的?

整个过程可分为四个核心阶段:慢启动、拥塞避免、拥塞检测、快速恢复。

  • 慢启动:连接建立时,cwnd初始化为1 个 MSS(最大段大小)。每收到一个 ACK,cwnd增加 1 个 MSS(指数增长:1→2→4→8...)。比如初始cwnd=1,发送 1 个段,收到 ACK 后cwnd=2;再发送 2 个段,收到 2 个 ACK 后cwnd=4,以此类推。当cwnd ≥ ssthresh时,切换到拥塞避免阶段。

  • 拥塞避免:每收到一轮 ACK(窗口内所有段的确认),cwnd增加 1 个 MSS/cwnd(线性增长:如cwnd=10时,每轮 ACK 后cwnd=10+1=11)。若发生拥塞(超时或 3 个重复 ACK),进入拥塞检测

  • 拥塞检测:当检测到拥塞时,TCP 通过以下两种方式应对:

    • 超时重传:长时间未收到 ACK,通常意味着网络严重。ssthresh设为当前cwnd一半(即ssthresh = cwnd/2)。cwnd重置为1 个 MSS,重新进入慢启动

本文标签: 后端面试题最新java