网络

网络

网络的基本概念

  • 为什么学习网络编程
    • 所有的app都需要用到网络
    • 只有通过网络跟外界进行数据交互、数据更新,应用才能保持新鲜、活力
    • 移动网络应用 = 良好的UI +良好的用户体验 + 实时更新的数据
    • 网络编程是一种实时更新应用数据的常用手段
    • 网络编程是开发优秀网络应用的前提和基础
  • 基本概念:
    • 客户端:移动应用(ios/android等应用)

    • 服务器:为客户端提供服务、提供数据、提供资源的机器

      • 分类:
        • 远程服务器(外网服务器、正式服务器)比如百度的网页,任何人只要联网就能使用,一般应用上线后使用的服务器
        • 本地服务器(内网服务器、测试服务器),开发、测试阶段使用的服务器
    • 请求:客户端向服务器索取数据的一种行为(通过网络向服务器发送一个请求,目的是向服务器索要资源数据)

    • 响应:服务器对客户端的请求作出响应,返回客户端想要的资源(数据)

    • 开发中:搭建UI界面,发送网络请求,刷新界面

HTTP相关概念

  • 如何找到服务器?

    • URL
  • URL

    • Uniform Resource Locator(统一资源定位符)

    • 通过一个URL,能找到互联网上唯一的一个资源

    • URL就是资源的地址、位置,互联网上的每一个资源都有一个唯一的URL

    • URL的基本格式 = 协议://主机地址/路径

    • 协议:不同的协议,代表着不同的资源查找方式,资源传输方式

    • 主机地址:存放资源的主机(服务器)的ip地址(域名)

    • 路径:资源在主机(服务器)中的具体位置

    • 常见协议:

      • HTTP:超文本传输协议,访问的是远程的网络资源,格式为http://,http协议是在网络开发中最常用的协议
      • file:访问的是本地计算机上的资源,格式:file://(不用加主机地址)
      • mailto:访问的是电子邮件地址,格式为mailto:
      • FTP:访问的是共享主机的文件资源,格式是ftp://
  • 网络编程中能够用到的协议

    • TCP/IP协议簇
      • HTTP属于它内部的一个子集
      • 规则(协议)
      • 使用到的协议簇的统称
      • 分层设计思想:(查看参考模型)
        • 应用层:HTTP/FTP/SMTP/DNS/RPC/SNM
        • 传输层:TCP/UDP
        • Internet层:RARP/IP/IGMP/ICMP
        • 网络接口层:以太网...
  • HTTP协议

    • 访问远程网络资源
  • 思考:

    • 客户端应该传什么格式的数据给服务器,服务器才能看懂?
    • 服务器应该返回什么格式的数据给客户端,客户端才能看懂?
    • 两边怎样传输数据才能有效沟通
    • HTTP协议(超文本传输协议)Hypertext Transfer Protocol
    • 规定客户端和服务器之间的数据传输格式,让客户端和服务器有效的沟通
  • HTTP协议的特点

    • 简单快速
    • 灵活:允许传输各种各样数据
    • HTTP0.9和1.0使用非持续连接,限制每次连接只处理一个请求,服务器对客户端的请求作出响应后,马上断开连接,这种方式可以节省传输时间。HTTP1.0之后变为持续连接
  • HTTP基本通信过程

    • 请求:客户端向服务器索要数据
    • 响应:服务器返回客户端相应的数据
1.确定请求路径url
http://www.baidu.com:80/tools.html
2.获取主机名
www.baidu.com
3.DNS域名解析
192.168.31.1
4.获得端口号80
5.连接到192.168.31.1的端口80
6.发送HTTP GET请求 
7.接收到服务器的响应
8.关闭连接

GET请求|POST请求

  • 发送请求的方法

    • GET:查
    • POST:改
    • OPTIONS
    • HEAD
    • PUT:增
    • DELETE:删
    • TRACE
    • CONNECT
    • PATCH
  • 参数:传递给服务器的具体数据,比如登录时的账号、密码

  • GET和POST对比

    • 区别表现在数据传递上
    • GET:在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,浏览器和服务器对URL的长度有限制,因此URL后面附带的参数是有限制的,通常不能超过1KB
    • POST:发给服务取得参数全部放在请求体中,理论上,POST传递的数据量没有限制
    • 如何选择?(公司后台规定的,接口文档)
      • 如果要传递大量数据,比如文件上传、只能用POST
      • GET的安全性比POST要差一些,如果包含机密、敏感信息,建议用POST
      • 如果仅仅是索取数据(数据查询),建议使用GET
      • 如果是增删改查数据,建议使用POST
  • HTTP版本说明

    • HTTP0.9|HTTP1.0
    • 公司用的还是HTTP1.1(1997年),使用了持久连接
    • HTTP2.0,提高了性能(面试会问你有没有关注2.0,你们公司用的是1.1还是2.0)
    • rfc文档
  • 常见的响应状态码

    • 调试接口
    • 200 OK 请求成功
    • 400 客户端请求语法错误,服务器无法解析BadRequest
    • 404 服务器无法根据客户端的请求找到资源 NotFound
    • 500 服务器内部错误,无法完成请求 Internal Server Error

HTTP通信的过程(请求和响应)

  • 请求

    • 请求头:对客户端的环境描述、客户端请求信息
      • 请求方法、请求资源路径、HTTP协议版本
      • 客户端想访问的服务器主机地址
      • 客户端的类型、客户端的软件环境
      • 客户端所能接收的数据类型
      • 客户端的语言环境
      • 客户端支持的数据压缩格式
    • 请求体:客户端发给服务器的具体数据,比如文件数据(post请求才会有)
  • 响应

    • 响应头:对服务器的描述、对返回数据的描述
      • HTTP协议版本、状态码、状态英文名称
      • 服务器类型
      • 返回数据的类型
      • 返回数据的长度
      • 响应的时间
    • 响应体:服务器返回给客户端的具体数据,比如文件数据
  • HTTP通信过程

    • 客户端 <--> 服务器

ios中发送HTTP请求的方案

  • 苹果原生
    • NSURLConnection
    • NSURLSession:功能比NSURLConnection更加强大,2013推出,ios7开始出的技术
    • CFNetwork:NSURL*的底层,纯C语言
  • 第三方框架
    • ASIHttpRequest:HTTP终结者,但是不更新了,没有人使用了
    • AFNetworking
    • MKNetworkKit
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容