网络知识点
来源:互联网 发布:java this super 编辑:程序博客网 时间:2024/05/16 04:45
NSUrlConnection Xcode7.0 以后过期. NSUrlSession ----->第三方: AFNetworking {3.0之前的. }
1.网络常识/基础 -------> 认识网络:七层协议/"Socket"通信模型(本地网络地址/MAC地址/IP地址/子网掩码/路由...)
2.数据解析(网络数据---> OC数据)
3.HTTP协议
4.文件上传
5.文件下载(NSUrlConnection框架)
6.NSUrlSession/AFNetworking
7.综合实战(数据时怎么来的)
8.HTML/CSS/JS...
问题:网络中传递的都是二进制数据!为什么?
网络协议:因为网络协议的"物理层"只能传递电信号:(0和1)
从上往下:(用户-->设备) 发送数据:我喜欢你!
发送信息:从上往下 接收信息:从下往上.
应用层:
{
规定应用程序的数据传输格式:
{
HTTP协议:超文本传输协议.
ftp协议:本地文件的传输协议.
本地文件传输协议: file://
邮件协议: mailto://...
}
}
表示层:
{
不同系统之间通信的问题? MAC的语法结构和windows电脑的语法结构一样吗?
表示层解决了不同系统之间通信的语法问题.
}
会话层:
{
谁帮你接收信息?谁帮你自动寻找IP地址...
建立一套 自动的 收发信息,自动网络寻址,自动匹配端口号...
}
传输层:
{
{端口号:5001 信息内容:我喜欢你}
1. 信息从计算机流出或者流入计算机的最后一条路口(关口)是什么? ------- 网卡!
2. QQ ,微信,陌陌三个聊天软件,有一条聊天信息从网络中传递过来了,这个聊天信息是发送给哪一个软件(app)的?
给每一个使用网卡的应用程序一个编号:---这个编号就是"端口"号.
{
QQ: 5001
微信:6004
陌陌:7005
}
{ 端口号:5001 信息内容:我很喜欢你}
端口号:0 ~65535; 0~1024是系统占用的. 1024~65535:自己设置端口号.(即时通信)
TCP协议:安全连接协议/三次握手协议.---应用最广泛的传输层协议.效率相比于UDP低.一定能够保证接收方接受到数据.
UDP协议:报文头协议,是不安全的.只负责发送信息,不管接收方是否能够接收到.
传输层数据包
{
TCP数据包:标头部分除了端口号,还有一些安全确认机制.
UDP数据包:只有端口号.
两者都包含标头(都包含双方的"端口"号)和数据两个部分
}
}
网络层:
{
{双方:IP地址{端口号:5001 信息内容:我喜欢你}}
网络层就是建立 "主机"到"主机"之间的通信.找到网络中唯一的一台计算机.
如何找到网络中唯一的一台计算机呢? IP地址.
引入一套新的地址机制:网络地址/网址/IP地址.每一台计算机都有自己唯一的IP地址.
IP地址是一个大地址:国家/城市/县区/小区
MAC地址:你家的门牌号
网络拓扑结构:
IP地址:IP地址来确定唯一的一台计算机
子网掩码:用来确定计算机所在的子网络.将IP地址与子网掩码做"和"运算,得到的值就是这台计算机所在的子网络!
61.135.169.121 :百度服务器地址{百度/阿里/腾讯:服务器集群}
路由:信息在不同的子网络之间传递.
路由器/交换机:具有网络寻址功能.会帮我们寻找一条最佳的网络路径发送信息.
DNS服务器:域名解析服务器.(将域名解析成IP地址,域名是方便记忆IP地址的符号.)
{
本机的IP地址:127.0.0.1
本机的域名: localhost (没有手动配置hosts)
IP地址:通过DHCP 协议获取的动态IP地址.
通过上面三种方式,都可以访问到自己的计算机.
每一台计算机都可以是一个服务器.(MAC系统下,自带了apache服务器)
}
IP 数据包:
{
标头:包含了双方的IP地址.
数据:就是需要传递的数据.
}
}
数据链路层:
{
{双方的MAC 地址 {双方:IP地址{端口号:5001 信息内容:我喜欢你}}}
0101010101011111100000101010101001----乱写的
单纯地 0 和 1 没有实际意思.必须将0 和 1 分组,并且规定解读方式.
以太网协议:规定了0 和 1 的解读方式,规定了"数据包"的概念:一帧数据就是一个数据包.
以太网协议是一个局域网协议.
最原始的通信依靠 MAC 地址(网卡地址).
以太网数据包会将数据封装
以太网数据包
{
标头:通信双方的MAC 地址.
数据:需要传递的数据内容.
}
}
物理层:两台电脑如何连接在一起?
{
{双方的MAC 地址 {双方:IP地址{端口号:5001 信息内容:我喜欢你}}}
{0101010100100010100010100010101}
网线/WIFI(有线/无线---> 电信号(高(1)低(0)电平)) ,规定了网络接口类型
// 1. 物理层负责将电脑连接起来.
// 2. 物理层负责传递数据 0 和 1.
}
信息在网络中是如何传递的?
{
广播:在同一个子网络内,信息以广播的形式发送.
路由:信息在不同的子网络之间传递,就是路由.
}
1.网络常识/基础 -------> 认识网络:七层协议/"Socket"通信模型(本地网络地址/MAC地址/IP地址/子网掩码/路由...)
2.数据解析(网络数据---> OC数据)
3.HTTP协议
4.文件上传
5.文件下载(NSUrlConnection框架)
6.NSUrlSession/AFNetworking
7.综合实战(数据时怎么来的)
8.HTML/CSS/JS...
问题:网络中传递的都是二进制数据!为什么?
网络协议:因为网络协议的"物理层"只能传递电信号:(0和1)
从上往下:(用户-->设备) 发送数据:我喜欢你!
发送信息:从上往下 接收信息:从下往上.
应用层:
{
规定应用程序的数据传输格式:
{
HTTP协议:超文本传输协议.
ftp协议:本地文件的传输协议.
本地文件传输协议: file://
邮件协议: mailto://...
}
}
表示层:
{
不同系统之间通信的问题? MAC的语法结构和windows电脑的语法结构一样吗?
表示层解决了不同系统之间通信的语法问题.
}
会话层:
{
谁帮你接收信息?谁帮你自动寻找IP地址...
建立一套 自动的 收发信息,自动网络寻址,自动匹配端口号...
}
传输层:
{
{端口号:5001 信息内容:我喜欢你}
1. 信息从计算机流出或者流入计算机的最后一条路口(关口)是什么? ------- 网卡!
2. QQ ,微信,陌陌三个聊天软件,有一条聊天信息从网络中传递过来了,这个聊天信息是发送给哪一个软件(app)的?
给每一个使用网卡的应用程序一个编号:---这个编号就是"端口"号.
{
QQ: 5001
微信:6004
陌陌:7005
}
{ 端口号:5001 信息内容:我很喜欢你}
端口号:0 ~65535; 0~1024是系统占用的. 1024~65535:自己设置端口号.(即时通信)
TCP协议:安全连接协议/三次握手协议.---应用最广泛的传输层协议.效率相比于UDP低.一定能够保证接收方接受到数据.
UDP协议:报文头协议,是不安全的.只负责发送信息,不管接收方是否能够接收到.
传输层数据包
{
TCP数据包:标头部分除了端口号,还有一些安全确认机制.
UDP数据包:只有端口号.
两者都包含标头(都包含双方的"端口"号)和数据两个部分
}
}
网络层:
{
{双方:IP地址{端口号:5001 信息内容:我喜欢你}}
网络层就是建立 "主机"到"主机"之间的通信.找到网络中唯一的一台计算机.
如何找到网络中唯一的一台计算机呢? IP地址.
引入一套新的地址机制:网络地址/网址/IP地址.每一台计算机都有自己唯一的IP地址.
IP地址是一个大地址:国家/城市/县区/小区
MAC地址:你家的门牌号
网络拓扑结构:
IP地址:IP地址来确定唯一的一台计算机
子网掩码:用来确定计算机所在的子网络.将IP地址与子网掩码做"和"运算,得到的值就是这台计算机所在的子网络!
61.135.169.121 :百度服务器地址{百度/阿里/腾讯:服务器集群}
路由:信息在不同的子网络之间传递.
路由器/交换机:具有网络寻址功能.会帮我们寻找一条最佳的网络路径发送信息.
DNS服务器:域名解析服务器.(将域名解析成IP地址,域名是方便记忆IP地址的符号.)
{
本机的IP地址:127.0.0.1
本机的域名: localhost (没有手动配置hosts)
IP地址:通过DHCP 协议获取的动态IP地址.
通过上面三种方式,都可以访问到自己的计算机.
每一台计算机都可以是一个服务器.(MAC系统下,自带了apache服务器)
}
IP 数据包:
{
标头:包含了双方的IP地址.
数据:就是需要传递的数据.
}
}
数据链路层:
{
{双方的MAC 地址 {双方:IP地址{端口号:5001 信息内容:我喜欢你}}}
0101010101011111100000101010101001----乱写的
单纯地 0 和 1 没有实际意思.必须将0 和 1 分组,并且规定解读方式.
以太网协议:规定了0 和 1 的解读方式,规定了"数据包"的概念:一帧数据就是一个数据包.
以太网协议是一个局域网协议.
最原始的通信依靠 MAC 地址(网卡地址).
以太网数据包会将数据封装
以太网数据包
{
标头:通信双方的MAC 地址.
数据:需要传递的数据内容.
}
}
物理层:两台电脑如何连接在一起?
{
{双方的MAC 地址 {双方:IP地址{端口号:5001 信息内容:我喜欢你}}}
{0101010100100010100010100010101}
网线/WIFI(有线/无线---> 电信号(高(1)低(0)电平)) ,规定了网络接口类型
// 1. 物理层负责将电脑连接起来.
// 2. 物理层负责传递数据 0 和 1.
}
信息在网络中是如何传递的?
{
广播:在同一个子网络内,信息以广播的形式发送.
路由:信息在不同的子网络之间传递,就是路由.
}
{
配置服务器:可以上传、分享、测试自己写的app主要的!
1. 终端.control+空格键搜索
cd /etc/apache2/ 进入apache2所在的文件目录;
ls 查看当前文件夹下的文件目录.
sudo vim httpd.conf sudo 以管理员的权限打开. vim (编辑器打开)
/DocumentRoot /是vim的查找命令. /DocumentRoot 查找DocumentRoot (Web服务器的)根路径
shift + v (选中这一行)
y 复制这一行
p 在当前行下面粘贴复制那一行.
#在 vim 中是 注释的意思.
i 让 vim编辑器由命令行模式进入编辑模式
ls 查看当前文件夹下的文件目录.
sudo vim httpd.conf sudo 以管理员的权限打开. vim (编辑器打开)
/DocumentRoot /是vim的查找命令. /DocumentRoot 查找DocumentRoot (Web服务器的)根路径
shift + v (选中这一行)
y 复制这一行
p 在当前行下面粘贴复制那一行.
#在 vim 中是 注释的意思.
i 让 vim编辑器由命令行模式进入编辑模式
esc(电脑键盘上的esc) 让vim 编辑器由 编辑模式 进入 命令行模式
2.
/Options Follow 查找这一行
在 Options Follow中间插入Indexes 让服务器以列表的形式呈现内容.
(配置完毕之后的样子'Options Indexes FollowSymLinks Multiviews')
3.
/php 查找php所在的那一行.
删除行首的 # 号.
esc 退出编辑模式.
:wq 保存并退出 vim 编辑器.
4. 启动服务器.
{
1. 启动服务器
sudo apachectl -k restart
sudo apachectl restart
2. 关闭服务器
sudo apachectl -k stop
sudo apachectl stop
如果出现下面的提示,说明服务器配置成功:
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, usingteacherdeiMac.local. Set the 'ServerName' directive globally to suppress this message
httpd not running, trying to start
}
}
学习点:
{
// 在 mrc 的代码中,没有 weak,只有assign
// assign 修饰符号,对对象不做任何操作,只是简单的记录地址
// weak 是 ARC 专有的,如果对象没有其他任何对象做强引用,会被立即释放!
// weak 的效率非常差!
// assign 会记录住地址,对象释放后,地址仍然保留,在 MRC 开发中,野指针错误非常频繁
// weak 安全性很好!一旦没有强引用,自动将地址设置为 nil,OC中可以向nil 发送任何消息都不会报错
}
第三天:get和post区别
//网络数据缓存
网络缓存数据,保存在SQLite的数据库中(NSHomeDirectory()),
//查看缓存的数据命令行:
cd 文件目录 (打开文件目录)
ls 查看当前文件下目录
sqlite3 Cache.db 打开数据库
.tables 查看数据库中的表单
select * from cfurl_cache_response; 查看服务器响应缓存
select * from cfurl_cache_receiver_data; 查看服务器返回的数据缓存
URL:使用注意
<1>URL中,所有的字符都必须是ASCII 码;
<2>URL中不能出现中文和特殊符号(如空格);
所以,如果URL 中出现了中文,需要添加百分号转译.
// GET/POST登陆 UI界面的搭建注意:
iphone6+ 防边缘触摸
移动端应用默认应该记住密码
<1>保存到用户偏好设置
版本管理
git
偏好设置保存用户信息
用户密码不能以明文的形式保存,需要对用户密码加密之后再保存.
加密:
<1> base64 :iOS7.0 以后,苹果提供base64的编码解码支持.
<2> MD5
<1>加盐:加盐要足够长,足够复杂.
<2>HMAC:一个结合了散列函数的加密算法;给定一个秘钥,分别作两次加密和散列.
<3>用户密码是动态变化的. --- 时间戳密码
给定相同的加密算法和相同的密码明文,要求每次登陆的时候,密码都不一样.两个密码只要有一个相同就可以了
IP辅助/手机绑定
<3>钥匙串访问iOS 7.0.3以后支持AES 256 加密 是安全的.
SSKeyChain 是对底层 C语言的封装.
如果没有钥匙串访问,本地密码的保存会相当的繁琐,需要使用RSA(秘钥) & AES(加密&解密)
BundleID ------- 应用程序的唯一的标识,每一个上架的应用程序,都有唯一的BundleID
获取BundleID: [NSBundle mainBundle].bundleIdentifier;
<4>指纹识别
指纹识别:功能是5s之后推出的, SDK 是 iOS8.0之后推出的.同时推出ApplePay
推出的目的是简化支付.移动支付环节越简单越好.
使用:
<1>导入头文件
#import<LocalAuthentication/LocalAuthentication.h>
<2>使用
<3>判断系统版本
当前系统版本: [UIDevice currentDevice].systemVersion.floatValue
第四天POST 增强
上传单个/多个文件
RESTfull风格设计
JSON序列化
模型转字典KVC,注意跟字典转模型相比较
快捷键知识点
核心动画
归档解档KVO
青花瓷加载网易新闻数据
网络模型数据,字典转模型
用运行时,字典转模型
第五天:下载文件
HEAD方法;
指向指针的指针用法;
NULL和nil 的区别.
NSNull 为了能够是数组和字典中使用空值
下载文件
NSFileHandle // 文件句柄
NSOutputStream // 数据流 注意删除存在的文件,防止多次下载文件越来越大
断点续传
子线程下载,运行循环.
下载回调(Block)
核心绘图,百分比显示进度条(圆圈).
下载缓存池
NSOperation
// 在 mrc 的代码中,没有 weak,只有assign
// assign 修饰符号,对对象不做任何操作,只是简单的记录地址
// weak 是 ARC 专有的,如果对象没有其他任何对象做强引用,会被立即释放!
// weak 的效率非常差!
// assign 会记录住地址,对象释放后,地址仍然保留,在 MRC 开发中,野指针错误非常频繁
// weak 安全性很好!一旦没有强引用,自动将地址设置为 nil,OC中可以向nil 发送任何消息都不会报错
}
第三天:get和post区别
//网络数据缓存
网络缓存数据,保存在SQLite的数据库中(NSHomeDirectory()),
//查看缓存的数据命令行:
cd 文件目录 (打开文件目录)
ls 查看当前文件下目录
sqlite3 Cache.db 打开数据库
.tables 查看数据库中的表单
select * from cfurl_cache_response; 查看服务器响应缓存
select * from cfurl_cache_receiver_data; 查看服务器返回的数据缓存
URL:使用注意
<1>URL中,所有的字符都必须是ASCII 码;
<2>URL中不能出现中文和特殊符号(如空格);
所以,如果URL 中出现了中文,需要添加百分号转译.
// GET/POST登陆 UI界面的搭建注意:
iphone6+ 防边缘触摸
移动端应用默认应该记住密码
<1>保存到用户偏好设置
版本管理
git
偏好设置保存用户信息
用户密码不能以明文的形式保存,需要对用户密码加密之后再保存.
加密:
<1> base64 :iOS7.0 以后,苹果提供base64的编码解码支持.
<2> MD5
<1>加盐:加盐要足够长,足够复杂.
<2>HMAC:一个结合了散列函数的加密算法;给定一个秘钥,分别作两次加密和散列.
<3>用户密码是动态变化的. --- 时间戳密码
给定相同的加密算法和相同的密码明文,要求每次登陆的时候,密码都不一样.两个密码只要有一个相同就可以了
IP辅助/手机绑定
<3>钥匙串访问iOS 7.0.3以后支持AES 256 加密 是安全的.
SSKeyChain 是对底层 C语言的封装.
如果没有钥匙串访问,本地密码的保存会相当的繁琐,需要使用RSA(秘钥) & AES(加密&解密)
BundleID ------- 应用程序的唯一的标识,每一个上架的应用程序,都有唯一的BundleID
获取BundleID: [NSBundle mainBundle].bundleIdentifier;
<4>指纹识别
指纹识别:功能是5s之后推出的, SDK 是 iOS8.0之后推出的.同时推出ApplePay
推出的目的是简化支付.移动支付环节越简单越好.
使用:
<1>导入头文件
#import<LocalAuthentication/LocalAuthentication.h>
<2>使用
<3>判断系统版本
当前系统版本: [UIDevice currentDevice].systemVersion.floatValue
第四天POST 增强
上传单个/多个文件
RESTfull风格设计
JSON序列化
模型转字典KVC,注意跟字典转模型相比较
快捷键知识点
核心动画
归档解档KVO
青花瓷加载网易新闻数据
网络模型数据,字典转模型
用运行时,字典转模型
第五天:下载文件
HEAD方法;
指向指针的指针用法;
NULL和nil 的区别.
NSNull 为了能够是数组和字典中使用空值
下载文件
NSFileHandle // 文件句柄
NSOutputStream // 数据流 注意删除存在的文件,防止多次下载文件越来越大
断点续传
子线程下载,运行循环.
下载回调(Block)
核心绘图,百分比显示进度条(圆圈).
下载缓存池
NSOperation
0 0
- 网络知识点
- 网络知识点
- 网络知识点
- 网络知识点
- 网络基础知识点
- 网络部分知识点
- 网络编程知识点
- 计算网络知识点
- 网络 知识点整理
- 操作系统、网络重要知识点
- 面试知识点 - 网络
- 网络相关知识点整理
- 网络层知识点
- 知识点——网络
- 网络编程知识点总结
- 网络通信 - 重要知识点
- 网络知识点总结
- 网络数据传输知识点总结
- iOS7.1以及iOS9.2与之前的不同
- Alcatraz install 安装步骤
- Swift 1.构造函数-必选属性
- strcmp && strcpy && strlen && strcat 源码
- 开发笔记 - 设置NSZombieEnabled调试EXC_BAD_ACCESS
- 网络知识点
- Duplicate files copied in APK META-INF/license.txt
- Swift之小项目实战
- CPU寄存器操作方式
- Ubuntu下使用Vi是方向键变乱码 退格键不能使用的解决方法
- QT 编写xml文件实例
- MapReduce算法设计-计算单词共现矩阵
- 汇编复习————指令集
- arm7 中为啥pc等于当前指令+8