网络基本了解

作者: Mario_ZJ | 来源:发表于2016-09-12 19:38 被阅读6次

网络基础

  • 问题:为什么要学习网络编程?
    (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】:服务器内部错误,无法完成请求

相关文章

  • 网络基本了解

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

  • HttpURLConnection基本使用

    1. HttpURLConnection基本使用 HttpURLConnection是网络请求的基本类,在具体了解...

  • 8.网络协议基本了解

    1.网络七层协议 应用层:1 用户接口,应用程序.2 Application典型设备:网关.3 典型协议,标准和应...

  • 计算机网络

    掌握计算机网络的基本概念、基本原理和基本方法。掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点...

  • Docker学习六、docker网络管理

    一、Linux网络设备的基本概念 在学习docker网络管理之前先要了解一些Linux网络设备的基本概念: Lin...

  • ESXi网络配置详解

    如果想要管理ESXi主机网络,那么我们一定要了解一些最基本概念: ESXi网络概述: 物理网络:物理网络就是为了使...

  • 菜鸟入门,了解网络存储基本常识

    存储是一件复杂的事情,在经历过电脑运算能力和网络互连能力两次快速发展之后,人们对于网络的需求不再满足于连通能力,而...

  • Android网络编程(十)Retrofit2后篇[请求参数]

    前言 在上一篇Android网络编程(九)Retrofit2前篇[基本使用]中我们了解了Retrofit的最基本的...

  • 网络基本

    网络通信的要素 socket通过socket来建立连接,然后通信 IP -- Internet Protocol网...

  • 了解常见的网络能力和平台特性

    记录下,我们需要了解的基本网络能力和平台特性。 常规的网络能力,例如 DNS 防劫持、动态 IP 下发、就近接入、...

网友评论

    本文标题:网络基本了解

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