iOS网络构架 与 web服务器 (三次握手)

原创 2015年11月18日 19:28:07

iOS中的网络构架

(从上层到下层依次为Cocoa\Web Kit\Core Foundation\OS\Hardware)

这里写图片描述

Cocoa (面向对象的框架集) 包含基于OC的API

Cocoa层是基于Core Foundation实现的

NSURL : 就是我们在浏览器上看到的网站的地址,是一个字符串,这个字符串比较复杂,包括很多请求数据,在请求过程中需要解析出来每个部门,所以封装一个 NSURL

Web Kit : iOS8 之后引入的新的框架,有 WKWebView 可以替换 UIKit 的 UIWebView 和 appKit 的 WebView,而且提供了两个平台可以一致使用的接口。(UIWebView 是基于移动版的 Safari,所以性能有限)

Game Kit : 是 iOS SDK 中一个常用的框架,核心功能有三个:1. 交互游戏平台(Game Center) 2. P2P设备通信功能 3. in-Game Voice

Bonjour(NSNetService) : 是 Apple 推出的零配置网络协议,主要目的是在缺少中心服务器的情况下解决网络设备的IP的获取,名称解析和服务发现等关键问题

IP 地址的获取 : 传统网络环境下,设备的IP地址通过两种方式后去,一种是静态配置,通过手工方式为设备指定一个IP地址,一种是动态配置,设备通过路由器的DHCP服务获得动态的IP地址。

每个IP可以对应多个域名,但是一个域名只能对应一个IP

Core Foundation (核心框架) 包含基于C的API

因为直接使用socket需要更多的编程工作,Apple 对OS层socket进行了简单的封装以简化编程任务

包含 CFNetwork(基于CFStream 和 CFSocket)、CFNetServices
CoreBluetooth

OS (系统)

BSD : BSD socket 提供了与远端设备、与服务器通信的完全控制能力,但是编程工作最多,Apple 建议我们使用 Core Foundation 及上层的 API 进行编程

Hardware (硬件层)

Wi-Fi Celluar(蜂窝网络) Bluetooth(蓝牙)

从上层框架到下层的移动,会获得更为严密和更大程度的控制,但是失去了上层提供的API的易用性与抽象能力。

四种常见的URL模型:文件、HTTP、HTTPS 和 FTP
SMTP : 邮件协议


抓包

(Wireshark)
目前我们主要是抓http类型的包,先过滤http的,然后通过ip进行过滤

抓包基本方法:先把Wireshark打开,然后快速在网页或是app上与服务器连接(进入网页/点击button等等),再等Wireshark有数据回来后快速点击暂停。

在搜索栏输入 http && (ip.dst == 目标ip)&&(ip.src == 源ip)


HTTP协议 (超文本传输协议)

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则

Tim Berners-Lee于1990年创造了HTTP协议的首个版本,最初的提案中有三个重要的创新:HTML、HTTP 和 URL

1. HTML 定义了向 文本添加样式 的一种方式 (传过来是什么样子的)
2. HTTP 定义了在服务端与客户端之间 传输数据 的一种方式 (怎么传)
3. URL 定义了在网络机器中 定位唯一资源 的一种方式 (东西在哪)

URL结构

schema://host[:port]/path/…/[?query-string][#anchor]
协议://主机名[:端口]/绝对路径/[?查询字符串1&查询字符串2][锚]

绝对路径和查询字符串不可以包含空格、回车与换行符,因此,URL通常使用百分号进行编码,RFC 3986(http://tools.ietf.org/html/rfc3986)规定了URL百分号编码的详细信息

HTTP请求与响应

http://www.cnblogs.com/yin-jingyu/archive/2011/08/01/2123548.html

这里写图片描述

HTTP的规范是IETF FRF 2616 http://www.ietf.org/rfc/rfc2616.txt

端口号默认是 80
中括号扩起来的东西是可选的(可写可不写)

在终端中输入 “dig + 网址” 可以查看网址的信息

Web服务器,浏览器,代理服务器

  1. 当我们打开浏览器,在地址栏中输入URL,我们的浏览器给Web服务器发送了一个Request
  2. Web服务器接到Request后进行处理,生成相应的Response,然后发送给浏览器,浏览器解析Response中的HTML,然后我们就看到了网页

代理服务器就是网络信息的中转站,它的功能:提高访问速度,大多数的代理服务器都有缓存功能;突破限制,也就是翻墙了;隐藏身份

请求内容

HTTP请求包含3部分:请求行、请求头与请求体,请求头和请求体之间有个空行

HTTP协议是无状态的

同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端,当前网页和上一个网页没有联系。为了解决这个问题,Web程序引入了Cookie机制来维护状态

请求内容Request

第一行中的Method表示请求方法,比如“POST”和”GET”,创建一个请求的时候,默认的是GET请求,当使用”GET”方法的时候,body是空的,我们平时上网时使用的是”GET”,是明文传输,所有的内容都会显示,如果需要输入账号和密码等加密传输的东西时,应该使用”POST”传输。
Path-to-resource表示请求资源,Http/version-number 表示http协议的版本号,请求体必须遵循客户端与服务器之间预先确定的数据编码,对于web浏览器来说,通常是表单编码数据,对于移动数据来说,通常是 XML 或 JSON 数据
Get是向服务器发索取数据的一种请求;而Post是向服务器提交数据的一种请求,要提交的数据位于信息头后面的实体中

大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说Content-Length必须出现。

这里写图片描述

响应内容Response
与请求内容的格式相同,HTTP/version-number表示HTTP协议的版本号,status code 和 message 分别是状态码和状态消息,状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response

这里写图片描述

TCP:传输层 IP:网络层 (需要了解TCP/IP协议站)

TCP三次握手

报文:网络传输数据的一个单元(数据块)

这里写图片描述

抓包的时候src代表数据的发送者,dst表示接收者


Cocoa层iOS HTTP API

在URL加载系统中,有3个主要方式可以执行HTTP请求和接收响应

1. 同步 (线程会被阻塞)
2. 队列式异步 (创建一个队列并放入后台线程执行)
3. 异步 (调用委托方法)

所有的URL加载请求方式都会用到这4类对象
NSURL、NSURLRequest、NSURLConnection 与 NSURLResponse 对象

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux服务器上11种网络连接状态 和 TCP三次握手/四次挥手详解

【转】Linux服务器上11种网络连接状态 和 TCP三次握手/四次挥手详解 一、Linux服务器上11种网络连接状态: 图:TCP的状态机 通常情况下:一个正常的TCP连接,都会有三个...

访问Web,tcp传输全过程(三次握手、请求、数据传输、四次挥手)

从输入域名到最后呈现经历的过程: 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html...

tcp三次握手协议

  • 2014-07-21 14:31
  • 14KB
  • 下载

linux网络编程--三次握手/四次握手

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠so...

【计算机网络】TCP三次握手四次挥手

TCP三次握手建立连接 第一次握手 A 的TCP 向B 发出连接请求报文段,其首部中的同步位SYN = 1,并选择序号seq = x,表明传送数据时的第一个数据字节的序号是x。 第二...

计算机网络-三次握手/四次挥手

TCP报文段如何建立一条TCP连接客户中的TCP会用以下的方式与服务器中的TCP建立一条TCP连接: 第一步:客户端的TCP首先向服务端的TCP发送一条特殊的TCP报文段。该报文段中不能包含应用层数据...

【网络基础】TCP三次握手以及四次断开原理

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。 (SYN包表示标志位syn=1,ACK包表示标志位ack=1,SYN+ACK包表示标志位syn=1,ack=...

Linux 系统应用编程——网络编程(TCP 协议三次握手过程)

TCP(Transmission Control Protocol) 传输控制协议  TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:  ...

Linux网络编程之tcpdump抓包分析TCP三次握手过程

使用TCP协议进行网络通讯时,通信的两端首先需要建立起一条连接链路,当然这并不表示使用UDP通信不需要“连接链路”,这里说的连接链路指的是通信协议范畴的东东,并不是物理介质或者电磁波信号,只所以说TC...

【网络基础】TCP协议的三次握手过程

TCP协议的三次握手过程 TCP(Transmission Control Protocol) 传输控制协议 TCP的连接建立过程又称为TCP三次握手。 首先发送方主机向接收方主机发...
  • fu_zk
  • fu_zk
  • 2013-10-24 18:02
  • 1019
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)