网络基本了解

网络基础

  • 问题:为什么要学习网络编程?
    (1)网络编程是一种实时更新应用数据的常用手段
    (2)网络编程是开发优秀网络应用的前提和基础

  • 网络基本概念
    (1)客户端(就是手机或者ipad等手持设备上面的APP)
    移动应用(iOS、android等应用)
    (2)服务器 (远程服务器-本地服务器)
    为客户端提供服务、提供数据、提供资源的机器
    ** 按照软件开发阶段来分,服务器可以大致分为以下2种 : **

    • 远程服务器
      别名:外网服务器、正式服务器
      使用阶段:应用上线后使用的服务器
      使用人群:供全体用户使用
      速度:取决于服务器的性能、用户的网速
    • 本地服务器
      别名:内网服务器、测试服务器
      使用阶段:应用处于开发、测试阶段使用的服务器
      使用人群:仅供公司内部的开发人员、测试人员使用
      速度:由于是局域网,所以速度飞快,有助于提高开发测试效率
  • 请求(客户端索要数据的方式)
    客户端向服务器索取数据的一种行为

  • 响应(需要客户端解析数据)
    服务器对客户端的请求做出的反应,一般指返回数据给客户端

  • 数据库(服务器的数据从哪里来)

    请求与响应流程图.png

Http

  • URL介绍

  • 统一资源定位符
    URL的全称是Uniform Resource Locator(统一资源定位符)
    通过1个URL,能找到互联网上唯一的1个资源
    URL就是资源的地址、位置,互联网上的每个资源都有一个唯一的URL

  • url格式(协议\主机地址\路径)
    协议 :不同的协议,代表着不同的资源查找方式、资源传输方式
    主机地址 :存放资源的主机(服务器)的IP地址(域名)
    **路径 : **资源在主机(服务器)中的具体位置

  • url的基本格式
    URL的基本格式= (协议://) (主机地址) / (路径)
    示例 : (https://) (www.baidu.com) / (img/bdlogo.gif)

    示例图.png

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

    • TCP/IP协议簇
      (1) 通常意义上,我们使用的网络是在TCP/IP协议簇的基础上运作的,而HTTP属于它内部的一个子集。
      (2) 计算机网络设备要通信,双方就必须要基于相同的方法,比如具体应该如何探测通信目标,由哪一方面发起通信,使用什么语言进行沟通等等,所有的这一切都需要规则。而我们则把这些规则称之为协议(potocol
      (3) 在协议中规定了很多的各式各样的内容,如选址方法,双方建立通信的顺序等等。这些协议如(ICMP DNS TCP FTP HTTP SNMP PPPoE IP FDDI)等等,通常我们把TCP/IP认为是在IP协议的通信过程中使用到的协议簇的统称
      (4) TCP 协议簇里面最重要的一点就是分层设计:按照层次分别分为应用层传输层网络层数据链路层。其中,与****HTTP****关系密切的协议有TCP、IP、DNS等
      TCP协议簇的分层.png
    • Http协议
      • (1)http协议作用
        a.超文本传输协议,全称是Hypertext Transfer Protocol
        b."规定"客户端和服务器之间的"数据传输格式"
        c.让客户端和服务器能有效地进行数据沟通


      • (2)http协议优缺点
        a.简单快速(协议简单,服务器端程序规模小,通信速度快)
        b.灵活(允许传输各种数据)
        c.非持续性连接(1.1之前版本是非持续的("短链接"),即限制每次连接只处理一个请求,服务器对客户端的请求做出响应后,马上断开连接,这种方式可以节省传输时间)
      • (3)基本通信过程
        a.请求:客户端向服务器索要数据
        b.响应:服务器返回客户端相应的


      • (4) URL的解析,及客户端与服务器之间的通讯过程
        说明:
    1. 1,2,3,4是为了解析获取的主机域名和端口号
    2. 5是连接到解析后的主机地址的指定的端口
    3. 6,7,8是客户端发送请求以及服务器接收请求后返回数据,接收到数据后,链接关闭


三次握手

TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。
**三次握手的目的 : **是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。


  • 三次握手的过程
    • **第一次握手 : **建立连接。
      客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;

    • **第二次握手 : **服务器收到SYN报文段。
      服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;

    • **第三次握手 : **客户端收到服务器的SYN+ACK报文段。
      然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED(建立)状态,完成TCP三次握手。
      当完成三次握手后,客户端与服务器就可以开始传输数据了.

    • 为什么要有三次握手

四次挥手

当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次分手”.

  • 四次挥手的过程
    • **第一次分手 : **主机1(可以是客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
    • **第二次分手 : **主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;
    • **第三次分手 : **主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;
    • **第四次分手 : **主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。
      **注 : **MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。
    • 为什么要有四次挥手
    • 四次挥手中的状态的含义

Http请求的发送

  • 发送http请求的方法
    在HTTP/1.1协议中,定义了8种发送http请求的方法
    -- GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH
    -- 根据HTTP协议的设计初衷,不同的方法对资源有不同的操作方式(如:增 , 删 , 改 , 查)
    -- "最常用的是GET和POST"(实际上GET和POST都能办到增删改查)
  • GET和POST请求的对比
    GET请求和POST请求的区别在于参数如何传递
    • GET请求
      在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开.
      比如 : http://ww.test.com/loginusername=123&pwd=234&type=JSON
      注意 : 由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB
    • POST请求
      发给服务器的参数全部在请求体中
      理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)
    • 如何选择用户GET请求还是POST请求
      除简单数据查询外,其它的一律使用POST请求
        a.如果要"传递大量数据",比如文件上传,"只能用POST请求"
        b.GET的安全性比POST要差些,"如果包含机密\敏感信息","建议用POST"
        c.如果"仅仅是索取数据"(数据查询),"建议使用GET"
        d.如果是"增加、修改、删除数据","建议使用POST"

iOS中发送http请求的方案

  • 苹果原生
    NSURLConnection 03年推出的古老技术
    NSURLSession:【重点】13年推出iOS7之后, 以取代NSURLConnection功能强大;
    能支持后台网络请求与数据传输等;
    CFNetwork: 底层技术、C语言的(前两种都是基于这个, 开发中基本用不 上)
  • 第三方框架
    ASIHttpRequest: 外号“HTTP终结者”,功能极其强大,可惜早已停止更新
    AFNetworking:【重点】简单易用,提供了基本够用的常用功能,维护和 使用者多
    MKNetworkKit: 维护和使用者少, 功能强大, 但是上手较难
    **建议 : ** 为了提高开发效率,企业开发用的基本是第三方框架

http请求通信的过程

(1)请求 : 【包括请求头+请求体(请求体非必选)】
(2)响应 : 【响应头+响应体】
(3)通信过程 : 
     a.发送请求的时候把请求头和请求体(请求体是非必须的)包装成一个请求对象
     b.服务器端对请求进行响应,在响应信息中包含响应头和响应体,响应信息是对服务器端的描述,具体的信息放在响应体中传递给客户端
(4)状态码 : 
    【200】:请求成功
    【400】:客户端请求的语法错误,服务器无法解析
    【404】:无法找到资源
    【500】:服务器内部错误,无法完成请求
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容