iOS-网络

168 阅读2分钟

1、网络基础

1.1、传输流程

  1. 域名换取ip地址
    • IP:地址 + 端口
  2. 建立连接(三次握手
  3. 传输请求头head
  4. 空行 + 请求体body
  5. 在不需要连接时断开连接(四次挥手

image.png

1.1.1、TCP三次握手
  • TCP三次握手的过程其实就是在:确认通信双方(客户端和服务端)的序列号

    • SYN:同步序列号,解决网络包乱序的问题(随机产生一个值seq
    • ACK:确认标识,解决网络包丢失问题
  • TCP头部格式 008i3skNgy1gvbm49hyr9j60u00vvn2o02.jpg

    • SYN为1时,表示希望创建连接
    • ACK为1时,确认号字段有效
    • FIN为1时,表示希望断开连接
    • RST为1时,表示TCP连接出现异常,需要断开
  • TCP握手流程 image.png

    • 发送端 超时未接收到接收端的应答ACK包时,发送端会重发,超过最大限制后断开
  • 客户端请求连接 --> 服务器同意连接 --> 客户端收到服务器同意回复

  • 三次握手防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误

1.1.2、四次挥手
  • TCP挥手流程 image.png

    • MSL报文最大生存时间,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃
    • 2MSL 是报文一来一回的时间,超过 2MSL 客户端还没收到报文说明服务端已经正常关闭,这样客户端就可以关闭连接了
  • 客户端请求断开(客户端停止发送) --> 服务器确认断开请求(服务器停止接收、等待最后一条数据发送完毕) --> 服务器请求断开(服务器停止发送) --> 客户端确认断开请求(客户端停止接收

  • 四次挥手防止服务端向客户端发送的数据接收不完整(如果客户端没收到最后的数据,服务端自顾自的关闭了链接就导致数据传输不完整)

1.2、OSI七层模型

690219fae5b0587fa26e2dee545e6200~tplv-t2oaga2asx-zoom-in-crop-mark-3024-0-0-0.image.png

  • 应用层协议:HTTP、DNS
  • 传输层协议:TCP、UDP
  • 网络层协议:IP

image.png

  • 应表会传网数物
  • 成帧化:数据不能一次传输完成,要进行分段
    • MTU最大传输单元(576 ~ 1500字节)
    • MSS最大分段大小(536字节)