网络

一、 OSI七层协议

互联网的本质是一系列的网络协议,这个协议就叫做OSI(开放系统互连)协议

1. 应用层
  • 规定应用程序的数据格式
    http: 超文本传输协议;开发中使用最多的一个协议!
    https: 安全协议;https == http + ssl
    file: 访问本地文件协议
    mailto: 邮件协议
2. 表示层(数据格式转化)
  • 不同的系统语法肯定不同!解决不同系统之间通信的语法问题的!
3. 会话层(会话控制)
  • 建立了一套自动的管理应用程序之间通信的框架/自动收发消息
4. 传输层(端到端)
  • 在这一层,数据的单位称为数据段(segment)
  • “应用程序” 到 “应用程序” 之间的通讯
  • “端口” 到 “端口” 之间的通讯
    传输层有两个协议:
    TCP 协议:安全协议/三次握手协议:建立连接需要三次!数据包不会丢失!
    UDP 协议:报文头协议/ 简单/快捷
5. 网络层(路由选择,点到点)
  • 在这一层,数据的单位称为数据包(packet)
  • “主机” 到 “主机” 之间的通讯!
  • 为了寻找网络中唯一的一台计算机!引入了一套地址机制:网络地址/网址/IP地址
  • IP地址按照协议版本:IPv4 IPv6
  • IP地址:用来确定网络中唯一的一台!内网地址/外网地址。
  • 子网掩码:用来确定计算机所在的子网络!与IP 地址做“与/和运算”。
  • 路由器/网关:路由器地址/管理员地址
  • DHCP 协议: 自动获取IP地址的协议
6. 数据链路层(交换机)
  • 在这一层,数据的单位称为帧。
  • 物理层的数据都是,高低电平信息,需要经过对 “0101”数据进行分组,得到有用的信息
  • 将物理层的数据分组并且规定解读方式,数据经过数据链路层后就有意义了
7. 物理层(网卡)
  • 数模转换
  • 在这一层,数据的单位称为比特(bit)。
  • 将两台设备连接在一起.
  • 负责传递电信号(传递数据),物理设备只能传递电信号 (高(1) 低(0)电平).
  • 两台电脑连接的方式.
    1. 网线(普通网线的长度一般不能超过100米,信号会大幅衰弱,可以使用信号放大器)
    2. 无线电波
    3. 光缆
    4. 光纤


      七层协议框架图

      详情图

二、TCP/IP参考模型

在 OSI 基础上的精简

  • 五层
    1. 应用层(应用层、表示层、会话层)
    2. 传输层
    3. 网络层
    4. 数据链路层
    5. 物理层
  • 四层
    1. 应用层
    2. 传输层
    3. 网络层
    4. 网络接口层(数据链路层、物理层)

三、传输层协议

传输层协议:
TCP:可靠传输,链接需要三次握手,断开需要四次挥手
UDP:不可靠传输


四、HTTP&HTTPS

1. http

报文格式:

  • 请求:

    1. 请求行:请求方法,URL,HTTP版本号
    2. 请求头:Host,User-Agent,Content-Type,Content-Length,Accept,Accept-Language,Accept-Encoding,Cookie,Connection(是否长连接)
    3. 请求体:GET请求请求体为空
  • 响应:

    1. 状态行:HTTP版本号,状态码(100临时响应,200成功,300重定向,400客户端错误,500服务端错误)
    2. 响应头:Server,Age(响应持续时间),Set-Cookie,Connection,
    3. 响应体
  • get


    image.png
  • post


    image.png

2. https

  • http + ssl

3. WebSocket

  • WebSocket是一种双向通信协议。iOS一般用SocketRocket

五、 iOS&JS交互

JS调原生

- (void)addScriptMessageHandler:(id )scriptMessageHandler name:(NSString *)name;
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message;中执行

原生调JS:

- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler;

# iOS 唤起APP之Universal Link(通用链接)

你可能感兴趣的:(网络)