网络分层构造
计算机网络体系大抵分为三种,OSI七层模型、TCP/IP四层模型和五层模型。
OSI七层模型
OSI七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
TCP/IP五层模型
TCP/IP五层模型:应用层、传输层、网络层、数据链路层、物理层。
- 应用层:为应用程序提供交互服务。在互联网中的应用层协定很多,如域名零碎DNS、HTTP协定、SMTP协定等。
- 传输层:负责向两台主机过程之间的通信提供数据传输服务。传输层的协定次要有传输控制协议TCP和用户数据协定UDP。
- 网络层:抉择适合的路由和替换结点,确保数据及时传送。次要包含IP协定。
- 数据链路层:在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
- 物理层:实现相邻节点间比特流的通明传输,尽可能屏蔽传输介质和物理设施的差别。
TCP/IP四层模型
TCP/IP五层模型:应用层、传输层、网络层、数据链路层
- 应用层:为应用程序提供交互服务。在互联网中的应用层协定很多,如域名零碎DNS、HTTP协定、SMTP协定等。
- 传输层:负责向两台主机过程之间的通信提供数据传输服务。传输层的协定次要有传输控制协议TCP和用户数据协定UDP。
- 网络层:抉择适合的路由和替换结点,确保数据及时传送。次要包含IP协定。
- 数据链路层:在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
htttp连贯
三次握手
- 第一次握手:客户端向服务端发动建设连贯申请,客户端会随机生成一个起始序列号x,客户端向服务端发送的字段中蕴含标记位
SYN=1
,序列号seq=x
。第一次握手前客户端的状态为CLOSE
,第一次握手后客户端的状态为SYN-SENT
。此时服务端的状态为LISTEN
。 - 第二次握手:服务端在收到客户端发来的报文后,会随机生成一个服务端的起始序列号y,而后给客户端回复一段报文,其中包含标记位
SYN=1
,ACK=1
,序列号seq=y
,确认号ack=x+1
。第二次握手前服务端的状态为LISTEN
,第二次握手后服务端的状态为SYN-RCVD
,此时客户端的状态为SYN-SENT
。(其中SYN=1
示意要和客户端建设一个连贯,ACK=1
示意确认序号无效) - 第三次握手:客户端收到服务端发来的报文后,会再向服务端发送报文,其中蕴含标记位
ACK=1
,序列号seq=x+1
,确认号ack=y+1
。第三次握手前客户端的状态为SYN-SENT
,第三次握手后客户端和服务端的状态都为ESTABLISHED
。此时连贯建设实现。
两次握手能够吗?
第三次握手次要为了避免已生效的连贯申请报文段忽然又传输到了服务端,导致产生问题。
- 比方客户端A收回连贯申请,可能因为网络阻塞起因,A没有收到确认报文,于是A再重传一次连贯申请。
- 连贯胜利,期待数据传输结束后,就开释了连贯。
- 而后A收回的第一个连贯申请等到连贯开释当前的某个工夫才达到服务端B,此时B误认为A又收回一次新的连贯申请,于是就向A收回确认报文段。
- 如果不采纳三次握手,只有B收回确认,就建设新的连贯了,此时A不会响应B的确认且不发送数据,则B始终期待A发送数据,浪费资源。
四次挥手
- A的利用过程先向其TCP收回连贯开释报文段(
FIN=1,seq=u
),并进行再发送数据,被动敞开TCP连贯,进入FIN-WAIT-1
(终止期待1)状态,期待B的确认。 - B收到连贯开释报文段后即收回确认报文段(
ACK=1,ack=u+1,seq=v
),B进入CLOSE-WAIT
(敞开期待)状态,此时的TCP处于半敞开状态,A到B的连贯开释。 - A收到B的确认后,进入
FIN-WAIT-2
(终止期待2)状态,期待B收回的连贯开释报文段。 - B发送完数据,就会收回连贯开释报文段(
FIN=1,ACK=1,seq=w,ack=u+1
),B进入LAST-ACK
(最初确认)状态,期待A的确认。 - A收到B的连贯开释报文段后,对此收回确认报文段(
ACK=1,seq=u+1,ack=w+1
),A进入TIME-WAIT
(工夫期待)状态。此时TCP未开释掉,须要通过工夫期待计时器设置的工夫2MSL
(最大报文段生存工夫)后,A才进入CLOSED
状态。B收到A收回的确认报文段后敞开连贯,若没收到A收回的确认报文段,B就会重传连贯开释报文段。
第四次挥手为什么要期待2MSL?
- 保障A发送的最初一个ACK报文段可能达到B。这个
ACK
报文段有可能失落,B收不到这个确认报文,就会超时重传连贯开释报文段,而后A能够在2MSL
工夫内收到这个重传的连贯开释报文段,接着A重传一次确认,重新启动2MSL计时器,最初A和B都进入到CLOSED
状态,若A在TIME-WAIT
状态不期待一段时间,而是发送完ACK报文段后立刻开释连贯,则无奈收到B重传的连贯开释报文段,所以不会再发送一次确认报文段,B就无奈失常进入到CLOSED
状态。 - 避免已生效的连贯申请报文段呈现在本连贯中。A在发送完最初一个
ACK
报文段后,再通过2MSL(2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活工夫,2MSL就是一个发送和一个回复所需的最大工夫。),就能够使这个连贯所产生的所有报文段都从网络中隐没,使下一个新的连贯中不会呈现旧的连贯申请报文段。
为什么是四次挥手?
因为当服务器端收到客户端的SYN
连贯申请报文后,能够间接发送SYN+ACK
报文。然而在敞开连贯时,当服务器端收到客户端收回的连贯开释报文时,很可能并不会立刻敞开SOCKET,所以服务器端先回复一个ACK
报文,通知客户端我收到你的连贯开释报文了。只有等到服务器端所有的报文都发送完了,这时服务器端能力发送连贯开释报文,之后两边才会真正的断开连接。故须要四次挥手。
https
- https 协定之所以是平安的是因为 https 协定会对传输的数据进行加密,而加密过程是应用了非对称加密实现。但其实,https 在内容传输的加密上应用的是对称加密,非对称加密只作用在证书验证阶段。
- https = https+加密+身份认证+完整性爱护
-
https的整体过程分为证书验证和数据传输阶段,具体的交互过程如下:
证书验证阶段
- 浏览器发动 HTTPS 申请
- 服务端返回 HTTPS 证书
- 客户端验证证书是否非法,如果不非法则提醒告警
数据传输阶段
- 当证书验证非法后,在本地生成随机数
- 通过公钥加密随机数,并把加密后的随机数传输到服务端
- 服务端通过私钥对随机数进行解密
- 服务端通过客户端传入的随机数结构对称加密算法,对返回后果内容进行加密后传输
非对称加密与对称加密
对称加密
- 对称加密:对称加密又叫做私钥加密,即信息的发送方和接管方应用
同一个密钥
去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适宜于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。
其加密过程如下:明文 + 加密算法 + 私钥 => 密文
解密过程如下:密文 + 解密算法 + 私钥 => 明文 - 对称加密的毛病是密钥平安治理艰难:因为对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解
非对称加密
- 非对称加密:非对称加密也叫做公钥加密。非对称加密与对称加密相比,其安全性更好。对称加密的通信单方应用雷同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解。而非对称加密应用一对密钥,即公钥和私钥,且二者成对呈现。私钥被本人保留,不能对外泄露。公钥指的是公共的密钥,任何人都能够取得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。
-
被公钥加密过的密文只能被私钥解密,过程如下:
明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文
被私钥加密过的密文只能被公钥解密,过程如下:
明文 + 加密算法 + 私钥 => 密文, 密文 + 解密算法 + 公钥 => 明文 - 非对称加密的毛病是加密和解密破费工夫长、速度慢,只适宜对大量数据进行加密。
- 在非对称加密中应用的次要算法有:RSA
中间人攻打
- http协定被认为不平安是因为传输过程容易被监听者勾线监听、伪造服务器,而https协定次要解决的便是网络传输的安全性问题。
-
首先咱们假如不存在认证机构,任何人都能够制作证书,这带来的平安危险便是经典的“中间人攻打”问题。“中间人攻打”的具体过程如下:
- 本地申请被劫持(如DNS劫持等),所有申请均发送到中间人的服务器
- 中间人服务器返回中间人本人的证书
- 客户端创立随机数,通过中间人证书的公钥对随机数加密后传送给中间人,而后凭随机数结构对称加密对传输内容进行加密传输
- 中间人因为领有客户端的随机数,能够通过对称加密算法进行内容解密
- 中间人以客户端的申请内容再向正规网站发动申请
- 因为中间人与服务器的通信过程是非法的,正规网站通过建设的平安通道返回加密后的数据
- 中间人凭借与正规网站建设的对称加密算法对内容进行解密
- 中间人通过与客户端建设的对称加密算法对正规内容返回的数据进行加密传输
- 客户端通过与中间人建设的对称加密算法对返回后果数据进行解密
因为短少对证书的验证,所以客户端尽管发动的是 HTTPS 申请,但客户端齐全不晓得本人的网络已被拦挡,传输内容被中间人全副窃取
https协定变更
http1.0和http1.1的区别?
- 长连贯:http1.0默认应用短连贯,每次申请都须要建设新的TCP连贯,连贯不能复用。http1.1反对长连贯,复用TCP连贯,容许客户端通过同一连贯发送多个申请。不过,这个优化策略也存在问题,当一个队头的申请不能收到响应的资源时,它将会阻塞前面的申请。这就是“队头阻塞”问题。
- 断点续传:http1.0 不反对断点续传。http1.1 新增了 range 字段,用来指定数据字节地位,反对断点续传。
- 谬误状态响应码:在http1.1中新增了24个谬误状态响应码,如
409(Conflict)
示意申请的资源与资源的以后状态发生冲突、410(Gone)
示意服务器上的某个资源被永久性的删除。 - Host头解决:在http1.0中认为每台服务器都绑定一个惟一的IP地址,因而,申请音讯中的URL并没有传递主机名。到了http1.1时代,虚拟主机技术倒退迅速,在一台物理服务器上能够存在多个虚拟主机,并且它们共享一个IP地址,故http1.1减少了HOST信息。
http1.1和http2.0的区别?
- 新的二进制格局: http1.1 基于文本格式传输数据;http2.0采纳二进制格局传输数据,解析更高效。
- 多路复用:在一个连贯里,容许同时发送多个申请或响应,并且这些申请或响应可能并行的传输而不被阻塞,防止 http1.1 呈现的”队头梗塞”问题。
- 头部压缩,http1.1的header带有大量信息,而且每次都要反复发送;http2.0 把header从数据中拆散,并封装成头帧和数据帧,应用特定算法压缩头帧,无效缩小头信息大小。并且http2.0在客户端和服务器端记录了之前发送的键值对,对于雷同的数据,不会反复发送。比方申请a发送了所有的头信息字段,申请b则只须要发送差别数据,这样能够缩小冗余数据,升高开销。
- 服务端推送:http2.0容许服务器向客户端推送资源,无需客户端发送申请到服务器获取。
https与http的区别?
- http是超文本传输协定,信息是明文传输;https则是具备安全性的ssl加密传输协定。
- http和https用的端口不一样,http端口是80,https是443。
- https协定须要到CA机构申请证书,个别须要肯定的费用。
- http运行在TCP协定之上;https运行在SSL协定之上,SSL运行在TCP协定之上。
发表回复