最近面试上市大公司遇到的问题,网络安全底层与fiddler证书,我只想吐槽果然不缺人,上篇劫持的第二篇研究总结。如果通常网络我们使用常用的开源框架,然后设置通用的异步同步通信等格式,但是底层呢?这个我们常说只有面试的时候会用到,那如果想要黑客一下,拦截一下网络反向开发如果不知道原理,怎么突破?
1
网络分层模型:
osi:开放式系统互联。国际标准化组织(iso)指定的理论模型;
Tcp/IP 五层模型: osi和tcp/ip的综合,业界为了方便可以把下两层称为网络接口层,产生出来的非官方协议模型,实际应用还是tcp/ip的四层 结构。
Tcp/Ip四层模型:基于osi建立的实际实现的模型。
TCP三次握手与四次挥手
截取网络显示如下:一次http请求,三次tcp握手
四次挥手:
举个栗子:
http:建立在tcp协议之上的“超文本传输协议”
代码实栗(https请求连接--(可以互相切换)---socket请求):
第一步:从https://xxxx.xxxx.xxx中提取需要的东西工具类
第二部:StringBuffer拼接请求的键值对
总体结构图为:
专题 证书
百度普通访问:
个人搭建服务器,https证书有风险提示
这个就像身份证似的,这个证书由国家颁发,然后浏览器和手机都有一个证书信任管理,所有证书只要信任,网站就是正常访问,如果手机上手动不信任这个
手机---安全--信任的凭据
在socket代码中添加信任证书(格式为:X.509,后缀:cer),即可访问https连接;
响应行为:http/1.1 200 ok
上面讲的是通过底层socket来实现http请求,以及https的证书请求和返回,不过http/https的访问对于数据格式已经提供好代码格式,所以我们普通开发并不一定知道所有的请求数据和返回数据格式。而在okhttp中还封装好了固定的格式来进行ssl协议
中间人攻击:
mitm攻击,通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。
当数据离开一个端点时,传输的期间便是对数据失去控制的时候。当一个攻击者将自己置于两个端点并试图截获,阻碍数据传输时,便称为中间人攻击。(窃听)
抓包软件就是使用了中间人攻击机制。
框架总结:
我们常用的http网络访问请求框架,这些框架对网络请求数据进行了格式化,并且提供了接口让我们可以方便的调用,或者针对的去使用格式,但是它们所做的处理都是基于底层的联网数据进行的封装。
okhttp更是利用的线程池对于多线程的大量访问进行了优化,所以在大量访问的网络请求异常高效,而Retrofit的框架使用往往需要okhttp,实质上Retrofit是基于okhttp的封装,而其核心是动态代理,更是以注解的方式来实现url的编写,这个也是原本忘了现在顺便写了。