http、https、tcp/ip、socket

好久没写博客,今天手痒痒,就把网络相关的东西总结总结吧;

http:关于http的使用这篇文章介绍的比较详细,我就不多说了

http://www.cnblogs.com/wendingding/p/3813466.html

一:HTTP和HTTPS

1.1: HTTP

HTTP的全称是Hypertext Transfer Protocol,超文本传输协议,被用于web浏览器和网站服务器之间传递信息。http协议工作是以明文方式发送内容,不提供任何形式的数据加密,这也是很容易被黑客利用的地方,如果黑客截取了web浏览器和网站服务器之间的传输信息,就可以直接读取其中的信息,因此http协议不适合传输一些重要的、敏感的信息,如信用卡密码及支付验证码等;

1.2: HTTPS

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer----安全套接字层http协议)就是为了解决http的安全性问题而生的,为了数据的安全,https在http的基础上加入ssl协议,ssl依靠证书来验证服务器的身份,为浏览器和服务器之间的通信进行加密;

1.3: 公开密钥加密(非对称加密,如RSA)

公开密钥加密也称非对称加密,该加密算法使用两个不同的密钥:加密密钥(公钥)和解密密钥(私钥)。这两个密钥是数学相关的,某用户用加密密钥加密后所得的信息只能用该用户的解密密钥才能解密。RSA算法(由发明者Rivest,Shmir和Adleman姓氏首字母缩写而来)是著名的公开密钥加密算法。
公钥加密的另一用途是身份验证:用私钥加密的信息,可以用公钥对其解密,接收者由此可知这条信息确实来自于拥有私钥的某人。私钥加密的过程即数字签名。
用公钥加密的数据只有私钥才能解密;相反的,用私钥加密的数据只有公钥才能解密,正是这种不对称性才使得公用密钥密码系统被广泛应用。

1.4: 对称加密(如AES、DES,或者RC6)

对称加密因为使用相同的密钥来进行加密、解密,所以运行速度较快

1.5: SSL:安全套接字层(Secure Socket Layer,位于TCP/IP协议和HTTP协议之间)

SSL 协议既用到了公钥加密技术(非对称加密),又用到了对称加密技术。
Step 1:用公开密钥加密技术(非对称加密,通常为RSA)验证彼此身份(有时服务器不需要验证客户端身份),并协商Step2中通讯时所用的对称加密密钥;
Step 2:用对称密钥加密技术(如AES、DES,或者RC6)加密服务器端和客户端通讯时的数据。
这样做的好处是:公开密钥加密(非对称加密)相对复杂,速度慢,可用来完成安全性要求较高的身份认证、密钥协商等事务;对称加密技术相对简单,速度快,可用来加密客户端与服务端之间传输的数据内容。

1.6: HTTPS 客户端与服务器交互过程

1、客户端发送请求,服务器返回公钥给客户端;
2、客户端生成对称加密秘钥,用公钥对其进行加密后,返回给服务器;
3、服务器收到后,利用私钥解开得到对称加密秘钥,保存;
4、之后的交互都使用对称加密后的数据进行交互。

1-3 : 主要是身份验证(非对称加密),被称为握手阶段,通过握手阶段,客户端和服务端主要交换了三个信息:

 1. 数字证书:该信息是我们进行开发需要关注的!数字证书包含了公钥等信息,一般由服务器发给客户端,接收方通过验证这个证书是不是由信赖的CA签发(花钱),或者与本地的证书相对比(自建),来判断证书是否可信;假如需要双向验证,则服务器和客户端都需要发送数字证书给对方验证;
 2. 3个随机数:3个随机数是用于生成对话密钥的;
 3. 加密通信协议:客户端和服务器端通信需要采取同样的加密通信协议(哪种对称加密技术,AES、DES、RC6);


4 : 对交互的数据进行对称加密(AES、DES、RC6);

1.7: AFNetworking集成https

如果你们公司是到正规机构申请的证书,那么恭喜你,你什么都不用做,AFNetworking 内部帮我们封装了HTTPS的请求方式,你只需要把URL改成https:// 就好了
如果你们是自建的证书,那么也很简单
生成.cer证书:

openssl x509 -in <你的服务器证书>.pem -outform der -out server.cer


向项目中倒入.cer证书,然后设置securityPolicy;

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.securityPolicy.SSLPinningMode = AFSSLPinningModeCertificate;
// 2.设置证书模式
NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"xxx" ofType:@"cer"];
NSData * cerData = [NSData dataWithContentsOfFile:cerPath];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[[NSSet alloc] initWithObjects:cerData, nil]];
// 客户端是否信任非法证书
mgr.securityPolicy.allowInvalidCertificates = YES;
// 是否在证书域字段中验证域名
[mgr.securityPolicy setValidatesDomainName:NO];


http://www.jianshu.com/p/75d96b72bfb1
http://m.blog.csdn.net/article/details?id=53991422

1.8: http及https区别

1. 安全协议配置费用,https协议需要到ca申请证书,一般免费的很少,需要交费(当然,自建也可以)
2. http是超文本传输协议,信息是明文传输,链接是无状态的,https则是具有安全性的ssl加密传输协议,更安全;
3. http和https使用的是完全不同的连接方式,用的端口不一样,前者是80,后者是443;

二:TCP、UDP、IP、Socket

网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
IP 协议对应于网络层;
TCP、UDP协议对应于传输层;
HTTP协议对应于应用层;
socket则是对TCP/IP协议族的封装和应用;
可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据

2.1: socket

socket是对TCP/IP协议族的封装,Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。从而形成了我们知道的一些最基本的函数接口,比如create、 listen、connect、accept、send、read和write等等
传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,

ios端关于socket的开发可以使用CocoaAsyncSocket来实现,因为本人项目中没实际应用过,所以就不多说了;
git:https://github.com/robbiehanson/CocoaAsyncSocket
网上的简例:
http://www.jianshu.com/p/3e4f3de18e3b
https://my.oschina.net/joanfen/blog/287238

2.1: TCP、UDP
2.21: TCP(Transmission Control Protocol 传输控制协议)

TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;

TCP连接的三次握手:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。   
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据
断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”


http连接与TCP连接的区别:
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

2.22: UDP(User Datagram Protocol 用户数据报协议)

而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议
也正由于上面的特点,使得UDP的开销更小数据传输速率更高,因为不需进行三次握手和对收发数据的确认,所以UDP的实时性更好;

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

推荐阅读更多精彩内容