网络分层模型
OSI:Open System Interconnection,开放式系统互联。国际标准化组织(ISO)指定的理论模型。
TCP/IP四层模型:基于OSI建立的实际实现的模型。
应用层协议:http
网络互联层:ip,寻址,跟服务器建立连接(了解服务器的地址),每个电脑都有一个ip(标记主机地址)
TCP三次握手与四次挥手
C -> B
S:客户端的发送能力没问题
C:服务端的接收能力没问题,以及发送能力没问题
S:客户端的接收能力没问题
第一行:客户端向服务端发送:SYN同步||Seq=0序列号=0
第二行:将ACK置为1–就是将接收到的序列号+1–同时发一个自己的序列号Seq=0
第三行:第三次握手,客户端向服务端发送,之前的序列号Seq=0已经用了,此时,Seq=1,Ack=1
.
建立连接需要三次握手,断开连接需要四次挥手
.
Q:为什么握手三次,挥手要四次???
A:客户端—>服务端 发送finish信号
…服务端—>客户端 把没有发完的数据发完
…服务端—>客户端 发送finish信号
…客户端—>服务端 返回ACK
#################################################
http:超文本传输协议
HTTP在传输数据时,所有传输的内容都是明文,无法保证数据的安全性(账号,密码,个人信息等隐私)
HTTPS即:HTTP Over TLS,运行在TLS协议上的安全的HTTP协议
保证信息安全的唯一途径:数据信息加密!!!
1994年,NetScape->SSL1.0
1995年,SSL2.0
1996年,SSL3.0
1999年,互联网标准化组织ISOC接替NetScape,–>TSL1.0
2006年,TLS1.1
2008年,TLS1.2
2018年,TLS1.3
百度:TLS1.2
SSL握手:
SSL握手的过程都是明文,因此SSL握手的重点就在于怎么在不安全的网络中安全的进行密钥交换!
RSA算法交换密钥步骤:
1、客户端给出协议版本号、一个随机数(Random1),以及客户端支持的加密方法
2、服务端确认使用的加密方法,并给出数字证书、以及随机数(Random2)
3、客户端确认数字证书有效,生成一个新的随机数(premaster secret),并使用数字证书中的公钥,利用RSA算法加密这个随机数,发给服务端
4、服务端使用自己的私钥,获取客户端发来的随机数(premaster secret)
5、客户端和服务端根据约定的加密方法,使用前面三个随机数,生成对话密钥(master secret),用来加密接下来的整个对话过程
整个通话的安全,只取决于第三个随机数(premaster secret)能不能被破解????????
更安全的方法:
DH算法:premaster secret不需要传递,双方只要交换各自的参数,就可以计算出这个随机数
百度ECDHE_RSA
数字证书:
证书就是身份证,由权威CA机构(‘国家’)颁发
·电脑系统信任证书
·Android系统信任证书
用代码信任服务端的证书
5使用自签署证书完成HTTPS交互
如何做到既信任自己的证书又信任权威机构的证书----将自己的证书和官方证书整合起来(自己写一个类)
传一个null进去,就会自动把所有的系统证书加载进来了
多线性!
非常耗时的异步任务,使用asynctask不合适
这是一个串行任务
######################
核心线程
最大线程
限制时间
等待队列
okhttp是如何实现高并发请求的?
每一个http请求都会交给一个Dispatcher分发器,由分发器再交给线程池去执行
SynchronousQueue:不保存数据
最大并发量!!!不需要等待
LinkedBlockingQueue要等待
##################################################################################################################################################################################################################################################################################################################################
###################################################################################################################################################
################################################
10道大厂面试必考计算机网络问题
1、请详细介绍一下TCP的三次握手机制,为什么要三次握手?
(1)为什么需要握手?
(2)为什么是3次?
TCP可靠性:发一个消息,对方回一个收到了,才叫发成功
对每一个消息进行编号,序列号
客服端-服务器 同时发消息(双工)
正常四次握手
2、能否简单介绍一下HTTP协议中缓存的处理流程?
缓存的应用流程是什么?
与缓存相关的HTTP头部是什么?
缓存:cache($)
User Agent:浏览器
Proxy:正向代理服务器
Gateway:反向代理服务器(负载均衡)
3、在地址栏键入URL后,网络世界发生了什么?
TCP层进程到进程
IP层主机到主机----路由
数据链路层:局域网内的通信和网络之间的通信
长连接和短连接的区别:
UDP协议只支持小数据
缺点:
TCP协议-字符流协议,从文件头传到文件尾
串行–有一个报文丢包,对方应用层也不能接收
5、介绍下CLOSE_WAIT状态产生的原因
谁先主动关?主动关和被动关
6、能介绍一下多播是怎样实现的么?
7、服务器的最大并发连接数是多少?
高并发
并发连接是由TCP四元组决定的
端口和进程关联
怎样实现高并发?
事件驱动,无阻赛
Linux下的高并发优化?
8、TCP和UDP协议该如何选择?
TCP handle长于UDP handle
UDP容忍丢包(车联网+视频直播)
9、TLS/SSL协议是怎样保障信息安全的?
PKI证书体系
秘钥交换协议
对称加密算法
面试-计算机网络1
最新推荐文章于 2023-01-03 03:59:28 发布