iOS 网络相关

作者: A_rcher34 | 来源:发表于2019-05-09 22:35 被阅读4次

概述

  • URL

    • 什么是URL?

      1. URL的全称是UniformResource Locator(统一资源定位符
      2. URL的基本格式 =协议://主机地址/路径
        1. 协议:不同的协议,代表着不同的资源查找方式、资源传输方式
        2. 主机地址:存放资源的主机(服务器)的IP地址(域名)
        3. 资源在主机(服务器)中的具体位置
    • URL中常见的协议

      1. HTTP : 超文本传输协议, 格式是http://
      2. file :访问的是本地计算机上的资源,格式是file://(不用加主机地址)
      3. mailto:访问的是电子邮件地址,格式是mailto:
      4. FTP:访问的是共享主机的文件资源,格式是ftp://
  • HTTP

    • 介绍
      1. http即超文本传输协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,http协议是网络开发中最常用的协议。

      2. Http协议是建立在TCP协议之上的一种应用,由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端的在线状态,需要不断的向服务器发起连接请求。

      3. Http是应用层协议,TCP是传输层协议(位于应用层之下)。

      4. 如果访问远程的网络资源,格式是http://

    • http协议的作用
      1. Http的全称是HypertextTransfer Protocol,超文本传输协议
      2. 规定客户端和服务器之间的数据传输格式
      3. 让客户端和服务器能有效地进行数据沟通
http协议
  • 完整的http通信过程,可以分为2大步骤

    1. 请求 :客户端向服务器索要数据
    2. 响应:服务器返回客户端相应的数据
  • 发送Http请求的方法

    1. 在HTTP/1.1协议中,定义了8种发送http请求的方法
    2. 最常用的是GET和POST(实际上GET和POST都能办到增删改查)
  • GET和POST对比
    • 主要表现在数据传递上

    • GET:

      1. 在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开
      2. 由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB
    • POST:

      1. 发给服务器的参数全部放在请求体
      2. 理论上,POST传递的数据量没有限制
  • GET和POST的选择
    1. 如果要传递大量数据,比如文件上传,只能用POST请求
    2. GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST
      如果仅仅是索取数据(数据查询),建议使用GET
      如果是增加、修改、删除数据,建议使用POST
  • iOS中发送Http请求的方案

    • 苹果原生(自带)
      1. NSURLConnection:用法简单,最古老最经典最直接的一种方案【坑比较多,已经弃用】
      2. NSURLSession:功能比NSURLConnection更加强大,苹果目前比较推荐使用这种技术【2013推出,iOS7开始出的技术】
      3. CFNetwork:NSURL*的底层,纯C语言
    • 第三方框架
      1. ASIHttpRequest:外号“HTTP终结者”,功能极其强大,可惜早已停止更新
      2. AFNetworking:简单易用,提供了基本够用的常用功能,维护和使用者多
      3. MKNetworkKit:简单易用,产自三哥的故乡印度,维护和使用者少
  • Http通信过程

    • 请求

      HTTP协议规定:1个完整的由客户端发给服务器的HTTP请求中包含以下内容 : 请求头、请求体

      请求头:包含了对客户端的环境描述、客户端请求信息等

      GET /minion.png HTTP/1.1   //包含了请求方法、请求资源路径、HTTP协议版本
      Host: 120.25.226.186:32812   //客户端想访问的服务器主机地址
      User-Agent: Mozilla/5.0  //客户端的类型,客户端的软件环境
      Accept: text/html,/   //客户端所能接收的数据类型
      Accept-Language: zh-cn  //客户端的语言环境
      Accept-Encoding: gzip  //客户端支持的数据压缩格式
      

      请求体:客户端发给服务器的具体数据,比如文件数据(POST请求才会有)

    • 响应

      客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端

      HTTP协议规定:1个完整的HTTP响应中包含以下内容

      响应头: 包含了对服务器的描述、对返回数据的描述

      HTTP/1.1 200 OK            //包含了HTTP协议版本、状态码、状态英文名称
      Server:Apache-Coyote/1.1   //服务器的类型
      Content-Type: image/jpeg  //返回数据的类型
      Content-Length: 56811  //返回数据的长度
      Date: Mon, 23 Jun2014 12:54:52 GMT  //响应的时间
      

      响应体:服务器返回给客户端的具体数据,比如文件数据

  • TCP与UDP

    • TCP与UDP的区别
      1. TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。

      2. UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。

    • TCP三次握手:

      指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

      第一次握手:客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

      第二次握手:服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的序列号加1以,即X+1。

      第三次握手:客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1。并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写序列号的+1。

TCP三次握手
  • 开发时到底选择TCP还是UDP:

    • 如果是由客户端间歇性的发起无状态的查询,并且偶尔发生延迟是可以容忍,那么使用HTTP/HTTPS吧。

    • 如果客户端和服务器都可以独立发包,但是偶尔发生延迟可以容忍(比如:在线的纸牌游戏,许多MMO类的游戏),那么使用TCP长连接吧。

    • 如果客户端和服务器都可以独立发包,而且无法忍受延迟(比如:大多数的多人动作类游戏,一些MMO类游戏),那么使用UDP吧。

参考文献

相关文章

  • iOS网络请求相关框架的使用

    iOS网络请求相关框架的使用 iOS网络请求相关框架的使用

  • iOS知识体系总结-网络相关

    注意:更新内容会同步到GitHub iOSWiki-知识体系总结 总结-网络相关 iOS知识点/网络相关 #iOS...

  • iOS网络相关

    网络,常常和多线程搞混,以前想复杂了,其实采用最简洁的使用方式才是推荐的方式。 历史 大约在2012年左右的样子,...

  • iOS网络相关

    SOCKET ➢网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端成为一个"socket"➢应用...

  • iOS网络相关

    网络基础术语 HTTP:超文本传输协议,信息是明文传输的。 HTTPS:添加了加密及认证机制的HTTP,具有安全性...

  • iOS 网络相关

    网络相关的一些基础概念 https://www.jianshu.com/p/0474d72fc1e2 获取设备的外...

  • iOS 网络相关

    概述 URL什么是URL?URL的全称是UniformResource Locator(统一资源定位符)URL的基...

  • iOS 网络相关

    1、TCP/IP 及三次握手 2、socket编程 3、HTTP(图解HTTP) 从输入URL到页面加载发生了什么...

  • iOS-网络相关

    本篇涵盖AFN、ASI、封装网络请求等. 1.iOS网络请求之ASI与AFN的二次封装及意义2.LXNetwork...

  • iOS-网络相关

    第一.HTTP相关 传送门 第二.网络开发 超级传送门 第三.Swift版后台开发 跨星际传送门 ========...

网友评论

    本文标题:iOS 网络相关

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