首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

iOS 面試必備:TCP 協議原理與即時通訊(IM)架構核心要點

     編輯:程式設計疑難解答

TCP 核心考點

  • 三次握手 / 四次揮手:狀態遷移圖、TIME_WAIT 作用、半連接隊列攻擊(SYN Flood)。
  • 可靠傳輸機制:序號、確認號、滑動窗口、流量控制、拥塞控制(慢啟動、拥塞避免、快速重傳、快速恢復)。
  • 粘包/拆包:原因(流式傳輸無邊界),解決(定長、分隔符、長度前綴、協議如 Protobuf)。
  • Socket API:socket/bind/listen/accept/connect/send/recv、非阻塞 fcntl/epoll/kqueue。

即時通訊(IM)架構

  1. 長連接保活:心跳包(Ping/Pong)、TCP Keepalive(系統級,間隔長)、應用層心跳(業務級,可攜帶狀態)。
  2. 消息路由:單聊(用戶 ID → Gateway → Message Server → 目標 Gateway → 客戶端)、群聊(扇出/多播/群組服務)。
  3. 離線消息:消息持久化(Kafka/Redis/RocketMQ),上線推送(APNs/FCM/自建推送通道)。
  4. 序列化協議:Protobuf/FLatBuffers 比 JSON 體積小 50%+,解析快。
  5. 高可用:Gateway 無狀態水平擴展、一致性哈希路由、多機房容災。

iOS 實現要點

  • 使用 NWConnection (Network.framework) 或 GCDAsyncSocket 封裝 TCP 長連接。
  • App 進入後台 3 分鐘後系統切斷 Socket,需結合 VoIP Push / Background Modes → Voice over IP 維持或快速重連。
  • 自動重連策略:指數退避 + 抖動,避免驚群效應。

面試回答模板

「TCP 提供可靠有序的位元組流,三次握手建立連接,四次揮手釋放。IM 基於 TCP 長連接,應用層心跳保活,Protobuf 序列化,Gateway 無狀態路由,離線消息經消息隊列持久化並推送。iOS 用 Network.framework 管理連接,後台依賴 VoIP Push 重連。」

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved