美文网首页iOS 开发 Objective-C
iOS 笔记 HTTP HTTPS Socket IM

iOS 笔记 HTTP HTTPS Socket IM

作者: 望穿秋水小作坊 | 来源:发表于2020-11-04 17:46 被阅读0次
1. Socket 是什么?

Socket 是通信的基石,是位于网络层和应用层之间的抽象层,是一组 Socket API。包含进行网络通信必须的五种信息:连接使用的协议,本地主机的 IP 地址,本地进程的协议端口,远程主机的 IP 地址,远程主机进程的协议端口。

2. Socket 同时支持 TCP 和 UDP 两种传输协议,啥意思呢?
  • 当 Socket 使用 TCP 协议通信的时候,Socket 就是 TCP 连接。
  • 当 Socket 使用 UDP 协议通信的时候,Socket 就是 UDP 连接。
3.互联网协议如果分五层的话,是哪五层?
五层结构
4. HTTP、TCP、IP、Socket 和互联网协议的五层有什么关系?
  • HTPP 协议:对应着应用层(主要解决如何包装数据)
  • TCP 协议:对应着传输层 (主要解决数据传输)
  • IP协议:对应着网络层
  • HTTP 是基于 TCP/IP 的
  • Socket 是应用层与传输层中间的抽象层,它是一组接口
5. 互联网协议的五层对应我们生活中的那些具体实物?
  • 物理层:中继器、双绞线、集线器
  • 链路层:以太网交换机
  • 网络层:路由器,三层交换机
  • 传输层:四层交换机
6. TCP 和 UDP 的区别?
  • TCP:面向连接,提供可靠的数据传输,使用数据流模式,速度慢,建立连接时开销大
  • UDP:非面向连接,传输不可靠,速度快
7. 简述 TCP 连接建立的三次握手?
  • 客户端向服务端发送 SYN(Synchronize)信号,然后等待服务器响应。
  • 服务端收到 SYN 信号,服务端回客户端 SYN+ACK(Acknowledgement) 信号
  • 客户端收到 SYN+ACK,客户端回服务端 ACK,连接建立成功
8. 简述 TCP 关闭建立的四次挥手?
  • 客户端向服务端发送 FIN,然后进入半关闭状态
  • 服务端收到 FIN,向客户端发送一个 ACK(不能发送 FIN,因为可能服务端还在传输数据)
  • 服务端需要关闭时,想客户端发送 FIN,然后进入半关闭
  • 客户端收到服务端的 FIN 信号,发送 ACK 信号。然后(经过时间等待计时器设置的时间2MSL后)双方关闭连接
9. HTTP 和 HTTPS 的区别?
  • HTTP 是超文本传输协议,信息是明文传输的;HTTPS 是具有安全性的 SSL 加密传输协议。
  • HTTP 占用是 80 端口,HTTPS 占用的 443 端口
  • HTTP 是无状态的
10. Socket 和 HTTP 的区别?
  • 虽然说 Socket 和 HTTP 都是基于 TCP,单通常情况下 Socket 连接就是 TCP 连接,一旦建立了 Socket 连接,双方就可以相互发送数据,直到断开为止。

  • 而 HTTP 他的连接方式是请求 → 响应,不仅要在请求的时候建立好连接,而且要客户端向服务器发送请求后,服务器才能回复数据

11. 为什么 Scoket 都是长连接了还要心跳机制?
  • 客户端需要通过心跳检查服务端有木有因为负载过重或者其他原因断开了 Socket
  • 服务端也一样,会维护一个 Socket 的心跳间隔,当约定时间内没有收到客户端发来的心跳,就知道 Socket 已经失效,然后主动断开 Socket
  • 还有一个主要原因而国内的运营商一般NAT超时的时间为5分钟,所以通常我们心跳设置的时间间隔为3-5分钟
12. 为什么有心跳机制了,还要 Pingpong 机制呢?
  • 很多小伙伴可能又会感觉到疑惑了,那么我们在这心跳间隔的3-5分钟如果连接假在线(例如在地铁电梯这种环境下)。那么我们岂不是无法保证消息的即时性么?这显然是我们无法接受的,所以业内的解决方案是采用双向的PingPong机制。

  • 当服务端发出一个Ping,客户端没有在约定的时间内返回响应的ack,则认为客户端已经不在线,这时我们Server端会主动断开Scoket连接,并且改由APNS推送的方式发送消息。
    同样的是,当客户端去发送一个消息,因为我们迟迟无法收到服务端的响应ack包,则表明客户端或者服务端已不在线,我们也会显示消息发送失败,并且断开Scoket连接。

相关文章

网友评论

    本文标题:iOS 笔记 HTTP HTTPS Socket IM

    本文链接:https://www.haomeiwen.com/subject/onigvktx.html