值得关注的博客:
(1)iOS学习之路(资料推荐)
GCD:http://www.cnblogs.com/snailHL/p/3906112.html信号量的理解
HTTP1.1阅读笔记:
状态码:以“if-”打头的都是客户端发出的。eg“If-Modified-Since”
HTTP为何需要3次握手建立联系,四次挂断?
“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”
这是由于TCP的半关闭造成的,因为TCP连接是全双工的(即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭,这个单方向的关闭就叫半关闭.关闭的方法是一方完成它的数据传输后,就发送一个FIN来向另一方通告将要终止这个方向的连接.当一端收到一个FIN,它必须通知应用层TCP连接已终止了这个方向的数据传送,发送FIN通常是应用层进行关闭的结果.
Head of Line Block:队列的首个packet由于它的目的端口正忙而被延迟转发,导致后面的packets被blocked。
pipelining(管道化):后面的请求不用等前面的请求response返回之后才发出head of line blocking并没有完全得到解决,server的response还是要求依次返回
HTTP2.0:
(1)http1.1的问题:
a,只能客户端请求,服务器返回。服务器没有办法主动向客户端发送消息。
b, 只能一个请求,一个返回,即使打开http1.1的管道化,也无法解决该问题,因为返回数据也是按照先后顺序的,如果前面的是耗时非常长的操作,后面的也无法返回。
c, 报文头无法压缩,导致传输的数据量大。
MIME(也称content_type):
在HTTP中,MIME类型被定义在Content-Type header中。
最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML 文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。(baidu之)
如果是某个客户端自己定义的格式,一般只能以 application/x- 开头。
https特点:
cer可以认为是公钥。
P12备份文件 = cer文件 + 私钥;
自签名证书:
该协议包括两部分:(1)SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
(2)SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。使用443端口。服务器和客户端都有CA颁发的配对的证书,服务器上有的是私钥,客户端上是公钥。https握手时候使用的是RSA(非对称加密),之后协商出一个对称密码,自此之后使用这个对称密码交流数据。只要服务器的公钥足够长(比如2048位),那么Premaster secret(第三个随机数)可以保证不被破解。
在http协议和tcp协议之间加一层SSL,达到保密的目的。
客户端和服务器都必须受信一个第三方的认证机构(CA)
SSL层:SSL靠证书确认服务器的身份,并对传输的信息加密。
1,SSL记录协议,基础功能,加密等。
2,SSL握手协议,身份验证,协商加密算法等。
问题:SSL的基础是商家对客户信息保密的承诺。
身份的验证:私钥加密,公钥解密。如果验证通过,就说明对方的确是拥有某私钥的机构。完成了身份的验证。
流程:
在得到证书申请者的一些必要信息(对象名称,公钥私钥)之后,证书颁发者通过 SHA-256 哈希得到证书内容的摘要,再用自己的私钥给这份摘要加密,得到数字签名。综合已有的信息,生成分别包含公钥和私钥的两个证书。
客户端证书:签名是用私钥加密过的摘要签名。
信息完整性校验:使用散列表hash方法,计算文件的hash,文件有最微小的改动,对应hash也会变化。这个过程是不可逆的,也就是说得到hash值,无法得到原文。hash值相同,不能说明两者文件相同。一般使用MD5和SHA1计算。应用与数字签名。
RSA:一种非对称加密方法。有配对的私钥和公钥,对一段数据而言,加密后的数据只有用对应的解密钥匙解密。一般公钥加密,私钥解密。如果私钥不泄露,那么就可以假定是安全的。
1,如果有第三方解获了公钥,把公钥破解了,得到私钥,岂不是信息就破解了吗?
就目前而言,最大的破解的RSA长度为768,1024以上的是极为安全的。
2,SSL握手之后,双方使用的是协商好的对称密码,那万一第三方破解了这个密码,那岂不是信息都不安全了吗:
数字签名 就是使用个人私密和加密算法加密的摘要和报文,是私人性的。http://blog.csdn.net/oscar999/article/details/9364101
数字证书:目的,为了杜绝拿到的公钥是伪造的。
鲍勃使用了自己的私钥为了给妻子写信,妻子使用了鲍勃的公钥揭秘邮件,原来是好好的,正常的。可是最近好像不太对劲。可能是哪个坏人把“邪恶公钥”装在了鲍勃妻子的电脑上了,这样坏人就有可能冒充鲍勃和鲍勃的妻子通信了。这下麻烦大了。咋办呢?
鲍勃妻子可是个聪明的人啊,它找到了CA机构,让CA使用自己的私钥加密了老公的公钥和其他一些信息,形成了一个数字证书。
下次,鲍勃写信呢,就把这张通过CA认证的数字证书也发给了妻子,而妻子使用CA的公钥(这个是公开的),解开数字证书,得到老公真实的公钥。然后就能证明"数字签名"是否真的是鲍勃签的(签名是老公用自己的私钥加密的),如果坏人企图再次欺骗鲍勃老婆,就得过CA的关,这点貌似比较难啊!
总结:鲍勃和妻子都要信任CA机构。
CA也会出问题,发生伪造的事情。
鲍勃写信以后包括三方面:
(1)签名:目的,确认信件没有被修改。
(2)证书。目的,确认公钥是否真的属于对方。因为有可能有人偷偷的在你电脑上替换了坏人的公钥,给你发信件。这种情况下,你永远都没有可能解开真正的信息了。而证书因为引入了CA,使得即使有人偷偷的在你电脑上替换了坏人的公钥情况下,你依然使用CA的公钥去解析信件的公钥(信件的公钥被CA的私钥加密过),这样坏人的证书是通不过验证的。除非CA那里出了问题。
(3)信件内容。
TCP字段的定义和具体意义TCP那些事
所谓的长连接/短连接 并非真正的连接,而是指两端TCP的“连接状态”。
TCP窗口:两端的缓冲区
https:http + security(SSL层《》)
https作用:(1)信息在传输过程中的安全性,监听到也没法破解 ;第三方篡改数据也没有了意义。
(2)信息的接受源:确认客户端和服务器的真实性,不是钓鱼网站。
TCP与UDP的区别:
UDP-》不保证数据可以传到目的地。
TCP有超时和重发机制,保证数据可以完整的传输。
TCP心跳检测:目的,节约不必要的TCP半连接,因为TCP打开了就不会主动关闭,这样的话就会浪费许多的连接。如果不关掉就太浪费了。
长连接之所以可以长连接,是因为TCP端口的状态是某种状态(ESTABLISHED),短连接之所以为短连接,是因为改变了端口的状态(CLOSED)。
端口号表示不同的应用程序
TCP报文段的到达也可能会失序。如果必要,T C P将 对 收 到 的 数 据 进 行 重 新 排 序.TCP窗口就是缓存区。
网关:转换不同网络协议的服务器程序。
路由器:连接不同的网络,可以认为是网关。
NSURLSession:
NSURLSession和NSURLConnection区别:
(1)Sessions are Containers:https://code.tutsplus.com/tutorials/networking-with-nsurlsession-part-1--mobile-21394
NSUrlSession Guide .
NSURLSession Tutorial
APPLE NSURLSession Guide
网络认证:“Authorization-AccessToken”网络认证;
OAuth:一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。
关键点:第三方APP(客户端,比如自己开发的APP),资源服务器,资源拥有者(比如,微信)
1,APPID,APPSecret:第三方APP(客户端)的信息。
临时票据:资源方返回的用于获取access_token的临时票据。
redirect_url(由客户端指定):资源拥有者确认授权后,返回的url,后期该url提取access_token,返回给客户端。
grant_type:授权的类型,有 更新令牌 各种模式等。
最终的目的:得到一个access_token,它是第三方APP获取用户基本数据资源或帮助用户实现基本操作的凭证,
第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。
application/x-www-form-urlencoded
Base64编码可用于在HTTP环境下传递较长的标识信息。
IOS网络请求:
Lost connection to background transfer service
REST API:RESTful架构,就是目前最流行的一种互联网软件架构。
SSO单点登录:SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。
http://www.mamicode.com/info-detail-909227.html
IP知识:
1,私有地址:局域网的IP普遍是192.168开头,例如我的IP地址就是192.168.199.xxx,这只是局域网地址,不是公网地址,所以这需要路由器转换。
2,NAT:网络地址转换,将其本地地址转换成全球IP地址,才能和因特网连接。